packages feed

haskell-src-exts 1.9.0 → 1.24.0

raw patch · 1167 files changed

Files

+ CHANGELOG view
@@ -0,0 +1,736 @@+1.23.1 --> 1.24.0+=================+* Support ImportQualifiedPost (#477)+  - Technically breaking change: KnownExtension gained a new constructor ImportQualifiedPost+* Fix pretty printing of promoted list/tuple with space padding (#423)+* Fix lexing of operator symbols like @: when TypeApplications is enabled (#430)+* Read files strictly before closing to prevent resource leaks (#460)+* Add Safe Haskell annotations to many modules (#465)+* Remove noncanonical return and mappend definitions (#481)+* Solve some compiler warnings (#464)+* Performance optimization: use strict accumulators in lexString and parseInteger (#479)+++1.23.0 --> 1.23.1+=================+* show instance for SrcLoc and SrcSpan renders "(-1)" instead of "-1"+* Allow empty closed type families (#452)+++1.22.0 --> 1.23.0+=================+* Add support for BlockArguments (#444)+  - Technically breaking change: KnownExtension gained a new constructor BlockArguments+* Add support for Arrow Brackets (#445)+  - Tecnically breaking change: Exp gained new constructor ArrOp++1.21.1 --> 1.22.0+=================+* Support QuantifiedConstraints (#427)+  - Breaking change: constructors for PAsst changed+  - Technically breaking change: KnownExtention gained a new constructor QuantifiedConstraints+* Support Template Haskell typed splices and quotations (#432)+  - Breaking change: new constructors on Token data type+* Fix unicode identifier parsing (#442)++1.21.0 --> 1.21.1+=================+* GHC 8.8.1 compatibility (MonadFail)++1.20.3 --> 1.21.0+=================+* DerivingVia (#420)+* TypeInType  (#414)+* Parse TH-quoted list constructor (#415)++1.20.2 --> 1.20.3+=================+* GHC 8.6.1 compatability (MonadFail)+* Remove cpphs dependency++1.20.1 --> 1.20.2+=================+* Add fixity of (&)+* GHC 8.4.1 compatability++1.20.0 --> 1.20.1+===================+* Fix two test failures++1.19.1 --> 1.20.0+===================++* GHC 8.2 updates+* Add some missing Generics instances (#380)+* Support Template Haskell pattern splices (#352)+* Fix overloaded labels starting with _ (#362)+* Relax MultiParamTypeClass check (#333)+* DeriveAnyClass (#337)+* Deriving Strategies (#387)+* OVERLAPS/OVERLAPPING/OVERLAPPABLE pragmas+* Unboxed Sums+* Expression holes in infix expressions+* Support multiple pattern synonyms per pattern synonym signature+* COMPLETE pragmas+* Fix #309, remove unnecessary semi-colon from pretty printer+* Refine ExplicitNamespaces to properly export type operators++1.19.0 --> 1.19.1+===================++* Revert making fields of `SrcLoc` strict. (#340)+++1.18.2 --> 1.19.0+===================++* Add JavaScriptFFI to known extensions (#335)+* Remove space when pretty printing `SrcLoc`. (#307)+* Don't reverse arguments in a context. (#328)+* Add support for EmptyCase extension (#255)+++1.18.1 --> 1.18.2+===================++* Fix overzealous lexing of type applications++1.18.0 --> 1.18.1+===================++* Fix overzealous lexing of overloaded labels.+++1.17.1 --> 1.18.0+===================++* Remove simplified AST+* GHC 8.0 update: Overloaded labels, type applications, pattern synonym+extensions, StrictData, injective type families++AST changes:++* Add TyQuasiQuote (#279).++Other changes:++* Only treat 'role' as a keyword in certain contexts (#286).+* Prettyprint '!' in patterns correctly when BangPatterns are enabled (#287).+* Parse magic hash with multiple trailing hashes (#300).+* Apply fixities inside pattern synonym builders+* Fix lexing of idents with multiple trailing #++** 1.17.x++1.17.0 --> 1.17.1+=================++Bug Fix:++* Fix bug in parsing view patterns (#284)++1.16.0.1 --> 1.17.0+===================++AST changes:++* Replaced VarA with AppA in Asst (#168).+* Promoted list/tuple members changed from Promoted to Type (#162).+* Update PatBind, Match, and Alt from containing Binds to Maybe Binds to+  distinguish between empty where clauses and where clauses with no+  binds (#244).+* Add RoleAnnotDecl and Role to support Role annotations (#215).+* Move NameSpace field from EVar/IVar to EAbs/IAbs.++Other changes:++* Add standalone parsers for ImportDecl.+* Fix pretty-printer bugs for HaRP (#160).+* Insert parentheses when pretty-printing non-atomic bang types (#169).+* Un-reverse confusion of left and right arrow (#175).+* Prettyprint option pragmas like 1.15 (#172).+* Conditionally insert lines when pretty-printing declarations (#171).+* Distinguish deriving (Show) from deriving Show (#189).+* Allow parsing of unicode subscript and superscript functions (#173).+* Pretty print unboxed tuples with spaces (#193).+* Improve performance when parsing long extension lists (#200).+* Properly pretty print constructor and class operators (#204).+* Read Haskell source files as UTF-8 (#223).+* Fix ExplicitNamespaces parsing (#216).+* PolyKinds implies KindSignatures (#220).+* Preserve location information for infix binds (#205).+* Preserve positional information in checkPattern (#231).+* Maintain correct line numbers when parsing multiline GHC_OPTIONS (#218).+* Correctly parse "*" with TypeOperators (#81).+* Export the "pretty" method (#222).+* Add javascript calling convention for foreign imports (#236).+* Add non-greedy parsers for module heads (#191).+* Add a flag to disable arity checking when parsing (#260).+* Parse "-" in type signatures (#206).+* Add support for type wildcards and expression holes (#252).+* Add support for Pattern Synonyms (#197).+* Bump the happy lower bound (#250).+* Make test suite pass on GHC 7.12 (#224).+* Support linking Haddock comments to AST nodes (#213).+* Parse multiline LANGUAGE pragmas (#217).+* Parse trailing where (#25).+* Parse modules starting with pragmas and indented+  "module" keyword (#122).+* Use pretty-show to get human readable test outputs.+* Respect fixity declarations inside where/let/class in+  `applyFixities` (#212).+* Correctly parse the combination of view patterns and bang patterns. (#276)++** 1.16.x++1.16.0 --> 1.16.0.1+===================++Include generated InternalParser.hs in the release tarball+(See http://ro-che.info/articles/2014-03-08-happy-alex-ghc-7.8 for details)++1.15.0.1 --> 1.16.0+===================++New language features:++* DoRec+* Closed type families+* GADT records+* ExplicitNamespaces+* Type equality constraints+* PolyKinds+* DataKinds+* Default associated types+* Instance signatures+* OVERLAP pragma+* Parallel arrays+* MINIMAL pragma+* Default signatures+* Safe Haskell+* Binary literals+* Qualified record puns+* Type splices++AST changes:++* PatBind no longer contains the optional Maybe Type field. The type+  signature is now represented as part of the pattern (PatTypeSig)+* GuardedAlt and GuardedAlts types are replaced with the isomorphic+  GuardedRhs and Rhs types+* Move parentheses from the Context to Asst type+* Change DeclHead and InstHead to make it possible to represent+  various ways to put parentheses around parts of declarations. Introduce a new+  type InstRule for the same purpose.+* Change representation of negated patterns+* Make strictness annotations on data type fields part of those fields' Type++Notable bug fixes:++* Allow statements, and not just expression, in MultiWayIf conditions+* Allow equality constraints when GADTs are enabled+* Fix parsing and printing of pragma modifiers, such as CONLIKE+* Don't treat 'capi' or 'interruptible' as a keyword except after 'foreign'+* Let ImpredicativeTypes imply ExplicitForAll+* Let RecursiveDo enable 'rec' keyword+* Fix pretty-printing of the unary minus sign+* Do not require FlexibleContexts for things like Ord (i Int) => ...+* Fix pretty-printing of deriving clauses+* Parse "Constraint" as a kind with ConstraintKinds enabled+* Support qualified quasi-quoters+* Enable ScopedTypeVariables when parsing rules+* Only permit record wildcards in last position+* Allow n-parameter infix data declaration heads++Other changes:++* Expose showToken from Language.Haskell.Exts.Lexer+* Show instance for SrcLoc and SrcSpan are changed (now they do not contain+* field names)+* Add DeriveGeneric to known extensions++** 1.15.x++1.15.0 --> 1.15.0.1+===============++* Eliminate inexhaustive patterns (and consequent bugs)+* The test suite for 1.15.0 wouldn't build due to a missing file in the source+  distribution. Fixed.++1.14.0.1 --> 1.15.0+===============++* Add support for extensions:+  - MultiWayIf+  - LambdaCase+  - DataKinds+* Remove support for old (deprecated) Generics+* Derive GHC's Generic instances for datatypes+* Derive some missing Data and Typeable instances+* Multiple bug fixes+* Add missing Functor and Applicative instances for monads+* Remove support for GHCs older than 7.4++** 1.14.x++1.14.0 --> 1.14.0.1+===============++Nothing has actually changed here (apart from the CHANGELOG). This release is+done to include InternalParser.hs generated with happy 1.19 so that it compiles+with GHC 7.8.++1.13.6 --> 1.14.0+===============++* Modernize the Extension datatype in L.H.E.Extension, following the lead+  of Cabal, to allow negative and positive extension modifiers (turning+  features on and off). You need to worry about backwards-incompatible+  changes if any of the following pertains to you:+  1) If you use the Extension datatype programmatically - it has changed+     significantly (see documentation).+  2) The ParseMode record now has one more field+     (baseLanguage :: Language), which might give you a type error.+  3) The behavior of the (extensions :: [Extension]) field has changed,+     which could bite you if you pass custom extensions in the ParseMode.+     Previously, the ParseMode defaulted to the list of extensions accepted+     by Haskell2010, and if you set the list explicitly you would override+     this. Now, the defaults are { baseLanguage = Haskell2010, extensions = [] },+     and explicitly setting a list of extensions will be interpreted on top of+     Haskell2010. See further the documentation for L.H.E.Extension.++* Add support for the 'capi' calling convention. It is enabled with the CApiFFI+  extension. It's been included since GHC 7.4, and advertised since 7.6.++* Add support for the 'interruptible' FFI safety annotation, enabled with+  the InterruptibleFFI extension.++* Give better error message when lexing newline fails. In particular, fix the bug+  when the parser would crash if the file didn't end with a newline.++* Support unboxed tuple expressions and patterns.++* Fix bug in lexing of primitive integer literals in hex or octal notation.++* Disallow negative primitive word literals+  (such as W# (-0x8000000000000000##)).++* Allow phase control for SPECIALIZE pragma.++* Derive Foldable and Traversable instances for all annotated AST types.++* Fix bug with pretty-printing WARNING and DEPRECATED pragmas.+++** 1.13.x++1.13.5 --> 1.13.6+===============++* Allow 0-parameter type classes when MultiParamTypeClasses is on.++* Add support for NondecreasingIndentation. Previously it was always on,+  which is the default behavior in GHC. Now it is on only if enabled, or+  when using the newly added ghcDefaults extension set (instead of haskell2010).+++1.13.4 --> 1.13.5+===============++* Expose Language.Haskell.Exts.Lexer, which implements+  a standalone token stream lexer. The module is+  re-exported both by Language.Haskell.Exts and by+  Language.Haskell.Exts.Annotated.+++1.13.3 --> 1.13.4+===============++* Fix bug where operators starting with # written in+  parentheses would not be parsed when UnboxedTuples is+  turned on. Now works.++* Allow 'family' and 'forall' as (non-type) varid's. This+  adds one more shift/reduce conflict to the parser, and+  its resolution means that '{-# RULES "name" forall = ... #-}'+  is not allowed.++* Complete the set of FFI calling conventions from the Haskell+  2010 report (even if no compiler implements them). Also+  include the 'js' calling convention, supported by UHC.+++1.13.2 --> 1.13.3+===============++* Fundep premises are now allowed to be empty.++* Fix the bug where the lexer would crash on a LINE pragma+  that did not include a line number.++* Fix the bug where the lexer would require the # of a+  MagicHash-style type constructor to be succeeded by at+  least one character in the file.++* Fix long-standing bug where the parser would crash with+  an ugly "Internal error" error message if encountering+  an extra }.++* Report errors at the right place for function arity+  mismatches. Earlier they were reported at end of file,+  now they are reported where the function is declared.++* Lexer now properly fails on line-breaks in string literals.++* Lexer now handles character escapes up to 0x10FFFF (unicode).+++1.13.1 --> 1.13.2+===============++* Fix the bug with the precedence of unary prefix minus.+  Previously it was resolved as binding more tightly+  than any infix operator, now it is correctly treated+  as having the same fixity as binary infix minus.+++1.13.0 --> 1.13.1+===============++* Allow an optional semi before the closing tag of+  an element. This achieves a similar effect for+  XmlSyntax in do blocks as DoAndIfThenElse does for+  the if construct. No more need to indent the closing+  tag one step further than the opening tag.++* Add a dummy 'noLoc :: SrcLoc' to L.H.E.SrcLoc, to+  use when generating code. It could definitely be+  done more elegantly, but not without inducing another+  major version bump, so later.++* Fix a regression from 1.11.x where the parser would crash+  upon encountering non-simple class/data declaration+  heads, e.g. 'data A [a]'. Now fails with a parse error+  as intended.+++1.12.0 --> 1.13.0+===============++* Add extensions DoAndIfThenElse and NPlusKPatterns to+  Language.Haskell.Exts.Extensions.++* DoAndIfThenElse is now supported, at long last,+  making HSE compatible with Haskell2010++* Introduce haskell98 and haskell2010 extension groups,+  exported from Language.Haskell.Exts.Extensions.++* Backwards-incompatible change: default parse mode+  is now to use haskell2010, which means the following+  features are recognized by default: DoAndIfThenElse,+  PatternGuards, ForeignFunctionInterface, EmptyDataDecls.+  NPlusKPatterns is no longer recognized by default.+++** 1.12.x++1.11.1 --> 1.12.0+===============++* Move from old [$...| quasi-quote syntax to the new [...| one.+  The old syntax is still recognized while parsing.++* Allow symbols as variables when TypeOperators is enabled.++* Rename ExplicitForall in ExplicitForAll, to be consistent+  with GHC and the Haskell' process.+++** 1.11.x++1.10.2 --> 1.11.1+===============++* API change: the fixities field in ParseMode is now of type+  Maybe [Fixity].  If the field is Nothing the parsing will+  not try to do any fixity resolution whatsoever, otherwise+  it behaves as before.++* API change, bug fix: The Fixity type contains a QName rather+  than an Op to name the operator.  The operator must match+  the given QName exactly (i.e., unqualified names only match+  unqualified names, and qualified names only match qualified+  names) for applyFixities to perform fixups.++* Bug fix: End-of-file inside an OPTIONS pragma no longer loops.++++** 1.10.x++1.10.1 --> 1.10.2+===============++* Fix a missing case in the Functor declaration for Decl. Thanks+  to Malcolm Wallace for the patch!++1.10.0 --> 1.10.1+===============++* Enable the unicode version of DoubleColon (x2237). Thanks+  to Andr�s Sicard-Ram�rez for the patch!++1.9.6 --> 1.10.0+===============++* Ensure that implied extensions are always picked up, not only+  when using the parseFile* family of functions as previously.++* Add the newly devised <%>...</%> syntax to the XmlSyntax support.+  This causes changes to pretty much everything, including adding+  a case to the AST which prompts the major version bump.+++** 1.9.x++1.9.5 --> 1.9.6+===============++* Fix a bug (#203) where the lexer loops on malformed quasi-quoters.++* Fix a bug with pretty-printing RULES pragmas.++1.9.4 --> 1.9.5+===============++* Fix a bug where deriving clauses for GADT-style data declarations+  were not properly indented.++* Pretty-printing patterns is now more accurate in inserting (and not+  inserting) parentheses when needed.++1.9.3 --> 1.9.4+===============++* Pretty-printer now inserts parentheses in clever places when+  printing kinds.++* Pretty-printing expressions is now far more accurate in inserting+  (and not inserting) parentheses when needed.++* Pretty-printing negative expressions no longer inserts a superfluous+  space between the - and the expression.++1.9.2 --> 1.9.3+===============++* Constructors for newtype declarations must now have exactly one+  argument. This is only when using the classic syntax, not with+  GADT-style syntax.++* Fix a bug where preceding commas in tuple sections were counted+  one too few.++1.9.1 --> 1.9.2+===============++* Fix a bug with pretty-printing lexer tokens.++* Fix a bug where non-colon TypeOperators could not be used in+  prefix mode.++1.9.0 --> 1.9.1+===============++* Export parseFileContentsWithExts from .Exts.++1.8.2 --> 1.9.0+===============++* OptionPragma is renamed to the more descriptive ModulePragma,+  and adds a constructor AnnModulePragma for handling ANN pragmas+  preceding module header.++* Add instances for Eq/Ord/Data/Typeable for Fixity.++* Add 'parseFileWithComments' and 'parseFileContentsWithComments'+  to L.H.Exts .++* More informative error messages when HSX tags are mismatched.++++** 1.8.x++1.8.1 --> 1.8.2+===============++* Don't insert redundant parentheses around record constructions+  and updates.++1.8.0 --> 1.8.1+===============++* Fix three bugs with the handling of ANN. I must have been really+  tired when implementing that support.++1.7.2 --> 1.8.0+===============++* Add an instance Show Fixity (derived).++* Support for the new ANN and INLINE_CONLIKE pragmas.++* Export knownExtensions from .Extension.++* Remove support for CFILES and INCLUDE pragmas. The support wasn't+  correct anyway, as it assumed the pragmas appeared at the top of+  files. As CFILES/INCLUDE pragmas can (and do) appear anywhere,+  there's no hope to support them in the AST. Better to remove the+  support altogether. Files with CFILES/INCLUDE pragmas can still+  be parsed of course, but those pragmas will be handled as comments.++* Parsing with ignoreLinePragmas = False now correctly updates the+  file name.++* Allow the whole SPECIALISE/INLINE family of pragmas in instance+  declarations. The InsInline constructor is removed, and is now+  represented by InsDecl (InlineSig ...).++* Fix a bug with line numbering and quasi quotes, and a similar one+  with line numbering and CDATA.++* Fix a few minor bugs in the exactPrinter.++* Fix the strange handling of so called strings in LINE pragmas.++** 1.7.x++1.7.1 --> 1.7.2+===============++* Fixes a bug in lexing LINE pragmas (used when ignoreLinePragmas+  is set to False).++1.7.0 --> 1.7.1+===============++* UnicodeSyntax now also enables the forall symbol (U+2200).++1.6.1 --> 1.7.0+===============++* Operators defined on the form++     (a `op` b) c = ...++  could not be handled by the (annotated) AST, nor the parser. I had to+  change the definition of the AST node for InfixMatch to allow a list+  of right-hand subpatterns, i.e.++     InfixMatch l (Pat l) (Name l) (Pat l) ...++  has become++     InfixMatch l (Pat l) (Name l) [Pat l] ...++  I also had an epiphany and fixed the issue that would arise with+  exact printing of prefix definitions including parentheses, so+  that now works too!++** 1.6.x++1.6.0 --> 1.6.1+===============++* UnicodeSyntax now works not only for identifiers, but also for+  ->, <- and =>, as well as Arrows arrows and kind stars.++1.5.3 --> 1.6.0+===============++* (=~=) turns out to be too general at Functor (for intuitive and not+  technical reasons), so is specialised to Annotated to closer mirror+  the original intention.++* applyFixities is hoisted to a monad, and now fails on ambiguous infix+  expressions.++** 1.5.x++1.5.2 --> 1.5.3+===============++* Several small bug fixes in the exact printer, and fail more gracefully+  if the number of srcInfoPoints doesn't match the needs of the node.++1.5.1 --> 1.5.2+===============++* Fix a bug in the exact printer that made it always print the first token+  at position (0,0).++* In fixing the above, Annotated is now a superclass of ExactP. It was already+  a superclass in spirit, and nothing can break from this since ExactP is only+  exported abstractly.++1.5.0 --> 1.5.1+===============++* The pretty printer now introduces parentheses for non-atomic arguments to+  function application. Note that infix applications are left untouched, no+  parentheses will be inserted there, as it is assumed that fixities are+  already properly resolved.++* Fix a bug in the pretty printer where view patterns and n+k patterns were+  not properly parenthesised.++1.4.0 --> 1.5.0+===============++* Add support for acting on LINE pragmas while parsing, i.e. updating the source+  position according to info given in LINE pragmas. This is done conditionally+  based on a new flag ignoreLinePragmas in the ParseMode, hence the need to+  increase the major version.++** 1.4.x++1.3.5 --> 1.4.0+===============++* The AST node for Proc in the simple AST is changed to include a SrcLoc argument,+  to make it consistent with similar nodes e.g. Lambda. This is specifically needed+  for transformation of patterns in HSX.+++** 1.3.x++1.3.4 --> 1.3.5+===============++* Added an entry point in the parser for statements, and an instance Parseable Stmt+  to go with it.++* Ensured that .Annotated exports all relevant parseXXX(WithYYY) functions.++1.3.3 --> 1.3.4+===============++* Operator fixities are now resolved in patterns.++1.3.2 --> 1.3.3+===============++* Fixes a bug where qualified keywords are rejected even if the extension that+  enables the keyword in question is not turned on.+++1.3.0 --> 1.3.2+===============++(Let's forget 1.3.1 ever existed.)++* Fix a bug where declarations of infix operators were not properly merged as FunBinds.+
+ README.md view
@@ -0,0 +1,48 @@+Haskell Source Extensions+=========================++haskell-src-exts is a package for handling and manipulating Haskell source+code. It is a descendant of the haskell-src package that is part of the standard+libraries, but extends this to support a number of syntactic+extensions, e.g. MPTCs, fundeps, GADTs, TH etc. The aim is to support all+extensions recognized by the community, as determined by what is implemented+in compilers and tools.++Apart from the more standard extensions supported by e.g. GHC,+haskell-src-exts provides support for HaRP (Haskell Regular Patterns)+and HSX (Haskell Source with XML) syntax.++Package structure+-----------------++The modules that comprise haskell-src-exts all reside in the hierarchic+namespace Language.Haskell.Exts. Notable exposed modules include:++* `Language.Haskell.Exts` - Imports and re-exports all the below,+  and also defines some functions that combine functionality from several+  modules.+* `Language.Haskell.Exts.Syntax` - The abstract syntax tree+  that the other modules work on.+* `Language.Haskell.Exts.Build` - Combinators for building+  abstract syntax.+* `Language.Haskell.Exts.Parser` - Functions for parsing Haskell+  source code into an abstract syntax representation.+++License+-------++The haskell-src-exts Package is distributed under a derived BSD-style license. It+derives from several sources, all of which are distributable under+BSD-style or compatible licenses. See the file LICENSE for the complete+license text.+++Maintenance+--------------++Dan Burton is currently keeping haskell-src-exts on life support.+If you are interested in more actively making improvements to this package,+please make your interests known.++You might want to try [ghc-lib-parser](http://hackage.haskell.org/package/ghc-lib-parser) instead.
+ RELEASENOTES-1.17.0 view
@@ -0,0 +1,35 @@+I am pleased to announce the release of haskell-src-exts-1.17.0! ++Hackage: https://hackage.haskell.org/package/haskell-src-exts-1.17.0 +GitHub:  https://github.com/haskell-suite/haskell-src-exts ++This release brings bugfixes, as well as the following language +features: ++* Type wildcards and expression holes (#252).+* Pattern Synonyms (#197).++The full changelog is available at ++https://github.com/haskell-suite/haskell-src-exts/blob/1.17.0/CHANGELOG++This release is brought to you by:++Matthew Pickering+Michael Walker+Simon Marlow+Neil Mitchell+JP Moresmau+Артур Файзрахманов+phischu+Michael Sloan+m00nlight+Niklas Broberg+Stijn van Drongelen+Jakub Kozlowski+Leonid Onokhov++Matthew Pickering is a force of nature who deserves a special mention+for all his contributions to this release.++Peter
Setup.hs view
@@ -1,8 +1,2 @@ import Distribution.Simple-import System.Process (rawSystem)-import System.Exit (ExitCode(..))-import System.FilePath ((</>))-main = defaultMainWithHooks $ simpleUserHooks { runTests = \args _ _ _ -> do-    ExitSuccess <- rawSystem "runhaskell" (("Test" </> "Runner.hs") : args)-    return ()-                                              }+main = defaultMain
− dist/build/Language/Haskell/Exts/InternalParser.hs
@@ -1,8065 +0,0 @@-{-# OPTIONS_GHC -fno-warn-overlapping-patterns #-}
-{-# OPTIONS -fglasgow-exts -cpp #-}
-{-# OPTIONS_HADDOCK hide #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Language.Haskell.Exts.Annotated.Parser
--- Copyright   :  (c) Niklas Broberg 2004-2009,
---                Original (c) Simon Marlow, Sven Panne 1997-2000
--- License     :  BSD-style (see the file LICENSE.txt)
---
--- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se
--- Stability   :  stable
--- Portability :  portable
---
---
------------------------------------------------------------------------------
-module Language.Haskell.Exts.InternalParser (
-              -- * General parsing
-              ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult,
-              -- * Parsing of specific AST elements
-              -- ** Modules
-              parseModule, parseModuleWithMode, parseModuleWithComments,
-              -- ** Expressions
-              parseExp, parseExpWithMode, parseExpWithComments,
-              -- ** Statements
-              parseStmt, parseStmtWithMode, parseStmtWithComments,
-              -- ** Patterns
-              parsePat, parsePatWithMode, parsePatWithComments,
-              -- ** Declarations
-              parseDecl, parseDeclWithMode, parseDeclWithComments,
-              -- ** Types
-              parseType, parseTypeWithMode, parseTypeWithComments,
-              -- ** Multiple modules in one file
-              parseModules, parseModulesWithMode, parseModulesWithComments,
-              -- ** Option pragmas
-              getTopPragmas
-              ) where
-import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )
-import Language.Haskell.Exts.Annotated.Syntax ( Type, Exp, Asst )
-import Language.Haskell.Exts.ParseMonad
-import Language.Haskell.Exts.Lexer
-import Language.Haskell.Exts.ParseUtils
-import Language.Haskell.Exts.Annotated.Fixity
-import Language.Haskell.Exts.SrcLoc
-import Language.Haskell.Exts.Comments ( Comment )
-import Language.Haskell.Exts.Extension
-
-import Control.Monad ( liftM, (<=<) )
-#if __GLASGOW_HASKELL__ >= 503
-import qualified Data.Array as Happy_Data_Array
-#else
-import qualified Array as Happy_Data_Array
-#endif
-#if __GLASGOW_HASKELL__ >= 503
-import qualified GHC.Exts as Happy_GHC_Exts
-#else
-import qualified GlaExts as Happy_GHC_Exts
-#endif
-
--- parser produced by Happy Version 1.18.4
-
-newtype HappyAbsSyn  = HappyAbsSyn HappyAny
-#if __GLASGOW_HASKELL__ >= 607
-type HappyAny = Happy_GHC_Exts.Any
-#else
-type HappyAny = forall a . a
-#endif
-happyIn11 :: ([Module L]) -> (HappyAbsSyn )
-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn11 #-}
-happyOut11 :: (HappyAbsSyn ) -> ([Module L])
-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut11 #-}
-happyIn12 :: ([[ModulePragma L] -> [S] -> L -> Module L]) -> (HappyAbsSyn )
-happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn12 #-}
-happyOut12 :: (HappyAbsSyn ) -> ([[ModulePragma L] -> [S] -> L -> Module L])
-happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut12 #-}
-happyIn13 :: (Module L) -> (HappyAbsSyn )
-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn13 #-}
-happyOut13 :: (HappyAbsSyn ) -> (Module L)
-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut13 #-}
-happyIn14 :: (PExp L) -> (HappyAbsSyn )
-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn14 #-}
-happyOut14 :: (HappyAbsSyn ) -> (PExp L)
-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut14 #-}
-happyIn15 :: (([ModulePragma L],[S],L)) -> (HappyAbsSyn )
-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn15 #-}
-happyOut15 :: (HappyAbsSyn ) -> (([ModulePragma L],[S],L))
-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut15 #-}
-happyIn16 :: (([ModulePragma L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn16 #-}
-happyOut16 :: (HappyAbsSyn ) -> (([ModulePragma L],[S],Maybe L))
-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut16 #-}
-happyIn17 :: (ModulePragma L) -> (HappyAbsSyn )
-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn17 #-}
-happyOut17 :: (HappyAbsSyn ) -> (ModulePragma L)
-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut17 #-}
-happyIn18 :: (([Name L],[S])) -> (HappyAbsSyn )
-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn18 #-}
-happyOut18 :: (HappyAbsSyn ) -> (([Name L],[S]))
-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut18 #-}
-happyIn19 :: ([ModulePragma L] -> [S] -> L -> Module L) -> (HappyAbsSyn )
-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn19 #-}
-happyOut19 :: (HappyAbsSyn ) -> ([ModulePragma L] -> [S] -> L -> Module L)
-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut19 #-}
-happyIn20 :: (Maybe (ModuleHead L)) -> (HappyAbsSyn )
-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn20 #-}
-happyOut20 :: (HappyAbsSyn ) -> (Maybe (ModuleHead L))
-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut20 #-}
-happyIn21 :: (Maybe (WarningText L)) -> (HappyAbsSyn )
-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn21 #-}
-happyOut21 :: (HappyAbsSyn ) -> (Maybe (WarningText L))
-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut21 #-}
-happyIn22 :: (([ImportDecl L],[Decl L],[S],L)) -> (HappyAbsSyn )
-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn22 #-}
-happyOut22 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S],L))
-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut22 #-}
-happyIn23 :: (([ImportDecl L],[Decl L],[S])) -> (HappyAbsSyn )
-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn23 #-}
-happyOut23 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S]))
-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut23 #-}
-happyIn24 :: ([S]) -> (HappyAbsSyn )
-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn24 #-}
-happyOut24 :: (HappyAbsSyn ) -> ([S])
-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut24 #-}
-happyIn25 :: ([S]) -> (HappyAbsSyn )
-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn25 #-}
-happyOut25 :: (HappyAbsSyn ) -> ([S])
-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut25 #-}
-happyIn26 :: (Maybe (ExportSpecList L)) -> (HappyAbsSyn )
-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn26 #-}
-happyOut26 :: (HappyAbsSyn ) -> (Maybe (ExportSpecList L))
-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut26 #-}
-happyIn27 :: (ExportSpecList L) -> (HappyAbsSyn )
-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn27 #-}
-happyOut27 :: (HappyAbsSyn ) -> (ExportSpecList L)
-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut27 #-}
-happyIn28 :: ([S]) -> (HappyAbsSyn )
-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn28 #-}
-happyOut28 :: (HappyAbsSyn ) -> ([S])
-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut28 #-}
-happyIn29 :: (([ExportSpec L],[S])) -> (HappyAbsSyn )
-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn29 #-}
-happyOut29 :: (HappyAbsSyn ) -> (([ExportSpec L],[S]))
-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut29 #-}
-happyIn30 :: (ExportSpec L) -> (HappyAbsSyn )
-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn30 #-}
-happyOut30 :: (HappyAbsSyn ) -> (ExportSpec L)
-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut30 #-}
-happyIn31 :: (([ImportDecl L],[S])) -> (HappyAbsSyn )
-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn31 #-}
-happyOut31 :: (HappyAbsSyn ) -> (([ImportDecl L],[S]))
-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut31 #-}
-happyIn32 :: (ImportDecl L) -> (HappyAbsSyn )
-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn32 #-}
-happyOut32 :: (HappyAbsSyn ) -> (ImportDecl L)
-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut32 #-}
-happyIn33 :: ((Bool,[S])) -> (HappyAbsSyn )
-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn33 #-}
-happyOut33 :: (HappyAbsSyn ) -> ((Bool,[S]))
-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut33 #-}
-happyIn34 :: ((Bool,[S])) -> (HappyAbsSyn )
-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn34 #-}
-happyOut34 :: (HappyAbsSyn ) -> ((Bool,[S]))
-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut34 #-}
-happyIn35 :: ((Maybe String,[S])) -> (HappyAbsSyn )
-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn35 #-}
-happyOut35 :: (HappyAbsSyn ) -> ((Maybe String,[S]))
-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut35 #-}
-happyIn36 :: ((Maybe (ModuleName L),[S],Maybe L)) -> (HappyAbsSyn )
-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn36 #-}
-happyOut36 :: (HappyAbsSyn ) -> ((Maybe (ModuleName L),[S],Maybe L))
-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut36 #-}
-happyIn37 :: (Maybe (ImportSpecList L)) -> (HappyAbsSyn )
-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn37 #-}
-happyOut37 :: (HappyAbsSyn ) -> (Maybe (ImportSpecList L))
-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut37 #-}
-happyIn38 :: (ImportSpecList L) -> (HappyAbsSyn )
-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn38 #-}
-happyOut38 :: (HappyAbsSyn ) -> (ImportSpecList L)
-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut38 #-}
-happyIn39 :: ((Bool, Maybe L,[S])) -> (HappyAbsSyn )
-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn39 #-}
-happyOut39 :: (HappyAbsSyn ) -> ((Bool, Maybe L,[S]))
-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut39 #-}
-happyIn40 :: (([ImportSpec L],[S])) -> (HappyAbsSyn )
-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn40 #-}
-happyOut40 :: (HappyAbsSyn ) -> (([ImportSpec L],[S]))
-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut40 #-}
-happyIn41 :: (ImportSpec L) -> (HappyAbsSyn )
-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn41 #-}
-happyOut41 :: (HappyAbsSyn ) -> (ImportSpec L)
-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut41 #-}
-happyIn42 :: (([CName L],[S])) -> (HappyAbsSyn )
-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn42 #-}
-happyOut42 :: (HappyAbsSyn ) -> (([CName L],[S]))
-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut42 #-}
-happyIn43 :: (CName L) -> (HappyAbsSyn )
-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn43 #-}
-happyOut43 :: (HappyAbsSyn ) -> (CName L)
-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut43 #-}
-happyIn44 :: (Decl L) -> (HappyAbsSyn )
-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn44 #-}
-happyOut44 :: (HappyAbsSyn ) -> (Decl L)
-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut44 #-}
-happyIn45 :: ((Maybe Int, [S])) -> (HappyAbsSyn )
-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn45 #-}
-happyOut45 :: (HappyAbsSyn ) -> ((Maybe Int, [S]))
-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut45 #-}
-happyIn46 :: (Assoc L) -> (HappyAbsSyn )
-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn46 #-}
-happyOut46 :: (HappyAbsSyn ) -> (Assoc L)
-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut46 #-}
-happyIn47 :: (([Op L],[S],L)) -> (HappyAbsSyn )
-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn47 #-}
-happyOut47 :: (HappyAbsSyn ) -> (([Op L],[S],L))
-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut47 #-}
-happyIn48 :: (([Decl L],[S])) -> (HappyAbsSyn )
-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn48 #-}
-happyOut48 :: (HappyAbsSyn ) -> (([Decl L],[S]))
-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut48 #-}
-happyIn49 :: (([Decl L],[S])) -> (HappyAbsSyn )
-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn49 #-}
-happyOut49 :: (HappyAbsSyn ) -> (([Decl L],[S]))
-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut49 #-}
-happyIn50 :: (Decl L) -> (HappyAbsSyn )
-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn50 #-}
-happyOut50 :: (HappyAbsSyn ) -> (Decl L)
-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut50 #-}
-happyIn51 :: (DataOrNew L) -> (HappyAbsSyn )
-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn51 #-}
-happyOut51 :: (HappyAbsSyn ) -> (DataOrNew L)
-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut51 #-}
-happyIn52 :: (([Type L],[S])) -> (HappyAbsSyn )
-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn52 #-}
-happyOut52 :: (HappyAbsSyn ) -> (([Type L],[S]))
-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut52 #-}
-happyIn53 :: (([Decl L],[S])) -> (HappyAbsSyn )
-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn53 #-}
-happyOut53 :: (HappyAbsSyn ) -> (([Decl L],[S]))
-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut53 #-}
-happyIn54 :: (([Decl L],[S])) -> (HappyAbsSyn )
-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn54 #-}
-happyOut54 :: (HappyAbsSyn ) -> (([Decl L],[S]))
-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut54 #-}
-happyIn55 :: (Decl L) -> (HappyAbsSyn )
-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn55 #-}
-happyOut55 :: (HappyAbsSyn ) -> (Decl L)
-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut55 #-}
-happyIn56 :: (Binds L) -> (HappyAbsSyn )
-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn56 #-}
-happyOut56 :: (HappyAbsSyn ) -> (Binds L)
-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut56 #-}
-happyIn57 :: (Decl L) -> (HappyAbsSyn )
-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn57 #-}
-happyOut57 :: (HappyAbsSyn ) -> (Decl L)
-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut57 #-}
-happyIn58 :: (Decl L) -> (HappyAbsSyn )
-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn58 #-}
-happyOut58 :: (HappyAbsSyn ) -> (Decl L)
-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut58 #-}
-happyIn59 :: (([Type L],[S])) -> (HappyAbsSyn )
-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn59 #-}
-happyOut59 :: (HappyAbsSyn ) -> (([Type L],[S]))
-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut59 #-}
-happyIn60 :: (Type L) -> (HappyAbsSyn )
-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn60 #-}
-happyOut60 :: (HappyAbsSyn ) -> (Type L)
-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut60 #-}
-happyIn61 :: (Binds L) -> (HappyAbsSyn )
-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn61 #-}
-happyOut61 :: (HappyAbsSyn ) -> (Binds L)
-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut61 #-}
-happyIn62 :: (([Name L],[S],L)) -> (HappyAbsSyn )
-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn62 #-}
-happyOut62 :: (HappyAbsSyn ) -> (([Name L],[S],L))
-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut62 #-}
-happyIn63 :: (CallConv L) -> (HappyAbsSyn )
-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn63 #-}
-happyOut63 :: (HappyAbsSyn ) -> (CallConv L)
-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut63 #-}
-happyIn64 :: (Maybe (Safety L)) -> (HappyAbsSyn )
-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn64 #-}
-happyOut64 :: (HappyAbsSyn ) -> (Maybe (Safety L))
-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut64 #-}
-happyIn65 :: ((Maybe String, Name L, Type L, [S])) -> (HappyAbsSyn )
-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn65 #-}
-happyOut65 :: (HappyAbsSyn ) -> ((Maybe String, Name L, Type L, [S]))
-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut65 #-}
-happyIn66 :: ([Rule L]) -> (HappyAbsSyn )
-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn66 #-}
-happyOut66 :: (HappyAbsSyn ) -> ([Rule L])
-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut66 #-}
-happyIn67 :: (Rule L) -> (HappyAbsSyn )
-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn67 #-}
-happyOut67 :: (HappyAbsSyn ) -> (Rule L)
-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut67 #-}
-happyIn68 :: (Maybe (Activation L)) -> (HappyAbsSyn )
-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn68 #-}
-happyOut68 :: (HappyAbsSyn ) -> (Maybe (Activation L))
-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut68 #-}
-happyIn69 :: ((Maybe [RuleVar L],[S])) -> (HappyAbsSyn )
-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn69 #-}
-happyOut69 :: (HappyAbsSyn ) -> ((Maybe [RuleVar L],[S]))
-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut69 #-}
-happyIn70 :: ([RuleVar L]) -> (HappyAbsSyn )
-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn70 #-}
-happyOut70 :: (HappyAbsSyn ) -> ([RuleVar L])
-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut70 #-}
-happyIn71 :: (RuleVar L) -> (HappyAbsSyn )
-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn71 #-}
-happyOut71 :: (HappyAbsSyn ) -> (RuleVar L)
-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut71 #-}
-happyIn72 :: (([([Name L],String)],[S])) -> (HappyAbsSyn )
-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn72 #-}
-happyOut72 :: (HappyAbsSyn ) -> (([([Name L],String)],[S]))
-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut72 #-}
-happyIn73 :: ((([Name L], String),[S])) -> (HappyAbsSyn )
-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn73 #-}
-happyOut73 :: (HappyAbsSyn ) -> ((([Name L], String),[S]))
-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut73 #-}
-happyIn74 :: (([Name L],[S])) -> (HappyAbsSyn )
-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn74 #-}
-happyOut74 :: (HappyAbsSyn ) -> (([Name L],[S]))
-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut74 #-}
-happyIn75 :: (Name L) -> (HappyAbsSyn )
-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn75 #-}
-happyOut75 :: (HappyAbsSyn ) -> (Name L)
-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut75 #-}
-happyIn76 :: (Annotation L) -> (HappyAbsSyn )
-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn76 #-}
-happyOut76 :: (HappyAbsSyn ) -> (Annotation L)
-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut76 #-}
-happyIn77 :: (Type L) -> (HappyAbsSyn )
-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn77 #-}
-happyOut77 :: (HappyAbsSyn ) -> (Type L)
-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut77 #-}
-happyIn78 :: (PType L) -> (HappyAbsSyn )
-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn78 #-}
-happyOut78 :: (HappyAbsSyn ) -> (PType L)
-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut78 #-}
-happyIn79 :: (Type L) -> (HappyAbsSyn )
-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn79 #-}
-happyOut79 :: (HappyAbsSyn ) -> (Type L)
-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut79 #-}
-happyIn80 :: (PType L) -> (HappyAbsSyn )
-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn80 #-}
-happyOut80 :: (HappyAbsSyn ) -> (PType L)
-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut80 #-}
-happyIn81 :: (Type L) -> (HappyAbsSyn )
-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn81 #-}
-happyOut81 :: (HappyAbsSyn ) -> (Type L)
-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut81 #-}
-happyIn82 :: (PType L) -> (HappyAbsSyn )
-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn82 #-}
-happyOut82 :: (HappyAbsSyn ) -> (PType L)
-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut82 #-}
-happyIn83 :: (Type L) -> (HappyAbsSyn )
-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn83 #-}
-happyOut83 :: (HappyAbsSyn ) -> (Type L)
-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut83 #-}
-happyIn84 :: (PType L) -> (HappyAbsSyn )
-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn84 #-}
-happyOut84 :: (HappyAbsSyn ) -> (PType L)
-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut84 #-}
-happyIn85 :: (QName L) -> (HappyAbsSyn )
-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn85 #-}
-happyOut85 :: (HappyAbsSyn ) -> (QName L)
-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut85 #-}
-happyIn86 :: (QName L) -> (HappyAbsSyn )
-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn86 #-}
-happyOut86 :: (HappyAbsSyn ) -> (QName L)
-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut86 #-}
-happyIn87 :: (QName L) -> (HappyAbsSyn )
-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn87 #-}
-happyOut87 :: (HappyAbsSyn ) -> (QName L)
-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut87 #-}
-happyIn88 :: (Type L) -> (HappyAbsSyn )
-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn88 #-}
-happyOut88 :: (HappyAbsSyn ) -> (Type L)
-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut88 #-}
-happyIn89 :: (PType L) -> (HappyAbsSyn )
-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn89 #-}
-happyOut89 :: (HappyAbsSyn ) -> (PType L)
-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut89 #-}
-happyIn90 :: (PContext L) -> (HappyAbsSyn )
-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn90 #-}
-happyOut90 :: (HappyAbsSyn ) -> (PContext L)
-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut90 #-}
-happyIn91 :: (([PType L],[S])) -> (HappyAbsSyn )
-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn91 #-}
-happyOut91 :: (HappyAbsSyn ) -> (([PType L],[S]))
-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut91 #-}
-happyIn92 :: (([PType L],[S])) -> (HappyAbsSyn )
-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn92 #-}
-happyOut92 :: (HappyAbsSyn ) -> (([PType L],[S]))
-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut92 #-}
-happyIn93 :: (([TyVarBind L],Maybe L)) -> (HappyAbsSyn )
-happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn93 #-}
-happyOut93 :: (HappyAbsSyn ) -> (([TyVarBind L],Maybe L))
-happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut93 #-}
-happyIn94 :: (TyVarBind L) -> (HappyAbsSyn )
-happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn94 #-}
-happyOut94 :: (HappyAbsSyn ) -> (TyVarBind L)
-happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut94 #-}
-happyIn95 :: (([Name L],Maybe L)) -> (HappyAbsSyn )
-happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn95 #-}
-happyOut95 :: (HappyAbsSyn ) -> (([Name L],Maybe L))
-happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut95 #-}
-happyIn96 :: (([Name L],L)) -> (HappyAbsSyn )
-happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn96 #-}
-happyOut96 :: (HappyAbsSyn ) -> (([Name L],L))
-happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut96 #-}
-happyIn97 :: (([FunDep L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn97 #-}
-happyOut97 :: (HappyAbsSyn ) -> (([FunDep L],[S],Maybe L))
-happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut97 #-}
-happyIn98 :: (([FunDep L],[S],L)) -> (HappyAbsSyn )
-happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn98 #-}
-happyOut98 :: (HappyAbsSyn ) -> (([FunDep L],[S],L))
-happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut98 #-}
-happyIn99 :: (FunDep L) -> (HappyAbsSyn )
-happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn99 #-}
-happyOut99 :: (HappyAbsSyn ) -> (FunDep L)
-happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut99 #-}
-happyIn100 :: (([GadtDecl L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn100 #-}
-happyOut100 :: (HappyAbsSyn ) -> (([GadtDecl L],[S],Maybe L))
-happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut100 #-}
-happyIn101 :: (([GadtDecl L],[S])) -> (HappyAbsSyn )
-happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn101 #-}
-happyOut101 :: (HappyAbsSyn ) -> (([GadtDecl L],[S]))
-happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut101 #-}
-happyIn102 :: (([GadtDecl L],[S])) -> (HappyAbsSyn )
-happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn102 #-}
-happyOut102 :: (HappyAbsSyn ) -> (([GadtDecl L],[S]))
-happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut102 #-}
-happyIn103 :: (GadtDecl L) -> (HappyAbsSyn )
-happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn103 #-}
-happyOut103 :: (HappyAbsSyn ) -> (GadtDecl L)
-happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut103 #-}
-happyIn104 :: (([QualConDecl L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn104 #-}
-happyOut104 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],Maybe L))
-happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut104 #-}
-happyIn105 :: (([QualConDecl L],[S],L)) -> (HappyAbsSyn )
-happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn105 #-}
-happyOut105 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],L))
-happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut105 #-}
-happyIn106 :: (QualConDecl L) -> (HappyAbsSyn )
-happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn106 #-}
-happyOut106 :: (HappyAbsSyn ) -> (QualConDecl L)
-happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut106 #-}
-happyIn107 :: ((Maybe [TyVarBind L], [S], Maybe L)) -> (HappyAbsSyn )
-happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn107 #-}
-happyOut107 :: (HappyAbsSyn ) -> ((Maybe [TyVarBind L], [S], Maybe L))
-happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut107 #-}
-happyIn108 :: (ConDecl L) -> (HappyAbsSyn )
-happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn108 #-}
-happyOut108 :: (HappyAbsSyn ) -> (ConDecl L)
-happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut108 #-}
-happyIn109 :: ((Name L, [BangType L], L)) -> (HappyAbsSyn )
-happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn109 #-}
-happyOut109 :: (HappyAbsSyn ) -> ((Name L, [BangType L], L))
-happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut109 #-}
-happyIn110 :: ((Name L, [BangType L],L)) -> (HappyAbsSyn )
-happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn110 #-}
-happyOut110 :: (HappyAbsSyn ) -> ((Name L, [BangType L],L))
-happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut110 #-}
-happyIn111 :: (BangType L) -> (HappyAbsSyn )
-happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn111 #-}
-happyOut111 :: (HappyAbsSyn ) -> (BangType L)
-happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut111 #-}
-happyIn112 :: (BangType L) -> (HappyAbsSyn )
-happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn112 #-}
-happyOut112 :: (HappyAbsSyn ) -> (BangType L)
-happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut112 #-}
-happyIn113 :: (([FieldDecl L],[S])) -> (HappyAbsSyn )
-happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn113 #-}
-happyOut113 :: (HappyAbsSyn ) -> (([FieldDecl L],[S]))
-happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut113 #-}
-happyIn114 :: (FieldDecl L) -> (HappyAbsSyn )
-happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn114 #-}
-happyOut114 :: (HappyAbsSyn ) -> (FieldDecl L)
-happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut114 #-}
-happyIn115 :: (BangType L) -> (HappyAbsSyn )
-happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn115 #-}
-happyOut115 :: (HappyAbsSyn ) -> (BangType L)
-happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut115 #-}
-happyIn116 :: (Maybe (Deriving L)) -> (HappyAbsSyn )
-happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn116 #-}
-happyOut116 :: (HappyAbsSyn ) -> (Maybe (Deriving L))
-happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut116 #-}
-happyIn117 :: (([InstHead L],[S])) -> (HappyAbsSyn )
-happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn117 #-}
-happyOut117 :: (HappyAbsSyn ) -> (([InstHead L],[S]))
-happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut117 #-}
-happyIn118 :: (QName L) -> (HappyAbsSyn )
-happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn118 #-}
-happyOut118 :: (HappyAbsSyn ) -> (QName L)
-happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut118 #-}
-happyIn119 :: (Kind L) -> (HappyAbsSyn )
-happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn119 #-}
-happyOut119 :: (HappyAbsSyn ) -> (Kind L)
-happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut119 #-}
-happyIn120 :: (Kind L) -> (HappyAbsSyn )
-happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn120 #-}
-happyOut120 :: (HappyAbsSyn ) -> (Kind L)
-happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut120 #-}
-happyIn121 :: (Kind L) -> (HappyAbsSyn )
-happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn121 #-}
-happyOut121 :: (HappyAbsSyn ) -> (Kind L)
-happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut121 #-}
-happyIn122 :: ((Maybe (Kind L), [S])) -> (HappyAbsSyn )
-happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn122 #-}
-happyOut122 :: (HappyAbsSyn ) -> ((Maybe (Kind L), [S]))
-happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut122 #-}
-happyIn123 :: ((Maybe [ClassDecl L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn123 #-}
-happyOut123 :: (HappyAbsSyn ) -> ((Maybe [ClassDecl L],[S],Maybe L))
-happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut123 #-}
-happyIn124 :: (([ClassDecl L],[S])) -> (HappyAbsSyn )
-happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn124 #-}
-happyOut124 :: (HappyAbsSyn ) -> (([ClassDecl L],[S]))
-happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut124 #-}
-happyIn125 :: (([ClassDecl L],[S])) -> (HappyAbsSyn )
-happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn125 #-}
-happyOut125 :: (HappyAbsSyn ) -> (([ClassDecl L],[S]))
-happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut125 #-}
-happyIn126 :: (ClassDecl L) -> (HappyAbsSyn )
-happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn126 #-}
-happyOut126 :: (HappyAbsSyn ) -> (ClassDecl L)
-happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut126 #-}
-happyIn127 :: (ClassDecl L) -> (HappyAbsSyn )
-happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn127 #-}
-happyOut127 :: (HappyAbsSyn ) -> (ClassDecl L)
-happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut127 #-}
-happyIn128 :: ((Maybe [InstDecl L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn128 #-}
-happyOut128 :: (HappyAbsSyn ) -> ((Maybe [InstDecl L],[S],Maybe L))
-happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut128 #-}
-happyIn129 :: (([InstDecl L],[S])) -> (HappyAbsSyn )
-happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn129 #-}
-happyOut129 :: (HappyAbsSyn ) -> (([InstDecl L],[S]))
-happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut129 #-}
-happyIn130 :: (([InstDecl L],[S])) -> (HappyAbsSyn )
-happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn130 #-}
-happyOut130 :: (HappyAbsSyn ) -> (([InstDecl L],[S]))
-happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut130 #-}
-happyIn131 :: (InstDecl L) -> (HappyAbsSyn )
-happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn131 #-}
-happyOut131 :: (HappyAbsSyn ) -> (InstDecl L)
-happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut131 #-}
-happyIn132 :: (InstDecl L) -> (HappyAbsSyn )
-happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn132 #-}
-happyOut132 :: (HappyAbsSyn ) -> (InstDecl L)
-happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut132 #-}
-happyIn133 :: (Decl L) -> (HappyAbsSyn )
-happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn133 #-}
-happyOut133 :: (HappyAbsSyn ) -> (Decl L)
-happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut133 #-}
-happyIn134 :: ((Maybe (Binds L),[S])) -> (HappyAbsSyn )
-happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn134 #-}
-happyOut134 :: (HappyAbsSyn ) -> ((Maybe (Binds L),[S]))
-happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut134 #-}
-happyIn135 :: ((Maybe (Type L),[S])) -> (HappyAbsSyn )
-happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn135 #-}
-happyOut135 :: (HappyAbsSyn ) -> ((Maybe (Type L),[S]))
-happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut135 #-}
-happyIn136 :: (Rhs L) -> (HappyAbsSyn )
-happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn136 #-}
-happyOut136 :: (HappyAbsSyn ) -> (Rhs L)
-happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut136 #-}
-happyIn137 :: (([GuardedRhs L],L)) -> (HappyAbsSyn )
-happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn137 #-}
-happyOut137 :: (HappyAbsSyn ) -> (([GuardedRhs L],L))
-happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut137 #-}
-happyIn138 :: (GuardedRhs L) -> (HappyAbsSyn )
-happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn138 #-}
-happyOut138 :: (HappyAbsSyn ) -> (GuardedRhs L)
-happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut138 #-}
-happyIn139 :: (Exp L) -> (HappyAbsSyn )
-happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn139 #-}
-happyOut139 :: (HappyAbsSyn ) -> (Exp L)
-happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut139 #-}
-happyIn140 :: (PExp L) -> (HappyAbsSyn )
-happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn140 #-}
-happyOut140 :: (HappyAbsSyn ) -> (PExp L)
-happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut140 #-}
-happyIn141 :: (PExp L) -> (HappyAbsSyn )
-happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn141 #-}
-happyOut141 :: (HappyAbsSyn ) -> (PExp L)
-happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut141 #-}
-happyIn142 :: (PExp L) -> (HappyAbsSyn )
-happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn142 #-}
-happyOut142 :: (HappyAbsSyn ) -> (PExp L)
-happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut142 #-}
-happyIn143 :: (PExp L) -> (HappyAbsSyn )
-happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn143 #-}
-happyOut143 :: (HappyAbsSyn ) -> (PExp L)
-happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut143 #-}
-happyIn144 :: (PExp L) -> (HappyAbsSyn )
-happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn144 #-}
-happyOut144 :: (HappyAbsSyn ) -> (PExp L)
-happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut144 #-}
-happyIn145 :: (PExp L) -> (HappyAbsSyn )
-happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn145 #-}
-happyOut145 :: (HappyAbsSyn ) -> (PExp L)
-happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut145 #-}
-happyIn146 :: (PExp L) -> (HappyAbsSyn )
-happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn146 #-}
-happyOut146 :: (HappyAbsSyn ) -> (PExp L)
-happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut146 #-}
-happyIn147 :: (PExp L) -> (HappyAbsSyn )
-happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn147 #-}
-happyOut147 :: (HappyAbsSyn ) -> (PExp L)
-happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut147 #-}
-happyIn148 :: ([Pat L]) -> (HappyAbsSyn )
-happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn148 #-}
-happyOut148 :: (HappyAbsSyn ) -> ([Pat L])
-happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut148 #-}
-happyIn149 :: (Pat L) -> (HappyAbsSyn )
-happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn149 #-}
-happyOut149 :: (HappyAbsSyn ) -> (Pat L)
-happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut149 #-}
-happyIn150 :: (PExp L) -> (HappyAbsSyn )
-happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn150 #-}
-happyOut150 :: (HappyAbsSyn ) -> (PExp L)
-happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut150 #-}
-happyIn151 :: (PExp L) -> (HappyAbsSyn )
-happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn151 #-}
-happyOut151 :: (HappyAbsSyn ) -> (PExp L)
-happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut151 #-}
-happyIn152 :: (PExp L) -> (HappyAbsSyn )
-happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn152 #-}
-happyOut152 :: (HappyAbsSyn ) -> (PExp L)
-happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut152 #-}
-happyIn153 :: ([S]) -> (HappyAbsSyn )
-happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn153 #-}
-happyOut153 :: (HappyAbsSyn ) -> ([S])
-happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut153 #-}
-happyIn154 :: (PExp L) -> (HappyAbsSyn )
-happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn154 #-}
-happyOut154 :: (HappyAbsSyn ) -> (PExp L)
-happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut154 #-}
-happyIn155 :: (([Maybe (PExp L)],[S])) -> (HappyAbsSyn )
-happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn155 #-}
-happyOut155 :: (HappyAbsSyn ) -> (([Maybe (PExp L)],[S]))
-happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut155 #-}
-happyIn156 :: (([PExp L],[S])) -> (HappyAbsSyn )
-happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn156 #-}
-happyOut156 :: (HappyAbsSyn ) -> (([PExp L],[S]))
-happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut156 #-}
-happyIn157 :: (PExp L) -> (HappyAbsSyn )
-happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn157 #-}
-happyOut157 :: (HappyAbsSyn ) -> (PExp L)
-happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut157 #-}
-happyIn158 :: (PExp L) -> (HappyAbsSyn )
-happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn158 #-}
-happyOut158 :: (HappyAbsSyn ) -> (PExp L)
-happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut158 #-}
-happyIn159 :: ([PExp L]) -> (HappyAbsSyn )
-happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn159 #-}
-happyOut159 :: (HappyAbsSyn ) -> ([PExp L])
-happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut159 #-}
-happyIn160 :: (PExp L) -> (HappyAbsSyn )
-happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn160 #-}
-happyOut160 :: (HappyAbsSyn ) -> (PExp L)
-happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut160 #-}
-happyIn161 :: (XName L) -> (HappyAbsSyn )
-happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn161 #-}
-happyOut161 :: (HappyAbsSyn ) -> (XName L)
-happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut161 #-}
-happyIn162 :: (Loc String) -> (HappyAbsSyn )
-happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn162 #-}
-happyOut162 :: (HappyAbsSyn ) -> (Loc String)
-happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut162 #-}
-happyIn163 :: (Loc String) -> (HappyAbsSyn )
-happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn163 #-}
-happyOut163 :: (HappyAbsSyn ) -> (Loc String)
-happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut163 #-}
-happyIn164 :: ([ParseXAttr L]) -> (HappyAbsSyn )
-happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn164 #-}
-happyOut164 :: (HappyAbsSyn ) -> ([ParseXAttr L])
-happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut164 #-}
-happyIn165 :: (ParseXAttr L) -> (HappyAbsSyn )
-happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn165 #-}
-happyOut165 :: (HappyAbsSyn ) -> (ParseXAttr L)
-happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut165 #-}
-happyIn166 :: (Maybe (PExp L)) -> (HappyAbsSyn )
-happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn166 #-}
-happyOut166 :: (HappyAbsSyn ) -> (Maybe (PExp L))
-happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut166 #-}
-happyIn167 :: (L -> PExp L) -> (HappyAbsSyn )
-happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn167 #-}
-happyOut167 :: (HappyAbsSyn ) -> (L -> PExp L)
-happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut167 #-}
-happyIn168 :: (([PExp L],[S])) -> (HappyAbsSyn )
-happyIn168 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn168 #-}
-happyOut168 :: (HappyAbsSyn ) -> (([PExp L],[S]))
-happyOut168 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut168 #-}
-happyIn169 :: (([[QualStmt L]],[S])) -> (HappyAbsSyn )
-happyIn169 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn169 #-}
-happyOut169 :: (HappyAbsSyn ) -> (([[QualStmt L]],[S]))
-happyOut169 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut169 #-}
-happyIn170 :: (([QualStmt L],[S])) -> (HappyAbsSyn )
-happyIn170 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn170 #-}
-happyOut170 :: (HappyAbsSyn ) -> (([QualStmt L],[S]))
-happyOut170 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut170 #-}
-happyIn171 :: (QualStmt L) -> (HappyAbsSyn )
-happyIn171 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn171 #-}
-happyOut171 :: (HappyAbsSyn ) -> (QualStmt L)
-happyOut171 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut171 #-}
-happyIn172 :: (QualStmt L) -> (HappyAbsSyn )
-happyIn172 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn172 #-}
-happyOut172 :: (HappyAbsSyn ) -> (QualStmt L)
-happyOut172 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut172 #-}
-happyIn173 :: (([Stmt L],[S])) -> (HappyAbsSyn )
-happyIn173 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn173 #-}
-happyOut173 :: (HappyAbsSyn ) -> (([Stmt L],[S]))
-happyOut173 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut173 #-}
-happyIn174 :: (Stmt L) -> (HappyAbsSyn )
-happyIn174 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn174 #-}
-happyOut174 :: (HappyAbsSyn ) -> (Stmt L)
-happyOut174 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut174 #-}
-happyIn175 :: (([Alt L],L,[S])) -> (HappyAbsSyn )
-happyIn175 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn175 #-}
-happyOut175 :: (HappyAbsSyn ) -> (([Alt L],L,[S]))
-happyOut175 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut175 #-}
-happyIn176 :: (([Alt L],[S])) -> (HappyAbsSyn )
-happyIn176 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn176 #-}
-happyOut176 :: (HappyAbsSyn ) -> (([Alt L],[S]))
-happyOut176 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut176 #-}
-happyIn177 :: (([Alt L],[S])) -> (HappyAbsSyn )
-happyIn177 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn177 #-}
-happyOut177 :: (HappyAbsSyn ) -> (([Alt L],[S]))
-happyOut177 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut177 #-}
-happyIn178 :: (Alt L) -> (HappyAbsSyn )
-happyIn178 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn178 #-}
-happyOut178 :: (HappyAbsSyn ) -> (Alt L)
-happyOut178 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut178 #-}
-happyIn179 :: (GuardedAlts L) -> (HappyAbsSyn )
-happyIn179 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn179 #-}
-happyOut179 :: (HappyAbsSyn ) -> (GuardedAlts L)
-happyOut179 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut179 #-}
-happyIn180 :: (([GuardedAlt L],L)) -> (HappyAbsSyn )
-happyIn180 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn180 #-}
-happyOut180 :: (HappyAbsSyn ) -> (([GuardedAlt L],L))
-happyOut180 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut180 #-}
-happyIn181 :: (GuardedAlt L) -> (HappyAbsSyn )
-happyIn181 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn181 #-}
-happyOut181 :: (HappyAbsSyn ) -> (GuardedAlt L)
-happyOut181 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut181 #-}
-happyIn182 :: (Pat L) -> (HappyAbsSyn )
-happyIn182 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn182 #-}
-happyOut182 :: (HappyAbsSyn ) -> (Pat L)
-happyOut182 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut182 #-}
-happyIn183 :: (([Stmt L],L,[S])) -> (HappyAbsSyn )
-happyIn183 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn183 #-}
-happyOut183 :: (HappyAbsSyn ) -> (([Stmt L],L,[S]))
-happyOut183 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut183 #-}
-happyIn184 :: (([Stmt L],[S])) -> (HappyAbsSyn )
-happyIn184 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn184 #-}
-happyOut184 :: (HappyAbsSyn ) -> (([Stmt L],[S]))
-happyOut184 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut184 #-}
-happyIn185 :: (([Stmt L],[S])) -> (HappyAbsSyn )
-happyIn185 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn185 #-}
-happyOut185 :: (HappyAbsSyn ) -> (([Stmt L],[S]))
-happyOut185 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut185 #-}
-happyIn186 :: (Stmt L) -> (HappyAbsSyn )
-happyIn186 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn186 #-}
-happyOut186 :: (HappyAbsSyn ) -> (Stmt L)
-happyOut186 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut186 #-}
-happyIn187 :: (([PFieldUpdate L],[S])) -> (HappyAbsSyn )
-happyIn187 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn187 #-}
-happyOut187 :: (HappyAbsSyn ) -> (([PFieldUpdate L],[S]))
-happyOut187 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut187 #-}
-happyIn188 :: (PFieldUpdate L) -> (HappyAbsSyn )
-happyIn188 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn188 #-}
-happyOut188 :: (HappyAbsSyn ) -> (PFieldUpdate L)
-happyOut188 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut188 #-}
-happyIn189 :: (([IPBind L],[S])) -> (HappyAbsSyn )
-happyIn189 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn189 #-}
-happyOut189 :: (HappyAbsSyn ) -> (([IPBind L],[S]))
-happyOut189 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut189 #-}
-happyIn190 :: (([IPBind L],[S])) -> (HappyAbsSyn )
-happyIn190 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn190 #-}
-happyOut190 :: (HappyAbsSyn ) -> (([IPBind L],[S]))
-happyOut190 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut190 #-}
-happyIn191 :: (IPBind L) -> (HappyAbsSyn )
-happyIn191 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn191 #-}
-happyOut191 :: (HappyAbsSyn ) -> (IPBind L)
-happyOut191 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut191 #-}
-happyIn192 :: (PExp L) -> (HappyAbsSyn )
-happyIn192 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn192 #-}
-happyOut192 :: (HappyAbsSyn ) -> (PExp L)
-happyOut192 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut192 #-}
-happyIn193 :: (Name L) -> (HappyAbsSyn )
-happyIn193 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn193 #-}
-happyOut193 :: (HappyAbsSyn ) -> (Name L)
-happyOut193 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut193 #-}
-happyIn194 :: (Name L) -> (HappyAbsSyn )
-happyIn194 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn194 #-}
-happyOut194 :: (HappyAbsSyn ) -> (Name L)
-happyOut194 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut194 #-}
-happyIn195 :: (QName L) -> (HappyAbsSyn )
-happyIn195 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn195 #-}
-happyOut195 :: (HappyAbsSyn ) -> (QName L)
-happyOut195 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut195 #-}
-happyIn196 :: (IPName L) -> (HappyAbsSyn )
-happyIn196 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn196 #-}
-happyOut196 :: (HappyAbsSyn ) -> (IPName L)
-happyOut196 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut196 #-}
-happyIn197 :: (Name L) -> (HappyAbsSyn )
-happyIn197 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn197 #-}
-happyOut197 :: (HappyAbsSyn ) -> (Name L)
-happyOut197 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut197 #-}
-happyIn198 :: (QName L) -> (HappyAbsSyn )
-happyIn198 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn198 #-}
-happyOut198 :: (HappyAbsSyn ) -> (QName L)
-happyOut198 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut198 #-}
-happyIn199 :: (Name L) -> (HappyAbsSyn )
-happyIn199 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn199 #-}
-happyOut199 :: (HappyAbsSyn ) -> (Name L)
-happyOut199 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut199 #-}
-happyIn200 :: (QName L) -> (HappyAbsSyn )
-happyIn200 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn200 #-}
-happyOut200 :: (HappyAbsSyn ) -> (QName L)
-happyOut200 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut200 #-}
-happyIn201 :: (QName L) -> (HappyAbsSyn )
-happyIn201 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn201 #-}
-happyOut201 :: (HappyAbsSyn ) -> (QName L)
-happyOut201 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut201 #-}
-happyIn202 :: (Name L) -> (HappyAbsSyn )
-happyIn202 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn202 #-}
-happyOut202 :: (HappyAbsSyn ) -> (Name L)
-happyOut202 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut202 #-}
-happyIn203 :: (QName L) -> (HappyAbsSyn )
-happyIn203 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn203 #-}
-happyOut203 :: (HappyAbsSyn ) -> (QName L)
-happyOut203 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut203 #-}
-happyIn204 :: (Op L) -> (HappyAbsSyn )
-happyIn204 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn204 #-}
-happyOut204 :: (HappyAbsSyn ) -> (Op L)
-happyOut204 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut204 #-}
-happyIn205 :: (QOp L) -> (HappyAbsSyn )
-happyIn205 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn205 #-}
-happyOut205 :: (HappyAbsSyn ) -> (QOp L)
-happyOut205 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut205 #-}
-happyIn206 :: (QOp L) -> (HappyAbsSyn )
-happyIn206 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn206 #-}
-happyOut206 :: (HappyAbsSyn ) -> (QOp L)
-happyOut206 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut206 #-}
-happyIn207 :: (QName L) -> (HappyAbsSyn )
-happyIn207 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn207 #-}
-happyOut207 :: (HappyAbsSyn ) -> (QName L)
-happyOut207 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut207 #-}
-happyIn208 :: (QName L) -> (HappyAbsSyn )
-happyIn208 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn208 #-}
-happyOut208 :: (HappyAbsSyn ) -> (QName L)
-happyOut208 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut208 #-}
-happyIn209 :: (Name L) -> (HappyAbsSyn )
-happyIn209 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn209 #-}
-happyOut209 :: (HappyAbsSyn ) -> (Name L)
-happyOut209 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut209 #-}
-happyIn210 :: (Name L) -> (HappyAbsSyn )
-happyIn210 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn210 #-}
-happyOut210 :: (HappyAbsSyn ) -> (Name L)
-happyOut210 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut210 #-}
-happyIn211 :: (IPName L) -> (HappyAbsSyn )
-happyIn211 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn211 #-}
-happyOut211 :: (HappyAbsSyn ) -> (IPName L)
-happyOut211 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut211 #-}
-happyIn212 :: (QName L) -> (HappyAbsSyn )
-happyIn212 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn212 #-}
-happyOut212 :: (HappyAbsSyn ) -> (QName L)
-happyOut212 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut212 #-}
-happyIn213 :: (Name L) -> (HappyAbsSyn )
-happyIn213 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn213 #-}
-happyOut213 :: (HappyAbsSyn ) -> (Name L)
-happyOut213 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut213 #-}
-happyIn214 :: (QName L) -> (HappyAbsSyn )
-happyIn214 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn214 #-}
-happyOut214 :: (HappyAbsSyn ) -> (QName L)
-happyOut214 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut214 #-}
-happyIn215 :: (Name L) -> (HappyAbsSyn )
-happyIn215 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn215 #-}
-happyOut215 :: (HappyAbsSyn ) -> (Name L)
-happyOut215 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut215 #-}
-happyIn216 :: (QName L) -> (HappyAbsSyn )
-happyIn216 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn216 #-}
-happyOut216 :: (HappyAbsSyn ) -> (QName L)
-happyOut216 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut216 #-}
-happyIn217 :: (QName L) -> (HappyAbsSyn )
-happyIn217 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn217 #-}
-happyOut217 :: (HappyAbsSyn ) -> (QName L)
-happyOut217 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut217 #-}
-happyIn218 :: (Name L) -> (HappyAbsSyn )
-happyIn218 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn218 #-}
-happyOut218 :: (HappyAbsSyn ) -> (Name L)
-happyOut218 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut218 #-}
-happyIn219 :: (Name L) -> (HappyAbsSyn )
-happyIn219 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn219 #-}
-happyOut219 :: (HappyAbsSyn ) -> (Name L)
-happyOut219 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut219 #-}
-happyIn220 :: (QName L) -> (HappyAbsSyn )
-happyIn220 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn220 #-}
-happyOut220 :: (HappyAbsSyn ) -> (QName L)
-happyOut220 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut220 #-}
-happyIn221 :: (Literal L) -> (HappyAbsSyn )
-happyIn221 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn221 #-}
-happyOut221 :: (HappyAbsSyn ) -> (Literal L)
-happyOut221 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut221 #-}
-happyIn222 :: (S) -> (HappyAbsSyn )
-happyIn222 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn222 #-}
-happyOut222 :: (HappyAbsSyn ) -> (S)
-happyOut222 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut222 #-}
-happyIn223 :: (S) -> (HappyAbsSyn )
-happyIn223 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn223 #-}
-happyOut223 :: (HappyAbsSyn ) -> (S)
-happyOut223 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut223 #-}
-happyIn224 :: (ModuleName L) -> (HappyAbsSyn )
-happyIn224 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn224 #-}
-happyOut224 :: (HappyAbsSyn ) -> (ModuleName L)
-happyOut224 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut224 #-}
-happyIn225 :: (Name L) -> (HappyAbsSyn )
-happyIn225 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn225 #-}
-happyOut225 :: (HappyAbsSyn ) -> (Name L)
-happyOut225 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut225 #-}
-happyIn226 :: (QName L) -> (HappyAbsSyn )
-happyIn226 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn226 #-}
-happyOut226 :: (HappyAbsSyn ) -> (QName L)
-happyOut226 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut226 #-}
-happyIn227 :: (Name L) -> (HappyAbsSyn )
-happyIn227 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn227 #-}
-happyOut227 :: (HappyAbsSyn ) -> (Name L)
-happyOut227 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut227 #-}
-happyIn228 :: (QName L) -> (HappyAbsSyn )
-happyIn228 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn228 #-}
-happyOut228 :: (HappyAbsSyn ) -> (QName L)
-happyOut228 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut228 #-}
-happyIn229 :: (Name L) -> (HappyAbsSyn )
-happyIn229 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn229 #-}
-happyOut229 :: (HappyAbsSyn ) -> (Name L)
-happyOut229 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut229 #-}
-happyInTok :: (Loc Token) -> (HappyAbsSyn )
-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn ) -> (Loc Token)
-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOutTok #-}
-
-
-happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x00\x00\xc0\x11\x4c\x11\xa5\x09\x27\x1a\x08\x0f\x00\x00\x00\x00\x00\x00\xb1\x07\xcd\x04\x16\x08\x8f\x07\x00\x00\xeb\x07\x00\x00\x00\x00\x92\x1c\x00\x00\x00\x00\x00\x00\x99\x18\x00\x00\xef\x07\x00\x00\x00\x00\xe7\x07\x80\x07\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x0c\x42\x02\xbb\x0c\x00\x00\x2d\x16\x99\x18\x99\x18\x99\x18\xc0\x11\x00\x00\xc0\x11\xc0\x11\xc0\x11\x27\x1a\x00\x00\x9e\x1b\x41\x1b\x00\x00\x25\x18\xc0\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x11\xe5\x07\x00\x00\xc0\x11\xe3\x07\xdd\x07\x2d\x16\xdd\x07\x00\x00\xea\x07\xe8\x07\xe6\x07\x00\x00\x00\x00\x24\x19\x00\x00\x00\x00\x00\x00\x6b\x07\x00\x00\x27\x1a\xc7\x07\x00\x00\x00\x00\x00\x00\xee\x18\x7c\x19\x11\x1a\x00\x00\x00\x00\xe1\x07\x5d\x07\xbc\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x1d\xfe\x17\xa9\x00\xe4\x19\x7f\x07\xc2\x07\x6e\x07\x00\x00\x00\x00\x00\x00\xe4\x19\xb2\x07\x00\x00\x69\x1a\xad\x07\xad\x07\xff\x1b\xad\x07\xba\x07\x81\x1c\x81\x1c\x5d\x1b\x00\x00\x3e\x07\x3e\x07\x00\x00\x3e\x07\xe2\x00\x00\x00\x00\x00\xa0\x07\x8a\x17\x4f\x07\xf3\x05\x63\x17\x37\x07\x00\x00\x00\x00\x00\x00\x00\x00\x78\x01\x63\x17\xb3\x07\x9f\x00\x00\x00\xaa\x07\x94\x07\x8e\x00\x42\x00\x00\x00\x97\x07\x6d\x1c\x21\x00\x8d\x07\x75\x01\xe4\x19\x6d\x1c\x6d\x1c\x78\x07\x64\x19\x51\x1a\x1b\x1b\x00\x00\x44\x07\x00\x00\x00\x00\x30\x07\xe4\x19\xe4\x19\xe4\x19\x71\x07\xa0\x05\xa0\x05\x9e\x04\x9e\x04\x00\x00\x00\x00\xc0\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x1c\xf8\x1b\x00\x00\x00\x00\xe4\x19\x00\x00\x00\x00\x00\x00\xc8\x05\xe4\x19\x34\x00\x00\x00\x81\x12\x75\x07\x00\x00\x00\x00\x37\x02\x16\x02\x00\x00\x00\x00\x8d\x01\x7d\x07\x73\x07\x20\x02\x79\x07\x00\x00\x72\x07\x1b\x1b\x00\x00\x00\x00\x1b\x1b\x00\x00\x1b\x1b\x00\x00\x00\x00\x4b\x0a\xe4\x19\x1b\x1b\x00\x00\x76\x07\x0a\x07\xfd\x06\x00\x00\xac\x0d\xac\x0d\x50\x07\x00\x00\x63\x17\x00\x00\x17\x07\x09\x07\x00\x00\x05\x07\x24\x07\x00\x00\x4a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\xc0\x01\x4b\x07\x00\x00\x00\x00\x92\x02\xa5\x09\x2f\x07\x2c\x07\xc4\x1a\x2a\x07\x53\x07\x39\x07\xf2\x00\x00\x00\x63\x17\x00\x00\xd7\x15\x00\x00\x2b\x07\x97\x01\x36\x07\x13\x07\x00\x00\x00\x00\xc0\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x1b\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x6a\x04\xc1\x0b\xe0\x01\x3c\x07\x3a\x07\x2e\x07\x2d\x07\x29\x07\x00\x00\x27\x07\x63\x17\x21\x07\x1a\x07\x51\x1a\x63\x17\x63\x17\xc0\x11\x36\x1b\x00\x00\xc0\x11\xe4\x19\xc0\x11\xc0\x11\xc0\x11\xc0\x11\x4f\x00\x14\x07\x00\x00\x23\x07\xad\x15\x00\x00\xd8\xff\x00\x00\xa8\x06\x00\x00\xfc\x06\x00\x00\x10\x00\xcd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x02\x00\x00\xf4\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x06\x00\x00\x00\x00\x00\x00\x00\x00\x44\x0b\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\xc0\x11\xc0\x11\x00\x00\xea\x06\xe9\x06\x00\x00\x38\x0d\x00\x00\x38\x0d\xc0\x11\x94\x0e\x00\x00\xc0\x11\xc0\x11\x00\x00\xd8\x10\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\xec\x06\xef\x16\xf9\x14\x00\x00\xef\x06\xc0\x11\xc0\x11\x00\x00\xc0\x11\xe6\x06\xe5\x06\xac\x0d\x4f\x00\xc0\x11\xc0\x11\xd8\x06\xbe\x1a\x00\x00\xda\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x19\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\xe4\x19\x00\x00\x00\x00\x00\x00\xc0\x0a\xe4\x19\xd3\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x13\xc8\x05\xa5\x06\x87\x06\x6a\x00\x9a\x06\x50\x04\xcf\x06\x3d\x02\x00\x00\x77\x06\xc6\x06\x00\x00\xc0\x11\xd8\x10\x75\x06\xed\x04\x00\x00\x00\x00\x7b\x03\x74\x06\x00\x00\xc1\x06\xcc\x06\x00\x00\xc0\x06\x00\x00\x00\x00\x00\x00\xbf\x06\x9c\x13\xbc\x06\xb2\x06\x4f\x00\x4f\x00\xa6\x06\x00\x00\xa3\x06\x1b\x1b\xe4\x19\x45\x06\x3c\x06\x3a\x06\xe4\x19\x9c\x06\xb0\x06\x8e\x06\x56\x06\xa4\x06\x00\x00\x57\x1c\x00\x00\x57\x1c\x00\x00\x00\x00\xc8\x16\x00\x00\x9b\x06\x91\x06\x00\x00\x00\x00\x70\x05\x00\x00\x00\x00\x59\x06\x00\x00\x00\x00\x00\x00\x00\x00\x84\x06\x9f\x08\x4f\x00\xf9\x14\x63\x06\x80\x06\x86\x06\x82\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x11\x56\x14\xe4\x19\x6e\x06\x00\x00\x01\x06\x62\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x1b\x00\x00\xe4\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x0a\x00\x00\x00\x00\x57\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x0a\x52\x06\x5a\x06\x00\x00\x00\x00\x5e\x06\x00\x00\x51\x06\x00\x00\x77\x08\x0e\x01\x7b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x06\x00\x00\xbc\x01\x00\x00\x4b\x06\x4e\x06\x00\x00\x00\x00\x00\x00\x71\x13\xe4\x19\x00\x00\x3e\x06\x00\x00\xcb\x0a\x00\x00\x00\x00\x00\x00\x35\x06\x6a\x00\x00\x00\x00\x00\x06\x06\x43\x06\x00\x00\xc5\x01\xf9\x05\xe8\x05\x3b\x06\x36\x06\x34\x00\x00\x00\x2a\x06\x00\x00\x30\x06\x26\x06\x00\x00\x00\x00\x37\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x0d\x00\x00\x00\x00\x00\x00\xe4\x05\x00\x00\x00\x00\x00\x00\x00\x00\x12\x06\x00\x00\x8f\x05\x24\x04\x06\x04\xf8\x03\xc5\x03\xb6\x03\xad\x03\x9a\x03\x6b\x03\x59\x03\x46\x03\x3c\x03\x00\x00\xa5\x09\x1c\x06\xf2\x05\xc5\x00\x00\x00\x00\x00\x04\x06\x0b\x06\x00\x00\x00\x00\x00\x00\x64\x10\x00\x00\x68\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\xc0\x11\x00\x00\xd2\x1b\x00\x00\x00\x00\x1b\x06\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x11\xc6\x05\xf8\xff\x94\x0e\x94\x0e\xf0\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x16\x20\x0e\xfc\x05\x4f\x00\xc0\x11\x00\x00\xdc\x05\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\xae\x05\x00\x00\x00\x00\x00\x00\xa4\x19\x00\x00\x00\x00\x00\x00\xf0\x05\x6a\x00\x08\x0a\x00\x00\x0f\x0a\xcb\x0a\x00\x00\x00\x00\xb5\x0a\x48\x00\xe1\x05\xde\x05\xee\x18\x1b\x1b\x76\x05\x8a\x05\x00\x00\x00\x00\x0e\x01\x81\x05\xc0\x11\xc0\x11\x00\x00\x00\x00\xcc\x05\xb2\x05\x1b\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x08\x24\x13\xc3\x05\x4f\x00\xc0\x11\xbd\x05\xb6\x05\x6d\x15\x81\x14\xb6\x05\x00\x00\xe4\x19\x00\x00\x00\x00\x48\x05\xa5\x05\xf9\x12\x00\x00\xb6\x06\x96\x05\x3f\x05\x36\x05\x38\x05\x00\x00\x91\x1a\x00\x00\x6f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x05\x00\x00\x31\x05\x14\x05\x22\x09\x78\x05\x00\x00\x00\x00\x7b\x05\x63\x05\x00\x00\x00\x00\x00\x00\x6b\x05\x00\x00\xb0\x05\x00\x00\x00\x00\x00\x00\xc0\x11\x57\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x05\x00\x00\x00\x00\x00\x00\xe4\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x18\x00\x00\x1b\x1b\x00\x00\x00\x00\x34\x12\x3d\x05\x4f\x00\x00\x00\x1b\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x27\x05\x00\x00\x00\x00\x33\x05\xcb\x1b\x8b\x0a\x3b\x05\x00\x00\x00\x00\x1b\x1b\xc0\x04\x75\x0a\x00\x00\x1b\x1b\x1b\x1b\xbe\x04\x00\x00\x00\x00\x00\x00\x45\x01\x18\x05\x4f\x00\x0c\x05\x1b\x05\x00\x00\x00\x00\x19\x05\x17\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x6d\x03\x00\x00\xfd\x04\x00\x00\xc0\x11\xc0\x11\xc0\x11\x00\x00\x00\x00\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\x54\x16\xc0\x11\x99\x04\xe5\x04\x00\x00\xf0\x0f\xc0\x11\x7c\x0f\xee\x04\xe1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x04\x31\x01\xcb\x04\x00\x00\x3b\x1a\xc5\x04\x00\x00\x1b\x1b\x00\x00\xd6\x01\xdd\x01\x00\x00\x00\x00\xd8\x04\x1b\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x19\x51\x1a\xc2\x04\xe4\x19\x09\x14\xc7\x04\x4d\x05\xe4\x19\x00\x00\x00\x00\x0a\x19\xbc\x04\xfe\x1a\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00\xc6\x04\x00\x00\x6d\x05\x00\x00\x54\x16\x00\x00\x00\x00\x67\x01\x00\x00\x00\x00\x00\x00\x00\x00\xba\x04\xb3\x04\x6b\x04\x4a\x04\x00\x00\x00\x00\xe4\x19\x8c\x04\x89\x04\x80\x04\x80\x04\xac\x12\x7e\x04\x00\x00\x00\x00\x40\x1c\x35\x0a\xd4\x1a\xd4\x1a\xe4\x19\xba\x01\x7e\x04\xa3\x04\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x47\x04\xc0\x11\x00\x00\x00\x00\x00\x00\xc0\x11\x02\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x1a\xf9\x03\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x19\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x1c\x1c\x04\x0a\x04\x30\x00\x6d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x04\x00\x00\xc0\x11\x00\x00\x00\x00\xd4\x1a\x00\x00\x00\x00\x00\x00\x2c\x04\x00\x00\xb5\x1b\x00\x00\x21\x04\x12\x04\x00\x00\x00\x00\x00\x00\x0d\x04\x09\x12\x03\x04\x2a\x1c\x00\x00\x00\x00\x00\x00\x63\x01\x00\x00\xef\x03\x00\x00\x00\x00\x00\x00"#
-
-happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x02\x00\x31\x23\xb1\x25\xae\x01\xe7\x05\xe9\x1f\x01\x00\xff\xff\xfe\xff\x44\x02\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x08\x00\x00\x00\x00\x00\x00\x8c\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x23\x82\x03\x99\x23\x00\x00\xf5\x16\x76\x2c\x5a\x16\x5b\x2c\x9b\x25\x00\x00\xde\x22\xc8\x22\x69\x2a\xd4\x05\x2f\x03\xca\x07\x88\x01\x00\x00\xa4\x04\xc1\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x29\x95\xff\x00\x00\x59\x29\xef\xff\x84\xff\xdd\x2a\x83\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x07\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x03\x8d\x04\x48\x07\xa4\x03\x00\x00\xc6\x03\x00\x00\xf8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x0d\x34\x2c\x00\x00\xe4\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x06\xec\xff\x00\x00\xd7\x02\xaa\x03\x9f\x03\xc4\x03\x98\x03\x34\x05\xa7\x04\xbd\x02\xbc\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\xfc\xff\x94\x04\x60\x05\xf8\x02\x19\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x03\x2c\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x03\x38\x03\x00\x00\x00\x00\xd1\x01\xad\x06\x98\x02\x8e\x01\x00\x00\x7c\x07\x35\x07\xd2\x03\x00\x00\x00\x00\x18\x00\x04\x00\x42\x03\x96\x06\x48\x01\x83\x06\x53\x03\x6e\x03\x66\x03\xaa\x04\x9a\x04\x00\x00\x00\x00\x7f\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x9d\x03\x00\x00\x00\x00\xc1\x05\x00\x00\x00\x00\x00\x00\x03\x01\x9d\x05\xf9\xff\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\xa4\x01\x00\x00\xb2\x00\x00\x00\x00\x00\x5d\x02\x5c\x06\xe7\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x1f\xf0\x1e\x00\x00\x00\x00\xe8\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\xff\x07\x03\x00\x00\x00\x00\x00\x00\x34\x02\x2b\x01\x00\x00\x00\x00\x7c\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x2b\x00\x00\x90\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x24\xb3\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x16\x00\x00\x00\x00\x1e\x07\xa6\x2b\x90\x2b\x75\x22\xa5\x00\x00\x00\x7f\x2a\x86\x05\x43\x29\xf1\x28\xdb\x28\x89\x28\xa9\x02\x00\x00\x59\x05\x0f\x00\x48\x02\x00\x00\x04\x02\x00\x00\x00\x00\x44\x05\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x24\x00\x00\x00\x00\xaf\x02\x00\x00\x00\x00\x49\x25\x73\x28\x00\x00\x00\x00\x00\x00\x00\x00\x09\x24\x00\x00\xb7\x23\x21\x28\x58\x1c\x00\x00\x0b\x28\xb9\x27\x00\x00\x9d\x1e\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x02\x90\x04\x00\x00\x00\x00\x42\x04\x33\x2b\x00\x00\x87\xff\xa3\x27\x51\x27\x00\x00\x3b\x27\x00\x00\xb2\x02\x4a\x1e\x74\x02\xe9\x26\xd3\x26\x00\x00\xe0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x06\x00\x00\x00\x00\xa8\x04\x00\x00\x00\x00\x25\x06\x00\x00\x00\x00\x00\x00\x3d\x01\x0e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x03\xff\x00\xeb\x02\xdf\x02\x96\x04\x8e\x04\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x02\xc5\x02\x00\x00\x5f\x22\xf7\x1d\xb4\x02\xf3\x02\x00\x00\x00\x00\xea\xff\xa8\x02\x31\x03\xa2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x02\xf7\x01\x00\x00\x00\x00\x47\x02\x41\x02\x00\x00\x00\x00\x8a\x02\x97\x03\x5f\x05\x00\x00\x00\x00\x00\x00\x7d\x03\x00\x00\x00\x00\x00\x00\xb9\x02\xb6\x02\x00\x00\xb7\x05\x00\x00\x00\x02\x00\x00\x00\x00\x75\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x00\x00\x00\x00\x46\x02\x00\x00\xdc\x04\xd3\x04\x00\x00\x67\x00\x01\x02\x1d\x2b\xc8\x02\x9c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x2a\x17\x00\x2b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x07\x00\x00\x4c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x04\x00\x00\x7a\x02\x75\x04\x00\x00\x00\x00\x00\x00\x3e\x00\x24\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x00\x00\x00\x00\xbb\xff\xf3\x01\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\xc0\x00\x39\x05\x00\x00\x00\x00\x00\x00\x3d\x07\x69\x02\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x40\x02\xe5\x01\x00\x00\xaa\xff\x30\x02\x38\x02\x00\x00\x00\x00\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x01\x00\x00\x00\x00\x81\x26\x00\x00\x65\x01\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x26\x00\x00\x00\x00\xfe\x1c\xab\x1c\x96\x1f\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x4e\x2b\xcb\x24\x00\x00\xaa\x01\x19\x26\x00\x00\x00\x00\x00\x00\x57\x04\x00\x00\x00\x00\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\x29\x04\x2c\x00\x28\x00\x00\x00\x00\x00\xfd\x03\x1e\x00\x00\x00\xe0\x07\x69\x07\x00\x00\x00\x00\x73\x05\x47\x00\x00\x00\x00\x00\xdb\x03\xd0\x07\x00\x00\xfc\x03\x00\x00\x00\x00\xa0\x01\x00\x00\xf6\x21\xa3\x21\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x03\x2a\x00\x1a\x00\x47\x03\xe8\x03\x00\x00\xde\x02\x00\x00\x77\x01\x8d\x21\xbc\xff\x00\x00\xc7\x2a\xc6\x02\x00\x00\x00\x00\x13\x02\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\x00\x00\x61\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x00\x00\xae\x03\x00\x00\x00\x00\x32\x02\x00\x00\x26\x02\x00\x00\x7d\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x00\x00\x00\x00\x3a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x05\x00\x00\x5a\x03\x00\x00\x00\x00\x00\x00\x7a\x02\x00\x00\xbe\x03\x00\x00\x00\x00\x1b\x02\x00\x00\x2c\x01\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\xff\x55\x01\x1e\x01\x00\x00\x00\x00\xc0\x07\x00\x00\xe0\x07\x00\x00\x4d\x02\xa9\x07\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x18\x04\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\x24\x21\xd1\x20\xbb\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x03\x33\x25\x46\x01\x0a\x01\x00\x00\x51\x1d\x68\x20\xe1\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\xe0\x07\x00\x00\x00\x00\xe0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x02\x00\x00\x00\x00\xfb\x05\x90\x03\x00\x00\xfe\x04\x32\x03\x00\x00\xda\x00\xea\x04\x00\x00\x00\x00\x5f\x00\x00\x00\x11\x00\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\xbb\x00\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\xb5\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\xf0\x00\xce\x00\x64\x02\x00\x00\x00\x00\x00\x00\xbd\x00\x05\x04\x96\x07\x91\x07\xc4\x04\xb0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x20\x00\x00\x00\x00\x00\x00\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x04\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\xcd\x00\xf2\x03\x66\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x26\x00\x00\x00\x00\x70\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\xb5\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xfd\xb5\xfd\x00\x00\xe5\xff\xed\xff\x00\x00\x00\x00\x10\xfe\xc7\xfe\xc5\xfe\xbf\xfe\xbe\xfe\xbc\xfe\xba\xfe\xb5\xfe\xb0\xfe\xab\xfe\xa3\xfe\x9f\xfe\x91\xfe\x00\x00\x00\x00\x9c\xfe\x9d\xfe\x9e\xfe\x00\xfe\xfb\xfd\xd9\xfd\xe2\xfd\xf9\xfd\xf6\xfd\xd3\xfd\x9b\xfe\xe0\xfd\xe1\xfd\xd5\xfd\xd4\xfd\xd1\xfd\xd2\xfd\xbf\xfd\xbd\xfd\xbe\xfd\xbc\xfd\xbb\xfd\xba\xfd\xb9\xfd\xb8\xfd\xb7\xfd\xb6\xfd\x00\x00\x00\x00\x00\x00\x95\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xfd\x00\x00\x00\x00\x86\xfe\x00\x00\x00\x00\xdc\xfd\xd8\xfd\xd7\xfd\xd6\xfd\xdb\xfd\xda\xfd\xdf\xfd\x00\x00\xb5\xfd\xdd\xfd\x00\x00\xb5\xfd\xb5\xfd\x00\x00\xb5\xfd\xde\xfd\x00\x00\x00\x00\x00\x00\x47\xff\x2e\xff\x4e\xff\x44\xff\x42\xff\x3b\xff\x00\x00\x31\xff\x00\x00\x00\x00\xae\xfd\x34\xff\x41\xff\x00\x00\x00\x00\x00\x00\x27\xff\x85\xff\xad\xff\x00\x00\x00\x00\x90\xff\x86\xff\x7f\xff\x84\xff\x97\xff\xbe\xfe\x00\x00\x00\x00\x00\x00\x8f\xff\x00\x00\x00\x00\xab\xff\xaa\xff\xa9\xff\x00\x00\xb5\xfd\x8e\xff\x00\x00\x64\xff\x64\xff\x00\x00\x64\xff\x66\xff\x58\xff\x58\xff\x00\x00\x1b\xfe\x00\x00\x00\x00\xc7\xfe\x00\x00\xe5\xff\xf4\xff\xf2\xff\xb5\xfd\x00\x00\xe5\xff\x00\x00\x00\x00\x00\x00\x53\xff\x54\xff\xff\xfd\xf8\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x59\xff\x00\x00\x56\xff\x00\x00\x00\x00\x67\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xff\x00\x00\x00\x00\x76\xff\x00\x00\xd9\xff\xd9\xff\xdd\xfe\x00\x00\x8b\xff\x00\x00\x21\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe8\xfd\xe7\xfd\x00\x00\xec\xfd\xe3\xfd\xd0\xfd\xf2\xfd\xcd\xfd\xcc\xfd\xc9\xfd\xce\xfd\xc0\xfd\xcf\xfd\x00\x00\x00\x00\xc6\xfd\xe4\xfd\x00\x00\xc8\xfd\xc7\xfd\xc5\xfd\xed\xfe\x00\x00\x00\x00\xac\xff\x00\x00\x00\x00\x38\xff\x2a\xff\x00\x00\x00\x00\x36\xff\x84\xfe\x2a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3a\xff\x00\x00\x00\x00\x2f\xff\x45\xff\x00\x00\x32\xff\x00\x00\xac\xfd\xab\xfd\x00\x00\x00\x00\x00\x00\x2d\xff\x00\x00\x00\x00\x00\x00\x0f\xfe\x15\xfe\x15\xfe\x00\x00\xa8\xfe\x00\x00\xb1\xfe\x12\xfe\x00\x00\xb2\xfe\x00\x00\x00\x00\x43\xfe\x70\xfe\x6c\xfe\x6f\xfe\x6e\xfe\x6d\xfe\x68\xfe\x67\xfe\x66\xfe\x65\xfe\x64\xfe\x63\xfe\x62\xfe\x61\xfe\x60\xfe\x5f\xfe\x6a\xfe\x69\xfe\x5e\xfe\x5d\xfe\x5c\xfe\x5b\xfe\x5a\xfe\x59\xfe\x58\xfe\x57\xfe\x56\xfe\x55\xfe\x54\xfe\x53\xfe\x52\xfe\x51\xfe\x50\xfe\x4f\xfe\x4e\xfe\x4d\xfe\x4c\xfe\x4b\xfe\x4a\xfe\x49\xfe\x48\xfe\x6b\xfe\x47\xfe\x46\xfe\x45\xfe\x87\xfe\x88\xfe\x00\x00\x00\x00\x00\x00\x8a\xfe\x89\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xfe\x00\x00\x00\x00\x7c\xfe\x00\x00\x1a\xfe\xb3\xfe\xa4\xfe\x00\x00\xa9\xfe\x83\xfe\x3f\xfe\x00\x00\x3e\xfe\xe6\xfd\xe5\xfd\x00\x00\xf0\xfd\xcb\xfd\xca\xfd\xc4\xfd\x04\xfe\x00\x00\xc2\xfd\xc3\xfd\xc1\xfd\x00\x00\x02\xfe\x83\xfe\x00\x00\x00\x00\x00\x00\xec\xfd\x00\x00\xca\xfd\xc4\xfd\x05\xfe\xc2\xfd\xc8\xfd\xc3\xfd\xc1\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\xfe\xc4\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\x00\x00\x00\x00\xf7\xff\xe5\xff\xf6\xff\x00\x00\xd9\xff\xe8\xff\xda\xff\x00\x00\xed\xff\xef\xff\xb3\xfd\xb4\xfd\xc0\xfe\xc1\xfe\xc2\xfe\xc3\xfe\xc6\xfe\xbd\xfe\xbb\xfe\x00\x00\x0d\xfe\x0b\xfe\xa2\xfe\x0a\xfe\x11\xfe\xa5\xfe\xa6\xfe\x00\x00\x49\xff\xfa\xfd\xf5\xfd\x94\xfe\x00\x00\x99\xfe\x9a\xfe\x00\x00\x03\xfe\x85\xfe\x00\x00\x00\x00\x01\xfe\x00\x00\x00\x00\x82\xfe\x00\x00\x96\xfe\x00\x00\x3d\xfe\x00\x00\xaa\xfe\x00\x00\x00\x00\x93\xfe\x00\x00\x8f\xfe\x8e\xfe\x8d\xfe\x8c\xfe\x00\x00\xd9\xff\xa4\xff\x00\x00\x00\x00\x40\xfe\x77\xfe\xb5\xfd\x00\x00\x00\x00\xa7\xfe\x00\x00\x00\x00\x13\xfe\x15\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xff\x4b\xff\x00\x00\x4c\xff\x4d\xff\x48\xff\x39\xff\x33\xff\x37\xff\x00\x00\x40\xff\x3d\xff\x00\x00\x35\xff\x3f\xff\x00\x00\x3e\xff\x28\xff\x26\xff\x00\x00\x00\x00\xae\xff\xea\xfd\xe9\xfd\xa7\xff\xee\xfd\xf4\xfd\x00\x00\xed\xfe\xf9\xfe\x1a\xff\x00\x00\x0f\xff\x81\xff\x00\x00\x00\x00\x72\xff\xcf\xfe\xcb\xfe\xc9\xfe\x00\x00\x00\x00\xcf\xfe\x6c\xff\x71\xff\x70\xff\x00\x00\xe9\xfe\x23\xff\xed\xfe\x00\x00\x8c\xff\x49\xff\x8d\xff\x99\xff\x9a\xff\xb5\xfd\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xff\xed\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xff\x68\xff\x94\xff\x5a\xff\x93\xff\x00\x00\x57\xff\x92\xff\x00\x00\x51\xff\x00\x00\x00\x00\x91\xff\x50\xff\xe2\xff\xb2\xfd\xb1\xfd\x00\x00\x43\xfe\xe7\xff\xd9\xff\xd9\xff\x00\x00\xdc\xff\x00\x00\x40\xfe\x00\x00\xd7\xff\x00\x00\x00\x00\xfe\xfd\xf7\xfd\x52\xff\x55\xff\x5b\xff\x69\xff\x00\x00\x00\x00\x00\x00\x00\x00\x63\xff\x00\x00\x79\xff\x77\xff\x7a\xff\x7d\xff\x7e\xff\xa3\xff\x4a\xff\xa2\xff\x00\x00\x74\xff\x82\xff\x75\xff\x83\xff\xd9\xff\x87\xff\xcd\xfe\xd9\xff\x07\xfe\x9e\xfe\xdb\xff\xd9\xff\xd9\xff\x98\xff\x9e\xff\x00\x00\x00\x00\x20\xff\x1e\xff\x9b\xff\xb5\xfd\x95\xff\x00\x00\xfd\xfd\x00\x00\x00\x00\x00\x00\x6f\xff\x6e\xff\x6d\xff\xd1\xfe\xb5\xfd\x28\xfe\x00\x00\x2a\xfe\x00\x00\xb5\xfd\xcc\xfe\xca\xfe\xd2\xfe\x00\x00\x00\x00\xf1\xfd\x15\xff\x13\xff\x00\x00\x27\xff\xec\xfe\xf3\xfe\xf2\xfe\x00\x00\xef\xfe\xf0\xfe\xf9\xfe\xb5\xfd\xa0\xff\x00\x00\xf9\xfe\x1a\xff\x00\x00\x00\x00\x00\x00\x30\xff\x00\x00\x29\xff\x00\x00\x2b\xff\xad\xfd\x2c\xff\x00\x00\xae\xfe\xaf\xfe\x18\xfe\x16\xfe\x17\xfe\x15\xfe\x19\xfe\xb6\xfe\xb8\xfe\x00\x00\xb4\xfe\xd9\xff\xd9\xff\x41\xfe\x00\x00\x44\xfe\x00\x00\xe0\xfd\xd1\xfd\xdc\xfd\xd8\xfd\xd7\xfd\xd6\xfd\xdb\xfd\xda\xfd\xdf\xfd\xdd\xfd\xde\xfd\x71\xfe\xda\xff\xa6\xff\x00\x00\x00\x00\x7d\xfe\xb9\xfe\x39\xfe\x35\xfe\x33\xfe\x32\xfe\x31\xfe\x00\x00\x3b\xfe\x83\xfe\x37\xfe\x38\xfe\xeb\xfd\xef\xfd\x81\xfe\x7a\xfe\x7b\xfe\x97\xfe\x98\xfe\x00\x00\x7e\xfe\xa0\xfe\x00\x00\xa1\xfe\x00\x00\xee\xff\xeb\xff\x00\x00\x00\x00\xea\xff\xec\xff\xe9\xff\x0e\xfe\x0c\xfe\x80\xfe\x7f\xfe\x3c\xfe\x30\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x92\xfe\x8b\xfe\xa5\xff\x75\xfe\x78\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\xfe\x00\x00\x3c\xff\x00\x00\xa8\xff\xed\xfd\xf3\xfd\xf9\xfe\x9d\xff\xf8\xfe\xf4\xfe\x00\x00\xd9\xff\xd9\xff\x9f\xff\x00\x00\x00\x00\x00\x00\x02\xff\x0a\xff\x00\x00\x11\xff\x0e\xff\x09\xff\x00\x00\x00\x00\x34\xff\x00\x00\x00\x00\x00\x00\x0f\xff\x80\xff\x73\xff\x00\x00\x27\xfe\x00\x00\x00\x00\xd0\xfe\x96\xff\x00\x00\x00\x00\x00\x00\xd9\xff\xd9\xff\x23\xff\x23\xff\x22\xff\xdb\xfe\x00\x00\x00\x00\x00\x00\xda\xff\x09\xfe\x00\x00\xda\xff\x8a\xff\xa1\xff\x00\x00\x7c\xff\x62\xff\x00\x00\x00\x00\x5f\xff\x5d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xff\xd3\xff\xf3\xff\x00\x00\xe0\xff\xd9\xff\xc9\xff\xde\xff\xc6\xff\xe1\xff\xc4\xff\x00\x00\xda\xff\xdd\xff\x75\xfe\xf0\xff\x00\x00\xd3\xff\xd1\xff\xd0\xff\xaf\xfd\xcf\xff\xd4\xff\x00\x00\xe6\xff\xe4\xff\xe3\xff\x00\x00\x00\x00\x5e\xff\x60\xff\x7b\xff\x78\xff\x88\xff\x08\xfe\x00\x00\x06\xfe\xde\xfe\xdf\xfe\x00\x00\xd6\xfe\xd9\xff\xd9\xfe\xd7\xfe\xd8\xfe\xcd\xfe\x8f\xff\x00\x00\x1d\xff\x1f\xff\xe7\xfe\x00\x00\x00\x00\x6a\xff\x00\x00\xfc\xfd\xc8\xfe\x29\xfe\x14\xff\x00\x00\x01\xff\x43\xff\x00\x00\x00\x00\x00\x00\x00\x00\x05\xff\x06\xff\x00\x00\x00\x00\x0a\xff\x12\xff\x00\x00\x00\x00\x00\x00\x10\xff\xf1\xfe\xee\xfe\x00\x00\x00\x00\x00\x00\xf5\xfe\x00\x00\xf7\xfe\x9c\xff\x00\x00\x00\x00\xb7\xfe\x25\xfe\x26\xfe\xd9\xff\x22\xfe\x00\x00\x42\xfe\x00\x00\x2b\xfe\x36\xfe\x34\xfe\x00\x00\x00\x00\x00\x00\x3a\xfe\x2f\xfe\x2d\xfe\x2e\xfe\x72\xfe\x76\xfe\x74\xfe\x00\x00\x00\x00\xcf\xfe\x1f\xfe\x1d\xfe\x00\x00\x00\x00\xda\xff\x24\xfe\x00\x00\x25\xff\xf6\xfe\x1b\xff\x1c\xff\xd9\xff\x17\xff\x00\x00\x00\x00\x00\x00\x08\xff\x00\x00\x00\x00\x04\xff\x46\xff\x0d\xff\x00\x00\x00\x00\xfe\xfe\x0c\xff\x33\xff\x00\x00\x6b\xff\xea\xfe\xeb\xfe\xe4\xfe\xd9\xff\xe5\xfe\xe3\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\xdc\xfe\xed\xfe\x00\x00\x65\xff\xcb\xff\x00\x00\x00\x00\xd4\xff\xd5\xff\x00\x00\xca\xff\xdf\xff\xc7\xff\xc2\xff\xc5\xff\x00\x00\xc3\xff\x00\x00\xd2\xff\xd6\xff\x00\x00\xb1\xff\xb0\xff\xaf\xff\xcd\xff\x00\x00\x00\x00\xf9\xfe\x1a\xff\xda\xfe\xce\xfe\x00\x00\x00\x00\x47\xff\xed\xfe\xed\xfe\xda\xff\xe8\xfe\x00\xff\x0b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\x19\xff\x00\x00\x23\xfe\x20\xfe\x00\x00\x1e\xfe\x21\xfe\x7c\xfe\x00\x00\x00\x00\x00\x00\x2c\xfe\x79\xfe\x73\xfe\x00\x00\x00\x00\x18\xff\x16\xff\x07\xff\x03\xff\xfc\xfe\xfd\xfe\x00\x00\x00\x00\xff\xfe\xe6\xfe\xe0\xfe\xe2\xfe\x00\x00\xd5\xfe\xf9\xfe\xd4\xfe\x5c\xff\xce\xff\xcc\xff\x00\x00\x00\x00\xc0\xff\xbe\xff\x00\x00\xf1\xff\xb2\xff\xd3\xfe\xe1\xfe\x00\x00\xfb\xfe\x00\x00\x1c\xfe\xad\xfe\x00\x00\xc1\xff\xc8\xff\xbf\xff\x00\x00\xbb\xff\xd3\xff\xfa\xfe\x00\x00\xd3\xff\xb8\xff\xb7\xff\xb0\xfd\xb6\xff\x00\x00\x00\x00\xd4\xff\xbc\xff\xb9\xff\xbd\xff\x00\x00\xb4\xff\x00\x00\xb5\xff\xb3\xff"#
-
-happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x00\x00\x04\x00\x04\x00\x02\x00\x04\x00\x04\x00\x0b\x00\x11\x00\x12\x00\x13\x00\x2d\x00\x5c\x00\x07\x00\x11\x00\x36\x00\x32\x00\x0d\x00\x0e\x00\x2d\x00\x33\x00\x6b\x00\x07\x00\x8e\x00\x32\x00\x2d\x00\x1d\x00\x1e\x00\x2d\x00\x24\x00\x32\x00\x1c\x00\x36\x00\x32\x00\x3b\x00\x3c\x00\x13\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x5b\x00\x5c\x00\xa4\x00\x1c\x00\x0c\x00\x2a\x00\xac\x00\xac\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\xd5\x00\x08\x00\x09\x00\x22\x00\x22\x00\x19\x00\xac\x00\x2a\x00\x6b\x00\x0d\x00\x0e\x00\x16\x00\x66\x00\x67\x00\x22\x00\x2d\x00\x0d\x00\x0e\x00\xc4\x00\x56\x00\x00\x00\x2f\x00\x09\x00\x3b\x00\x3c\x00\xcb\x00\xcc\x00\xd3\x00\xd3\x00\x24\x00\x25\x00\xd3\x00\x42\x00\x43\x00\x85\x00\x1c\x00\x09\x00\x47\x00\x0b\x00\x49\x00\x4a\x00\x4b\x00\x31\x00\x32\x00\x33\x00\xd3\x00\x4d\x00\x72\x00\xbb\x00\x24\x00\x17\x00\x1f\x00\x1e\x00\xb4\x00\x53\x00\xb7\x00\xc9\x00\xca\x00\xb9\x00\x1f\x00\x20\x00\x22\x00\xc9\x00\xca\x00\x14\x00\x15\x00\x27\x00\x1f\x00\x20\x00\x16\x00\xc6\x00\x5a\x00\x2d\x00\xc8\x00\x11\x00\x5a\x00\x84\x00\x21\x00\xbb\x00\x23\x00\x71\x00\x25\x00\x26\x00\x27\x00\x28\x00\xb7\x00\x61\x00\x15\x00\x2c\x00\x84\x00\x2e\x00\x2f\x00\xc9\x00\xca\x00\xb8\x00\x76\x00\x71\x00\x32\x00\x33\x00\x21\x00\xc6\x00\x23\x00\xb7\x00\x25\x00\x26\x00\x27\x00\x28\x00\xc5\x00\xc6\x00\xc7\x00\x2c\x00\x1c\x00\x2e\x00\x2f\x00\xc6\x00\xc7\x00\xb8\x00\xc6\x00\xd3\x00\xbb\x00\xb6\x00\x76\x00\xbc\x00\xb2\x00\xba\x00\xbf\x00\xd3\x00\xc1\x00\x1c\x00\xc5\x00\xc6\x00\xc7\x00\xd3\x00\xc9\x00\xca\x00\xd3\x00\xc6\x00\xc7\x00\xcc\x00\x84\x00\xca\x00\xcf\x00\xb8\x00\xb2\x00\xa5\x00\xbb\x00\x20\x00\xd7\x00\xd3\x00\xca\x00\xd3\x00\xd3\x00\xd6\x00\xd3\x00\xd3\x00\xc5\x00\xc6\x00\xc7\x00\xca\x00\xc9\x00\xca\x00\xa5\x00\xc6\x00\xc7\x00\xc6\x00\xc7\x00\x7a\x00\xc9\x00\xca\x00\xc6\x00\xc7\x00\x19\x00\x22\x00\xd7\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x33\x00\xd8\x00\x8b\x00\x8c\x00\x8d\x00\x43\x00\xd8\x00\x7a\x00\x4f\x00\x47\x00\x93\x00\x49\x00\x4a\x00\x4b\x00\x39\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xbf\x00\xb6\x00\x8b\x00\x8c\x00\x8d\x00\xba\x00\x63\x00\xb6\x00\x59\x00\x33\x00\x93\x00\xba\x00\x84\x00\xcc\x00\x22\x00\xb6\x00\x08\x00\xc6\x00\xc7\x00\xba\x00\x69\x00\xca\x00\xb5\x00\xc6\x00\xc7\x00\xb8\x00\xb9\x00\xca\x00\xbb\x00\x84\x00\x67\x00\xc6\x00\xc7\x00\xd6\x00\x46\x00\xca\x00\x48\x00\x39\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\x25\x00\x1a\x00\xb8\x00\xb9\x00\x5d\x00\xbb\x00\xd2\x00\x09\x00\xcc\x00\x0b\x00\x6f\x00\xcf\x00\x31\x00\x32\x00\x33\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x2e\x00\x6f\x00\x05\x00\x06\x00\x21\x00\x6b\x00\x23\x00\xd2\x00\x25\x00\x26\x00\x27\x00\x28\x00\x3a\x00\xb0\x00\xb1\x00\x2c\x00\x27\x00\x2e\x00\x2f\x00\x16\x00\x5d\x00\xb8\x00\xc4\x00\x6f\x00\x5d\x00\x1c\x00\x21\x00\xb6\x00\x23\x00\xcb\x00\xcc\x00\xba\x00\x27\x00\x28\x00\xc5\x00\xc6\x00\xc7\x00\x2c\x00\x6f\x00\x2e\x00\x2f\x00\x29\x00\x6f\x00\xc6\x00\xc7\x00\xb8\x00\xb6\x00\xca\x00\xc6\x00\xc7\x00\x17\x00\xc9\x00\xca\x00\x08\x00\x17\x00\x0a\x00\x08\x00\x09\x00\xc5\x00\xc6\x00\xc7\x00\x22\x00\xc6\x00\xc7\x00\x69\x00\x22\x00\xd8\x00\x43\x00\x44\x00\x45\x00\x26\x00\x47\x00\xd5\x00\x49\x00\x4a\x00\x4b\x00\xb8\x00\x2d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x25\x00\x46\x00\x47\x00\x25\x00\x49\x00\x4a\x00\x4b\x00\xc5\x00\xc6\x00\xc7\x00\x17\x00\x7a\x00\x31\x00\x32\x00\x33\x00\x31\x00\x32\x00\x33\x00\x18\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xaa\x00\x28\x00\x8b\x00\x8c\x00\x8d\x00\x22\x00\x65\x00\x7a\x00\xd4\x00\x26\x00\x93\x00\x05\x00\x06\x00\x7b\x00\x2b\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x05\x00\x06\x00\x8b\x00\x8c\x00\x8d\x00\x21\x00\x16\x00\x23\x00\x4a\x00\x4b\x00\x93\x00\x27\x00\x28\x00\xc6\x00\xc7\x00\x19\x00\x2c\x00\x16\x00\x2e\x00\x2f\x00\x22\x00\x17\x00\xb5\x00\x17\x00\x22\x00\xb8\x00\xb9\x00\x29\x00\xbb\x00\x43\x00\xca\x00\xd8\x00\x22\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\x17\x00\x22\x00\xb8\x00\xb9\x00\x1e\x00\xbb\x00\xd2\x00\x28\x00\x22\x00\xd4\x00\xb9\x00\x22\x00\xc6\x00\xc7\x00\x01\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x08\x00\x09\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xd2\x00\xbc\x00\xd8\x00\xb1\x00\xbf\x00\x21\x00\xc1\x00\x23\x00\xc6\x00\xc7\x00\xb8\x00\xc9\x00\xca\x00\xd8\x00\xd5\x00\x2b\x00\x2c\x00\xcc\x00\x2e\x00\x2f\x00\xcf\x00\x7a\x00\x11\x00\xc5\x00\xc6\x00\xc7\x00\xd8\x00\x94\x00\x19\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x17\x00\x22\x00\x8b\x00\x8c\x00\x8d\x00\x21\x00\x17\x00\x23\x00\x3f\x00\x40\x00\x93\x00\x22\x00\x30\x00\x31\x00\x01\x00\xb8\x00\x2c\x00\x16\x00\x2e\x00\x2f\x00\xd4\x00\x08\x00\x09\x00\xc6\x00\xc7\x00\x19\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x43\x00\x69\x00\x45\x00\x22\x00\x47\x00\x19\x00\x49\x00\x4a\x00\x4b\x00\x22\x00\xd8\x00\x4e\x00\x4f\x00\xb5\x00\x22\x00\x28\x00\xb8\x00\xb9\x00\x1e\x00\xbb\x00\xc6\x00\xc7\x00\x22\x00\xc9\x00\xca\x00\xcf\x00\x8e\x00\x7a\x00\x90\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x0d\x00\x0e\x00\x84\x00\xd8\x00\x86\x00\xd4\x00\x88\x00\xd2\x00\x94\x00\x8b\x00\x8c\x00\x8d\x00\x21\x00\x03\x00\x23\x00\x40\x00\x41\x00\x93\x00\x08\x00\x09\x00\x72\x00\x73\x00\x74\x00\x2c\x00\x59\x00\x2e\x00\x2f\x00\x47\x00\x7a\x00\x49\x00\x4a\x00\x4b\x00\x69\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xcd\x00\x84\x00\xcf\x00\x86\x00\xd1\x00\x88\x00\x0d\x00\x0e\x00\x8b\x00\x8c\x00\x8d\x00\x69\x00\xb3\x00\xb4\x00\xb5\x00\x43\x00\x93\x00\xb8\x00\xb9\x00\x47\x00\xbb\x00\x49\x00\x4a\x00\x4b\x00\xb6\x00\x25\x00\xd3\x00\x27\x00\xba\x00\x52\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcf\x00\x31\x00\x32\x00\x33\x00\xc6\x00\xc7\x00\xd3\x00\xd2\x00\xca\x00\x03\x00\xb9\x00\xc5\x00\xc6\x00\xc7\x00\xb5\x00\xc9\x00\xca\x00\xb8\x00\xb9\x00\xd4\x00\xbb\x00\x73\x00\x74\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x7a\x00\x99\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x0a\x00\x21\x00\x84\x00\x23\x00\x86\x00\xd8\x00\x88\x00\xd2\x00\x38\x00\x8b\x00\x8c\x00\x8d\x00\x2c\x00\x3a\x00\x2e\x00\x2f\x00\x7c\x00\x93\x00\xc4\x00\x6f\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xb6\x00\xcb\x00\xcc\x00\xcd\x00\xba\x00\xcf\x00\xd3\x00\xd1\x00\x28\x00\x0d\x00\x0e\x00\x45\x00\x46\x00\x47\x00\x48\x00\x2f\x00\xc6\x00\xc7\x00\x4c\x00\x6f\x00\xca\x00\xc6\x00\xc7\x00\xd4\x00\xc9\x00\xca\x00\x70\x00\xb5\x00\x43\x00\xd4\x00\xb8\x00\xb9\x00\x47\x00\xbb\x00\x49\x00\x4a\x00\x4b\x00\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\x35\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x7b\x00\xc6\x00\xc7\x00\x7b\x00\xc9\x00\xca\x00\xd8\x00\xd2\x00\xbd\x00\x59\x00\x93\x00\xc0\x00\x95\x00\xc2\x00\x8e\x00\xc4\x00\x90\x00\x7a\x00\x8e\x00\xd8\x00\x90\x00\x7f\x00\xcb\x00\xcc\x00\xcd\x00\xd4\x00\xcf\x00\x84\x00\xd1\x00\x86\x00\x2b\x00\x88\x00\x2d\x00\xb8\x00\x8b\x00\x8c\x00\x8d\x00\x69\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x93\x00\x28\x00\x30\x00\x31\x00\xc5\x00\xc6\x00\xc7\x00\xae\x00\x2f\x00\x84\x00\x27\x00\x86\x00\x29\x00\x88\x00\x0d\x00\x0e\x00\x8b\x00\x8c\x00\x8d\x00\x99\x00\x27\x00\x43\x00\x29\x00\x45\x00\x93\x00\x47\x00\xb6\x00\x49\x00\x4a\x00\x4b\x00\xba\x00\xd4\x00\x4e\x00\x4f\x00\xb5\x00\x01\x00\xd4\x00\xb8\x00\xb9\x00\x27\x00\xbb\x00\x29\x00\xc6\x00\xc7\x00\x54\x00\x55\x00\xca\x00\x57\x00\x58\x00\x0f\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x16\x00\x27\x00\xb5\x00\x29\x00\x8e\x00\xb8\x00\xb9\x00\xd2\x00\xbb\x00\x34\x00\x54\x00\x55\x00\xc6\x00\xc7\x00\x58\x00\xc9\x00\xca\x00\x34\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x56\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\xd8\x00\xd2\x00\x39\x00\x45\x00\x46\x00\x47\x00\x48\x00\x84\x00\x75\x00\x86\x00\x4c\x00\x88\x00\x0d\x00\x0e\x00\x8b\x00\x8c\x00\x8d\x00\x43\x00\x27\x00\x45\x00\x29\x00\x47\x00\x93\x00\x49\x00\x4a\x00\x4b\x00\xca\x00\x4f\x00\x4e\x00\x4f\x00\xd5\x00\x53\x00\x54\x00\x55\x00\x39\x00\x42\x00\x43\x00\x27\x00\x45\x00\x29\x00\x47\x00\x39\x00\x49\x00\x4a\x00\x4b\x00\x61\x00\x27\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x39\x00\xb9\x00\xc6\x00\xc7\x00\xb5\x00\x22\x00\xca\x00\xb8\x00\xb9\x00\x27\x00\xbb\x00\x29\x00\x74\x00\xb8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x52\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x42\x00\x43\x00\xd3\x00\xd8\x00\xd2\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x42\x00\x43\x00\x1a\x00\x1b\x00\x1c\x00\x47\x00\x8e\x00\x49\x00\x4a\x00\x4b\x00\x42\x00\x43\x00\x96\x00\x97\x00\x98\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x43\x00\x27\x00\x45\x00\x29\x00\x47\x00\x16\x00\x49\x00\x4a\x00\x4b\x00\xc6\x00\xc7\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x27\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x43\x00\x22\x00\x45\x00\xb9\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x54\x00\x55\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x16\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x27\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x32\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x5f\x00\x60\x00\xc6\x00\xc7\x00\x55\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x49\x00\xc9\x00\xca\x00\xd8\x00\x8e\x00\x6d\x00\x6e\x00\x43\x00\x68\x00\x45\x00\xd8\x00\x47\x00\x5b\x00\x49\x00\x4a\x00\x4b\x00\x6d\x00\x6e\x00\x4e\x00\x4f\x00\x29\x00\x51\x00\x2b\x00\xb8\x00\x84\x00\x8e\x00\x96\x00\x97\x00\x98\x00\x0d\x00\x0e\x00\xc6\x00\xc7\x00\x84\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x0d\x00\x0e\x00\xc6\x00\xc7\x00\x49\x00\xc9\x00\xca\x00\x6a\x00\xb9\x00\x2b\x00\xd8\x00\x2d\x00\xc6\x00\xc7\x00\x1c\x00\xc9\x00\xca\x00\x0d\x00\x0e\x00\xc4\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\x28\x00\xb9\x00\xd8\x00\x0f\x00\x10\x00\xc6\x00\xc7\x00\x0c\x00\xc9\x00\xca\x00\x29\x00\xd8\x00\xc4\x00\x29\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\x73\x00\xb9\x00\xd8\x00\xa8\x00\xa9\x00\xaa\x00\x6c\x00\x6d\x00\x6e\x00\x5b\x00\x29\x00\xd8\x00\x2b\x00\x17\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x17\x00\x45\x00\x17\x00\x47\x00\x0f\x00\x49\x00\x4a\x00\x4b\x00\x97\x00\x98\x00\x4e\x00\x4f\x00\xd8\x00\x51\x00\x0c\x00\x0d\x00\x0e\x00\xb9\x00\x1c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x0c\x00\x0d\x00\x0e\x00\x29\x00\x5e\x00\x5f\x00\x60\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x1d\x00\x45\x00\x32\x00\x47\x00\x28\x00\x49\x00\x4a\x00\x4b\x00\x32\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x6c\x00\x6d\x00\x6e\x00\x05\x00\x06\x00\x43\x00\x27\x00\x45\x00\x1c\x00\x47\x00\x73\x00\x49\x00\x4a\x00\x4b\x00\x2b\x00\x4d\x00\x4e\x00\x4f\x00\x6c\x00\x6d\x00\x6e\x00\x7d\x00\x7e\x00\x7f\x00\x43\x00\x8e\x00\x45\x00\x72\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\x0c\x00\x4d\x00\x4e\x00\x4f\x00\x7d\x00\x7e\x00\x7f\x00\x96\x00\x97\x00\x98\x00\x43\x00\x22\x00\x45\x00\x17\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x1e\x00\x4d\x00\x4e\x00\x4f\x00\x96\x00\x97\x00\x98\x00\x50\x00\x51\x00\x52\x00\x05\x00\x43\x00\x84\x00\x45\x00\x84\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x4d\x00\x4e\x00\x4f\x00\x81\x00\x82\x00\x83\x00\x0d\x00\x0e\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x32\x00\x45\x00\x1e\x00\x47\x00\xb6\x00\x49\x00\x4a\x00\x4b\x00\xba\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x0d\x00\x0e\x00\x08\x00\x09\x00\xb9\x00\x37\x00\x38\x00\xc6\x00\xc7\x00\x05\x00\x06\x00\xca\x00\x05\x00\x06\x00\x29\x00\x28\x00\x29\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x28\x00\x47\x00\x16\x00\x49\x00\x4a\x00\x4b\x00\x22\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x1c\x00\x49\x00\x4a\x00\x4b\x00\x84\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x74\x00\x47\x00\x79\x00\x49\x00\x4a\x00\x4b\x00\x73\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x05\x00\x06\x00\xb9\x00\x49\x00\x4a\x00\x84\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\x03\x00\x04\x00\xd8\x00\x84\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x25\x00\x45\x00\x84\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x1c\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x64\x00\x49\x00\x4a\x00\x28\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x1e\x00\x45\x00\x17\x00\x47\x00\x64\x00\x49\x00\x4a\x00\x4b\x00\x5f\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x7e\x00\x7f\x00\x28\x00\x29\x00\xb9\x00\x53\x00\x54\x00\x3e\x00\x3f\x00\x40\x00\x05\x00\x06\x00\x84\x00\x1d\x00\x40\x00\x41\x00\x1d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x5b\x00\x49\x00\x4a\x00\x4b\x00\x31\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x1e\x00\x47\x00\x56\x00\x49\x00\x4a\x00\x4b\x00\x05\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x2b\x00\x45\x00\x22\x00\x47\x00\x2b\x00\x49\x00\x4a\x00\x4b\x00\x41\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x1c\x00\xc6\x00\xc7\x00\x29\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x5d\x00\x47\x00\x0c\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x22\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x28\x00\x45\x00\x5b\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x24\x00\x73\x00\x4e\x00\x4f\x00\xd8\x00\x24\x00\x1d\x00\x5b\x00\x2d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x2b\x00\x45\x00\x1d\x00\x47\x00\xb6\x00\x49\x00\x4a\x00\x4b\x00\xba\x00\xb6\x00\x4e\x00\x4f\x00\xd8\x00\xba\x00\x2c\x00\x1d\x00\x28\x00\xb9\x00\x1d\x00\x22\x00\xc6\x00\xc7\x00\x2d\x00\x29\x00\xca\x00\xc6\x00\xc7\x00\x22\x00\x84\x00\xca\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x21\x00\x47\x00\x0f\x00\x49\x00\x4a\x00\x4b\x00\x0f\x00\x16\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x1e\x00\x47\x00\x4b\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x46\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x17\x00\x0f\x00\xb9\x00\x5f\x00\x28\x00\x01\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0c\x00\x21\x00\x84\x00\xd8\x00\x84\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x84\x00\x47\x00\x28\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\x1e\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x1e\x00\x45\x00\x1d\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x22\x00\x17\x00\x4e\x00\x4f\x00\xd8\x00\x73\x00\x73\x00\x28\x00\x73\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x2b\x00\x45\x00\x24\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\x5f\x00\x73\x00\x4e\x00\x4f\x00\xd8\x00\x24\x00\x27\x00\x5b\x00\x1c\x00\xb9\x00\x17\x00\x1e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x1d\x00\x24\x00\x24\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x61\x00\x47\x00\x1b\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\x22\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x05\x00\x45\x00\x74\x00\x47\x00\x84\x00\x49\x00\x4a\x00\x4b\x00\x1c\x00\x17\x00\x4e\x00\x4f\x00\xd8\x00\x22\x00\xc6\x00\xc7\x00\x17\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x17\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x21\x00\x2d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x44\x00\x45\x00\x2b\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x41\x00\x21\x00\x41\x00\xd8\x00\x4b\x00\x41\x00\x27\x00\x6d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x70\x00\x45\x00\x64\x00\x47\x00\x2d\x00\x49\x00\x4a\x00\x4b\x00\x84\x00\x0c\x00\x46\x00\x47\x00\xd8\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\xb9\x00\x43\x00\x4f\x00\x45\x00\x84\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x22\x00\x21\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x2b\x00\xb9\x00\x61\x00\x62\x00\x63\x00\x29\x00\x65\x00\x73\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x64\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x46\x00\x47\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x28\x00\x22\x00\x20\x00\x05\x00\x0f\x00\x6b\x00\x84\x00\xd8\x00\x1d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x85\x00\xb9\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x0f\x00\x61\x00\x62\x00\x63\x00\x20\x00\x65\x00\x1d\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x68\x00\xb9\x00\x16\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x5e\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x85\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0c\x00\xb9\x00\x28\x00\x85\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x0f\x00\xd8\x00\x0f\x00\xbb\x00\x0f\x00\x1d\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x1d\x00\xb9\x00\x1d\x00\xc6\x00\xc7\x00\x85\x00\xc9\x00\xca\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x1d\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x2c\x00\x85\x00\xd8\x00\x00\x00\x2c\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xd8\x00\xff\xff\xc6\x00\xc7\x00\xbb\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x49\x00\x4a\x00\x4b\x00\x01\x00\xff\xff\xff\xff\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xd8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xff\xff\xff\xff\xff\xff\xc4\x00\xd8\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd8\x00\xd9\x00\xda\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xd8\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xd8\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xd8\x00\xb8\x00\xff\xff\xff\xff\xbb\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xff\xff\x61\x00\x16\x00\xff\xff\xc5\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xff\xff\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xd8\x00\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\xff\xff\x2a\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x61\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\xff\xff\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x83\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xbd\x00\x18\x00\xff\xff\xc0\x00\xff\xff\xc2\x00\xff\xff\xc4\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xcb\x00\xcc\x00\xcd\x00\xff\xff\xcf\x00\x2a\x00\xd1\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\xff\xff\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x83\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xbd\x00\x18\x00\xff\xff\xc0\x00\xff\xff\xc2\x00\xff\xff\xc4\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xcb\x00\xcc\x00\xcd\x00\xff\xff\xcf\x00\x2a\x00\xd1\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\x01\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x01\x00\x6c\x00\xff\xff\x6e\x00\x05\x00\x06\x00\x71\x00\xff\xff\x09\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x16\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x16\x00\xff\xff\x18\x00\x83\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x25\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x16\x00\x01\x00\x18\x00\xff\xff\xff\xff\x05\x00\x06\x00\x31\x00\x32\x00\x33\x00\x20\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x32\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x01\x00\x18\x00\xff\xff\x80\x00\x05\x00\x06\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\x01\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x01\x00\x18\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x80\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x80\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x80\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\x7c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xbd\x00\x18\x00\xff\xff\xc0\x00\xff\xff\xc2\x00\xff\xff\xc4\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xcb\x00\xcc\x00\xcd\x00\xff\xff\xcf\x00\x2a\x00\xd1\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\x16\x00\x17\x00\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7b\x00\x7c\x00\x7d\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\x25\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x01\x00\x48\x00\x74\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x01\x00\x42\x00\x43\x00\x44\x00\x05\x00\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x6b\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x71\x00\x48\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x93\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb5\x00\x48\x00\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x93\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb5\x00\x48\x00\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x93\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb5\x00\x48\x00\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x61\x00\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x74\x00\x20\x00\x05\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x2d\x00\x27\x00\x28\x00\xff\xff\xff\xff\x16\x00\x17\x00\xff\xff\xff\xff\xff\xff\x01\x00\x31\x00\x32\x00\x33\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\xff\xff\x0b\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x20\x00\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x61\x00\x08\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\x74\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x16\x00\x2f\x00\x18\x00\x19\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x17\x00\x18\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\x74\x00\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\xff\xff\x16\x00\x01\x00\x18\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x74\x00\x20\x00\x21\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x01\x00\x16\x00\xff\xff\x18\x00\x05\x00\x06\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x01\x00\x18\x00\x03\x00\x04\x00\x05\x00\x06\x00\x74\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\x30\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\x5f\x00\xff\xff\x61\x00\x20\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x61\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\xff\xff\x5e\x00\xff\xff\xff\xff\x61\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\x68\x00\xff\xff\xff\xff\x16\x00\x01\x00\x18\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\x74\x00\x20\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x24\x00\x25\x00\x16\x00\x27\x00\x18\x00\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x20\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x74\x00\x18\x00\xff\xff\x61\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\xff\xff\xff\xff\xff\xff\x16\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x1e\x00\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\x26\x00\xff\xff\x01\x00\x61\x00\xff\xff\x20\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x74\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x16\x00\x74\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\x16\x00\x01\x00\x02\x00\x71\x00\xff\xff\xff\xff\x74\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x1e\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\x61\x00\x01\x00\x02\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x16\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x74\x00\xff\xff\x01\x00\x61\x00\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x16\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x16\x00\xff\xff\x01\x00\x61\x00\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x16\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x01\x00\x16\x00\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x16\x00\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x74\x00\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x24\x00\x25\x00\x61\x00\x27\x00\x28\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\x74\x00\xff\xff\xff\xff\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x74\x00\x61\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xff\xff\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x9f\x00\xa0\x00\xa1\x00\xff\xff\xa3\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xff\xff\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa2\x00\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa2\x00\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa2\x00\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\xff\xff\xff\xff\x92\x00\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x00\x9d\x00\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xa6\x00\xa7\x00\xff\xff\x93\x00\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xa7\x00\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x92\x00\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xd2\x00\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xd2\x00\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\x86\x00\xff\xff\x88\x00\xff\xff\xd2\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x93\x00\xff\xff\xff\xff\x96\x00\x97\x00\x98\x00\xff\xff\x9a\x00\x9b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x96\x00\x97\x00\x98\x00\xff\xff\x9a\x00\x9b\x00\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\x93\x00\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\x93\x00\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\x93\x00\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-
-happyTable :: HappyAddr
-happyTable = HappyA# "\x00\x00\x0c\x00\x09\x00\x0b\x00\x92\x00\x09\x00\x93\x00\x22\x02\x32\x03\x33\x03\x34\x03\xb6\x00\xf7\x03\xc8\x02\x20\x04\x03\x03\xff\x02\x7e\x01\xfe\x01\xb6\x00\xa7\x03\xe6\x02\x7c\x01\xe7\x00\x02\x03\xb6\x00\x21\x04\x22\x04\xb6\x00\xda\x01\xb7\x00\x4d\x02\x57\x02\x01\x01\x3f\x03\x1b\x03\xcb\x03\x7e\x01\xfe\x01\x7e\x01\x54\x03\x9c\x03\x9d\x03\x92\x02\x4d\x02\x0d\x02\xff\x01\xfa\x00\x00\x01\x7e\x01\x0c\x03\x7e\x01\xd9\x02\x7e\x01\x70\x03\x7e\x01\x54\x03\x7e\x01\x70\x03\x19\x04\xcd\x00\xce\x00\xac\x01\xd3\x02\xa1\x01\x03\x01\x01\x02\x9a\x00\x7e\x01\xd9\x02\xba\xff\xa8\x03\xa9\x03\x9e\x01\xf6\x03\x7e\x01\x0c\x03\xe8\x00\x85\x03\x83\x01\x0e\x02\xce\x00\x1a\x03\x1b\x03\xc7\x00\xc8\x00\xfb\x00\xfb\x00\xe1\x01\xd3\x00\x93\x02\xad\x03\x04\x02\xf5\xff\x11\x02\xce\x00\xb3\x00\xd0\x00\x61\x00\x62\x00\x63\x00\xd6\x00\xd7\x00\xd8\x00\xfb\x00\xf5\x03\x86\x03\x9e\x03\x64\x03\xea\x00\x84\x01\x2a\x04\x44\x03\xd6\x01\x05\x03\xe7\x02\x25\x00\x45\x03\x2c\x04\xce\x03\xe4\x00\x24\x00\x25\x00\x27\x03\x28\x03\xd4\x00\xcd\x03\xce\x03\x75\x02\x59\x02\x71\x03\xeb\x00\x23\x00\x27\x04\x72\x03\xc8\x02\x6f\x00\x9e\x03\x70\x00\x55\x03\x29\x03\xb3\x01\xb4\x01\x72\x00\x58\x02\x1e\x04\xc3\x03\x73\x00\xc4\x02\x74\x00\x75\x00\x24\x00\x25\x00\xe9\x01\x0d\x03\x56\x03\x76\x02\x77\x02\x6f\x00\x59\x02\x70\x00\x58\x02\xc4\x03\xb3\x01\xb4\x01\x72\x00\x20\x00\x21\x00\x22\x00\x73\x00\x13\x02\x74\x00\x75\x00\x21\x00\x1c\x03\x35\x03\x59\x02\xb8\x00\x36\x03\x23\x04\x0e\x03\xdb\x01\x00\x02\x24\x04\xdc\x01\xb8\x00\xdd\x01\x13\x02\x20\x00\x21\x00\x22\x00\xb8\x00\x24\x00\x25\x00\xb8\x00\x21\x00\x9e\x00\xde\x01\x12\x02\x9f\x00\xdf\x01\x35\x03\x02\x02\xda\x02\x36\x03\x10\x04\x37\x03\x23\x02\x7d\x01\x0a\x00\x0a\x00\x25\x04\x0a\x00\x0a\x00\x20\x00\x21\x00\x22\x00\x7d\x01\x24\x00\x25\x00\xdb\x02\x21\x00\x1c\x03\x21\x00\x68\x00\x76\x00\x69\x00\x25\x00\x21\x00\x68\x00\x0d\x04\xd3\x02\x37\x03\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\xa7\x03\x6a\x00\x16\x00\x17\x00\x18\x00\xc8\x01\xd7\x01\x76\x00\xc0\x00\xb3\x00\x19\x00\x61\x00\x62\x00\x63\x00\xd4\x02\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\x62\x03\x23\x04\x16\x00\x17\x00\x18\x00\x24\x04\xc1\x00\xcf\x03\x05\x04\xe8\x01\x19\x00\xd0\x03\x14\x02\xde\x01\xac\x01\xcf\x03\xcd\x00\x21\x00\x9e\x00\xd0\x03\x11\x04\x9f\x00\x1c\x00\x21\x00\x9e\x00\x1d\x00\x1e\x00\x9f\x00\x1f\x00\x17\x02\xff\x03\x21\x00\x9e\x00\x25\x04\x98\x00\x9f\x00\x99\x00\xad\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\xd3\x00\x68\x01\x1d\x00\x1e\x00\xd4\x03\x1f\x00\x26\x00\xce\x00\x19\x02\xd0\x00\x01\x04\x1a\x02\xd6\x00\xd7\x00\xd8\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x69\x01\xd5\x03\x2c\x00\x2d\x00\x6f\x00\x9a\x00\x70\x00\x26\x00\xb2\x01\xb3\x01\xb4\x01\x72\x00\x6a\x01\x8b\x01\x8c\x01\x73\x00\xd4\x00\x74\x00\x75\x00\xa0\x03\x7b\x02\x8d\x01\xb5\x01\x02\x04\xe2\x01\x4d\x02\x6f\x00\xcf\x03\x70\x00\xc7\x00\xc8\x00\xd0\x03\xd5\x02\x72\x00\x20\x00\x21\x00\x22\x00\x73\x00\x7c\x02\x74\x00\x75\x00\xf7\x01\xe3\x01\x21\x00\x9e\x00\xe9\x01\xfd\x02\x9f\x00\x21\x00\x68\x00\x31\x04\x69\x00\x25\x00\xcd\x00\x0a\x04\xcf\x00\xcd\x00\xce\x00\x20\x00\x21\x00\x22\x00\x0b\x04\x21\x00\x9e\x00\x06\x04\x0b\x04\x6a\x00\x5e\x00\xf8\x01\xf9\x01\xce\x02\x60\x00\x0c\x04\x61\x00\x62\x00\x63\x00\xe9\x01\xa0\x01\xdf\x00\x66\x00\xfa\x01\xe6\x00\xd3\x00\xef\x02\xa5\x03\xd3\x00\x61\x00\x62\x00\x63\x00\x20\x00\x21\x00\x22\x00\xd1\x01\x76\x00\xd6\x00\xd7\x00\xd8\x00\xd6\x00\xd7\x00\xd8\x00\xc8\x03\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\xec\x03\xd2\x01\x16\x00\x17\x00\x18\x00\xa7\x01\xa6\x03\x76\x00\x9a\x03\xa8\x01\x19\x00\x2c\x00\x2d\x00\xed\x03\xa9\x01\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\x2c\x00\x2d\x00\x16\x00\x17\x00\x18\x00\x6f\x00\xa0\x03\x70\x00\x33\x01\x63\x00\x19\x00\x71\x00\x72\x00\x21\x00\x68\x00\xe3\x00\x73\x00\xe9\x02\x74\x00\x75\x00\xd3\x02\xcd\x02\x1c\x00\xbc\x02\xe4\x00\x1d\x00\x1e\x00\x02\x03\x1f\x00\xc9\x01\x7e\x02\x0b\x03\xe4\x00\xb3\x00\xe4\x00\x61\x00\x62\x00\x63\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x9b\x01\x6b\x02\x1d\x00\x1e\x00\xe1\x03\x1f\x00\x26\x00\xe3\x03\xe2\x03\xae\x03\x67\x00\xe4\x00\x21\x00\x68\x00\x7a\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x79\x01\x96\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x26\x00\xdb\x01\x81\x02\xc9\x02\xdc\x01\x6f\x00\xe1\x02\x70\x00\x21\x00\x68\x00\x8d\x01\x69\x00\x25\x00\x6a\x00\xbd\x03\x46\x02\x47\x02\xde\x01\x74\x00\x75\x00\xdf\x01\x76\x00\xbf\x03\x20\x00\x21\x00\x22\x00\x6a\x00\xc2\x03\xd3\x01\x77\x00\x10\x00\x78\x00\x12\x00\x13\x00\x14\x00\x15\x00\xce\x01\x9e\x01\x16\x00\x17\x00\x18\x00\x6f\x00\xc6\x03\x70\x00\x30\x02\xa6\x00\x19\x00\x9e\x01\x42\x03\x39\x02\x78\x01\x08\x02\xb0\x03\x2c\x03\x74\x00\x75\x00\x47\x03\x79\x01\x96\x00\x21\x00\x68\x00\xd4\x01\x69\x00\x25\x00\x20\x00\x21\x00\x22\x00\x5e\x00\x76\x03\x5f\x00\xd5\x01\x60\x00\x5a\x01\x61\x00\x62\x00\x63\x00\x6b\x02\x34\x01\x3a\x02\x66\x00\x1c\x00\xe4\x00\x6c\x02\x1d\x00\x1e\x00\xc1\x02\x1f\x00\x21\x00\x68\x00\xc2\x02\x69\x00\x25\x00\x1a\x02\x98\x01\x76\x00\xcb\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xdd\x03\xde\x03\x48\x02\x6a\x00\x13\x00\x7a\x03\x15\x00\x26\x00\x80\x03\x16\x00\x17\x00\x18\x00\x6f\x00\x94\x00\x70\x00\x9a\x00\x7b\x01\x19\x00\x95\x00\x96\x00\xb1\x03\xb2\x03\xb3\x03\xb0\x03\xe4\x02\x74\x00\x75\x00\xa2\x03\x76\x00\x61\x00\x62\x00\x63\x00\xe5\x02\xcd\x00\xce\x00\xcf\x00\xd0\x00\x5f\x01\x48\x02\xca\x00\x13\x00\xcb\x00\x15\x00\xe6\x03\xe7\x03\x16\x00\x17\x00\x18\x00\xeb\x02\x49\x02\x4a\x02\x1c\x00\xca\x01\x19\x00\x1d\x00\x4b\x02\xb3\x00\x1f\x00\x61\x00\x62\x00\x63\x00\x9c\x00\xd3\x00\xe9\x02\xd4\x00\x9d\x00\xee\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x04\x03\xd6\x00\xd7\x00\xd8\x00\x21\x00\x9e\x00\x07\x03\x26\x00\x9f\x00\x24\x03\x67\x00\xa1\x01\x21\x00\x22\x00\x1c\x00\xa2\x01\x25\x00\x1d\x00\x1e\x00\x26\x03\x1f\x00\x00\x04\xb3\x03\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x76\x00\x28\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x2a\x02\x6f\x00\x48\x02\x70\x00\x13\x00\x6a\x00\x15\x00\x26\x00\x32\x02\x16\x00\x17\x00\x18\x00\x43\x03\x33\x02\x74\x00\x75\x00\xc2\x00\x19\x00\xb5\x01\x40\x02\xa3\x00\xa4\x00\xa5\x00\xa6\x00\x9c\x00\xc7\x00\xc8\x00\x5f\x01\x9d\x00\xca\x00\x4d\x02\xcb\x00\x49\x03\x95\x03\x96\x03\x8e\x03\x4a\x00\xcb\x03\x4b\x00\x4a\x03\x21\x00\x9e\x00\x90\x03\x50\x02\x9f\x00\x21\x00\x68\x00\x42\x02\x69\x00\x25\x00\x55\x02\x1c\x00\xb2\x00\x43\x02\x1d\x00\x1e\x00\xb3\x00\x1f\x00\x61\x00\x62\x00\x63\x00\x21\x00\x68\x00\x6a\x00\xa2\x01\x25\x00\x5c\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x60\x02\x21\x00\x68\x00\x69\x02\x69\x00\x25\x00\xc7\x01\x26\x00\xc3\x00\x77\x02\x8b\x03\xc4\x00\x8c\x03\x12\x03\x98\x01\xc6\x00\xba\x02\x76\x00\x98\x01\x6a\x00\x99\x01\x68\x02\xc7\x00\xc8\x00\xc9\x00\x8a\x02\xca\x00\x48\x02\xcb\x00\x13\x00\x94\x03\x15\x00\x95\x03\x09\x02\x16\x00\x17\x00\x18\x00\x79\x02\x4b\x03\x4c\x03\x4d\x03\x4e\x03\x19\x00\x49\x03\x19\x03\x39\x02\x20\x00\x21\x00\x22\x00\x8c\x02\x4a\x03\x4f\x03\x45\xfe\x13\x00\x45\xfe\x15\x00\xb8\x03\xb9\x03\x16\x00\x17\x00\x18\x00\xb7\x01\x57\xfe\x5e\x00\x57\xfe\x5f\x00\x19\x00\x60\x00\x9c\x00\x61\x00\x62\x00\x63\x00\x9d\x00\xa7\x02\x3a\x02\x66\x00\x1c\x00\x28\x00\x81\x01\x1d\x00\x1e\x00\x61\xfe\x1f\x00\x61\xfe\x21\x00\x9e\x00\x51\x02\x52\x02\x9f\x00\x53\x02\x54\x02\x5b\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x5c\x02\x62\xfe\x1c\x00\x62\xfe\xe1\x00\x1d\x00\x1e\x00\x26\x00\x1f\x00\xf0\x01\x51\x02\x52\x02\x21\x00\x68\x00\x53\x03\x69\x00\x25\x00\xf3\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xf4\x01\xd6\x03\x4d\x03\x4e\x03\x38\x02\x39\x02\x6a\x00\x26\x00\x0f\x02\x8e\x03\x4a\x00\x8f\x03\x4b\x00\x4f\x03\xfc\x01\x13\x00\x90\x03\x15\x00\x2e\x03\x2f\x03\x16\x00\x17\x00\x18\x00\x5e\x00\x63\xfe\x5f\x00\x63\xfe\x60\x00\x19\x00\x61\x00\x62\x00\x63\x00\x17\x02\x4c\x00\x3a\x02\x66\x00\x1d\x02\x50\x00\x51\x00\x52\x00\xab\x00\xd9\x03\xda\x03\x64\xfe\xdb\x03\x64\xfe\xb3\x00\xb0\x00\x61\x00\x62\x00\x63\x00\x55\x00\x65\xfe\x3f\x02\x65\xfe\x61\x00\x62\x00\x63\x00\xb1\x00\x67\x00\x21\x00\x7d\x02\x1c\x00\xda\x00\x7e\x02\x1d\x00\x1e\x00\x66\xfe\x1f\x00\x66\xfe\x5b\x00\x0e\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xdc\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x20\x00\x21\x00\x22\x00\xb6\x03\x04\x02\x3b\x01\x6a\x00\x26\x00\xb3\x00\x30\x04\x61\x00\x62\x00\x63\x00\x57\x03\x04\x02\x1a\x04\x1b\x04\x1c\x04\xb3\x00\x58\x01\x61\x00\x62\x00\x63\x00\x03\x02\x04\x02\x0b\x04\x07\x01\x08\x01\xb3\x00\x2c\x04\x61\x00\x62\x00\x63\x00\x5e\x00\x67\xfe\x5f\x00\x67\xfe\x60\x00\x27\x04\x61\x00\x62\x00\x63\x00\x21\x00\x3e\x03\xe4\x00\x66\x00\xe5\x00\xe6\x00\x6e\xfe\xc5\x01\x6e\xfe\x61\x00\x62\x00\x63\x00\x5e\x00\x29\x04\x5f\x00\x67\x00\x60\x00\x2a\x04\x61\x00\x62\x00\x63\x00\x51\x02\x52\x03\xe4\x00\x66\x00\xe5\x00\xe6\x00\x1f\x04\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x6f\xfe\x60\x00\x6f\xfe\x61\x00\x62\x00\x63\x00\x19\x04\xfb\x03\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5c\x03\x6f\x02\x21\x00\x68\x00\x0f\x04\x69\x00\x25\x00\xe7\x01\x21\x00\x22\x00\x10\x04\xa2\x01\x25\x00\x6a\x00\xe7\x00\x6e\x03\x73\x02\x5e\x00\xfc\x03\x5f\x00\x6a\x00\x60\x00\x7b\x02\x61\x00\x62\x00\x63\x00\xec\x02\x73\x02\xdf\x00\x66\x00\xce\xfe\x73\x03\xce\xfe\xad\x00\x14\x04\xe7\x00\xf0\x03\x07\x01\x08\x01\x10\x03\x11\x03\x21\x00\x68\x00\x16\x04\x69\x00\x25\x00\x20\x00\x21\x00\x22\x00\x13\x03\x14\x03\x21\x00\x68\x00\xf4\x03\x69\x00\x25\x00\x74\x03\x67\x00\x9f\x01\x6a\x00\xa0\x01\x21\x00\x68\x00\x4d\x02\x69\x00\x25\x00\xa5\x02\xa6\x02\x60\x03\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xc7\x00\xc8\x00\xe5\x01\x67\x00\x6a\x00\x21\x03\x22\x03\x21\x00\x68\x00\xf7\x03\x69\x00\x25\x00\x4f\xff\x6a\x00\xe8\x00\x04\x04\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xc7\x00\xc8\x00\x79\x02\x67\x00\x6a\x00\x90\x03\x91\x03\x92\x03\x77\x03\x72\x02\x73\x02\x7b\x02\xee\x01\x6a\x00\xef\x01\x08\x04\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x09\x04\x5f\x00\xcd\x03\x60\x00\xca\x03\x61\x00\x62\x00\x63\x00\xa4\x02\x08\x01\xdf\x00\x66\x00\x6a\x00\xe0\x00\x25\x02\x7e\x01\x26\x02\x67\x00\x4d\x02\xa7\x00\xa4\x00\xa5\x00\xa6\x00\x27\x02\x7e\x01\x26\x02\xd9\x03\x6d\x02\x6e\x02\x6f\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xf5\xfd\x5f\x00\xe4\x03\x60\x00\xe6\x03\x61\x00\x62\x00\x63\x00\xe5\x03\x12\x04\x65\x00\x66\x00\x6a\x00\x71\x02\x72\x02\x73\x02\xc2\x02\x74\x01\x5e\x00\xe9\x03\x5f\x00\x4d\x02\x60\x00\x62\x02\x61\x00\x62\x00\x63\x00\x94\x03\xf8\x03\x65\x00\x66\x00\x83\x02\x72\x02\x73\x02\xea\x01\xeb\x01\xec\x01\x5e\x00\xe1\x00\x5f\x00\xf2\x03\x60\x00\xd1\x02\x61\x00\x62\x00\x63\x00\x98\x03\x04\x04\x65\x00\x66\x00\xef\x01\xeb\x01\xec\x01\x21\x02\x07\x01\x08\x01\x5e\x00\xd5\x01\x5f\x00\x99\x03\x60\x00\x9a\x03\x61\x00\x62\x00\x63\x00\x9c\x03\xd3\x03\x65\x00\x66\x00\x06\x01\x07\x01\x08\x01\x5e\x02\x5f\x02\x60\x02\x2c\x00\x5e\x00\xa1\x03\x5f\x00\xa4\x03\x60\x00\x67\x00\x61\x00\x62\x00\x63\x00\xac\x03\xd7\x03\x65\x00\x66\x00\x76\x01\x77\x01\x78\x01\x7e\x01\xc5\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xad\x03\x5f\x00\xb0\x03\x60\x00\x9c\x00\x61\x00\x62\x00\x63\x00\x9d\x00\xba\x03\x65\x00\x66\x00\x6a\x00\x7e\x01\x7f\x01\x20\x02\x96\x00\x67\x00\xa8\x00\xa9\x00\x21\x00\x9e\x00\x73\x01\x74\x01\x9f\x00\x1f\x02\x20\x02\x10\x03\xe5\x01\xe6\x01\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xbc\x03\x60\x00\xbf\x03\x61\x00\x62\x00\x63\x00\xc1\x03\xfc\x02\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xc2\x03\x60\x00\x4d\x02\x61\x00\x62\x00\x63\x00\xc6\x03\x15\x03\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xc8\x03\x60\x00\x2e\x03\x61\x00\x62\x00\x63\x00\x3b\x03\x3e\x02\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x1f\x02\x20\x02\x67\x00\x31\x03\x32\x03\x3c\x03\x64\x03\x5f\x03\x62\x00\x63\x00\x3e\x03\x2a\x00\x2b\x00\x6a\x00\x3d\x03\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x41\x03\x5f\x00\x42\x03\x60\x00\x67\x00\x61\x00\x62\x00\x63\x00\x4d\x02\x88\x01\x65\x00\x66\x00\x6a\x00\x65\x03\xd7\x02\xd8\x02\x59\x03\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x49\x03\x5f\x00\x5a\x03\x60\x00\xbc\x01\x61\x00\x62\x00\x63\x00\x71\x02\xe1\x01\x65\x00\x66\x00\x6a\x00\x2c\x02\x2d\x02\xe5\x01\xe6\x01\x67\x00\xf2\x01\xf3\x01\x31\x02\xa5\x00\xa6\x00\x1f\x02\x20\x02\x5e\x03\xf6\xfd\x9a\x00\x9b\x00\x62\x03\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x70\x03\x60\x00\x7b\x02\x61\x00\x62\x00\x63\x00\x79\x03\xe6\x01\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x7c\x03\x60\x00\x87\x03\x61\x00\x62\x00\x63\x00\x2c\x00\x3c\x01\x65\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x9f\x01\x5f\x00\xd1\x02\x60\x00\xd2\x02\x61\x00\x62\x00\x63\x00\xd5\x02\x64\x00\x65\x00\x66\x00\x6a\x00\x4d\x02\x21\x00\x68\x00\xd9\x02\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xdd\x02\x60\x00\xdf\x02\x61\x00\x62\x00\x63\x00\xe0\x02\x29\xff\xdc\x03\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xe1\x02\x5f\x00\x7b\x02\x60\x00\x67\x00\x61\x00\x62\x00\x63\x00\xe3\x02\x79\x02\x80\x02\x66\x00\x6a\x00\xe4\x02\xeb\x02\x7b\x02\xee\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xfc\x02\x5f\x00\xba\x00\x60\x00\x9c\x00\x61\x00\x62\x00\x63\x00\x9d\x00\x9c\x00\x82\x02\x66\x00\x6a\x00\x9d\x00\x01\x03\xba\x00\x07\x03\x67\x00\x09\x03\x0a\x03\x21\x00\x9e\x00\x0b\x03\x10\x03\x9f\x00\x21\x00\x9e\x00\x17\x03\x18\x03\x9f\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x19\x03\x60\x00\x20\x03\x61\x00\x62\x00\x63\x00\x21\x03\x24\x03\x84\x02\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x2c\x03\x60\x00\x2a\x02\x61\x00\x62\x00\x63\x00\x2e\x02\x98\x00\xc6\x01\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x2f\x02\xab\x00\x67\x00\x35\x02\x36\x02\x28\x00\x1f\x04\x5f\x03\x62\x00\x63\x00\x37\x02\x38\x02\x3c\x02\x6a\x00\x3d\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x3e\x02\x60\x00\xe5\x01\x61\x00\x62\x00\x63\x00\x42\x02\x45\x02\xf6\x01\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x46\x02\x5f\x00\x4f\x02\x60\x00\x67\x00\x61\x00\x62\x00\x63\x00\x2e\xff\x50\x02\xfb\x01\x66\x00\x6a\x00\x57\x02\x62\x02\xe5\x01\x62\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xef\x01\x5f\x00\x6d\x02\x60\x00\x80\x02\x61\x00\x62\x00\x63\x00\x71\x02\x79\x02\x0a\x02\x66\x00\x6a\x00\x86\x02\x88\x02\x7b\x02\x8e\x02\x67\x00\x97\x01\x8f\x02\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x95\x02\xb6\x02\xb7\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x55\x00\x60\x00\xbf\x02\x61\x00\x62\x00\x63\x00\xc0\x02\xc5\x02\xba\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x2c\x00\x5f\x00\x5b\x00\x60\x00\xc7\x02\x61\x00\x62\x00\x63\x00\x81\x01\xc5\xfd\xbe\x00\x66\x00\x6a\x00\xa5\x01\x21\x00\x68\x00\xc7\xfd\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\xc6\xfd\x60\x00\xc9\xfd\x61\x00\x62\x00\x63\x00\xcc\xfd\x96\x01\xd8\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x67\x00\x5f\x00\x97\x01\x60\x00\x98\x01\x61\x00\x62\x00\x63\x00\xa6\x01\xa0\x01\xec\x00\x66\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\x93\x01\x94\x01\xae\x01\xb3\x00\x67\x00\x61\x00\x62\x00\x63\x00\xaf\x01\xb0\x01\xdf\x00\xb1\x01\x6a\x00\xb9\x01\xb2\x01\xb7\x01\xba\x01\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x5e\x00\xbb\x01\x05\x02\xbc\x01\xb3\x00\xbe\x01\x61\x00\x62\x00\x63\x00\xc3\x01\xc5\x01\xef\x02\xf0\x02\x6a\x00\x61\x00\x62\x00\x63\x00\xcc\x01\x67\x00\x5e\x00\xf1\x02\xdd\x00\xc4\x01\xb3\x00\xcd\x01\x61\x00\x62\x00\x63\x00\xd0\x01\xcf\x01\xd6\x01\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xf6\x01\x67\x00\xf2\x02\xf3\x02\xf4\x02\x08\x02\xf5\x02\xfe\x01\x14\x04\x5f\x03\x62\x00\x63\x00\xbc\x01\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xef\x02\x68\x03\x67\x00\x61\x00\x62\x00\x63\x00\x0c\x02\x15\x02\xad\x00\x2c\x00\x16\x02\x9a\x00\x1c\x02\x6a\x00\x25\x02\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xff\xff\x67\x00\xed\x00\x62\x00\x63\x00\xee\x00\xab\x00\x69\x03\xf3\x02\xf4\x02\xad\x00\xf5\x02\xba\x00\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xbc\x00\x67\x00\xbd\x00\xf9\x03\x5f\x03\x62\x00\x63\x00\xbe\x00\xfa\x03\x5f\x03\x62\x00\x63\x00\xff\xff\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xdf\x03\x5f\x03\x62\x00\x63\x00\xdc\x00\x67\x00\xec\x00\xff\xff\xa1\x03\x5f\x03\x62\x00\x63\x00\xf8\x00\x6a\x00\xf9\x00\xf6\x02\xfa\x00\xfd\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\xba\x00\x67\x00\xfd\x00\x21\x00\x68\x00\xff\xff\xf7\x02\x25\x00\xa4\x03\x5f\x03\x62\x00\x63\x00\x6c\x01\x6a\x00\x21\x00\x68\x00\x23\x00\x69\x00\x25\x00\x6b\x01\xff\xff\x6a\x00\xff\xff\x1b\xfe\x5e\x03\x5f\x03\x62\x00\x63\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x21\x00\x68\x00\xf6\x02\x69\x00\x25\x00\x00\x00\x00\x00\xed\x00\x62\x00\x63\x00\x24\xff\x00\x00\x00\x00\x21\x00\x68\x00\x00\x00\xf7\x02\x25\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x6a\x00\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\xf0\x00\xf1\x00\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x68\x00\x6a\x00\x69\x00\x25\x00\x00\x00\x00\x00\x6a\x00\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x6a\x00\x24\xff\x24\xff\x24\xff\x24\xff\x24\xff\x24\xff\x24\xff\x6a\x00\x38\x01\x00\x00\x00\x00\x39\x01\x21\x00\x68\x00\x00\x00\x69\x00\x25\x00\x00\x00\x24\xff\x5c\x02\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x24\x00\x25\x00\x00\x00\x21\x00\x68\x00\x6a\x00\x69\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\xff\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x21\x00\x68\x00\x6a\x00\x69\x00\x25\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x6a\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x3c\x00\x50\x00\x51\x00\x52\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x55\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x7b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x2b\x03\x00\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x58\x00\x00\x00\x85\x00\x00\x00\x59\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x00\x00\x8b\x00\x5c\x00\x5d\x00\x5e\x00\x8c\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xc3\x00\x39\x00\x00\x00\xc4\x00\x00\x00\xc5\x00\x00\x00\xc6\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\xc7\x00\xc8\x00\xc9\x00\x00\x00\xca\x00\x3c\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x2b\x03\x00\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x58\x00\x00\x00\x85\x00\x00\x00\x59\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x00\x00\x8b\x00\x5c\x00\x5d\x00\x5e\x00\x8c\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xc3\x00\x39\x00\x00\x00\xc4\x00\x00\x00\x6d\x01\x00\x00\xc6\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\xc7\x00\xc8\x00\xc9\x00\x00\x00\xca\x00\x3c\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x28\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x58\x00\x28\x00\x85\x00\x00\x00\x59\x00\x2c\x00\x2d\x00\x86\x00\x00\x00\x46\xff\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xd9\x01\x8b\x00\x5c\x00\x5d\x00\x5e\x00\x8c\x00\x8d\x00\x6c\x00\x00\x00\x6d\x00\x8e\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x6e\x03\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x46\xff\x00\x00\x00\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x6b\x03\xf7\x00\x00\x00\x6c\x03\x00\x00\xd1\x00\x00\x00\xd2\x00\xd3\x00\x00\x00\xd4\x00\xd5\x00\x00\x00\x6c\x00\x28\x00\x6d\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\xd6\x00\xd7\x00\xd8\x00\x6e\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\xfe\x03\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x46\xff\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x28\x00\x6d\x00\x00\x00\x6d\x03\x2c\x00\x2d\x00\x00\x00\x00\x00\x6f\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x46\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6c\x03\x00\x00\x5b\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x03\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\xfa\x02\x00\x00\x5b\x00\x00\x00\x28\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x28\x00\x6d\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xf9\x02\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\x5b\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xfb\x02\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x68\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xfb\x02\x53\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xbe\x02\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x9e\x01\x3b\x00\x55\x01\x56\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x57\x01\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x53\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x9d\x01\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x9e\x01\x3b\x00\x55\x01\x56\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x57\x01\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x62\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x63\x01\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\xe4\x00\x3b\x00\x55\x01\x64\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x65\x01\x66\x01\x67\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x53\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x54\x01\x00\x00\x3b\x00\x55\x01\x56\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x57\x01\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x53\x01\xce\x00\xcf\x00\xd0\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x55\x01\x56\x01\x00\x00\xd4\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x57\x01\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xc3\x00\x39\x00\x00\x00\xc4\x00\x00\x00\xc5\x00\x00\x00\xc6\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\xc7\x00\xc8\x00\xc9\x00\x00\x00\xca\x00\x3c\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\xa1\x00\x2e\x04\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x58\x00\x00\x00\x00\x00\x00\x00\x59\x00\x2f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\xd9\x01\x00\x00\x80\x00\x81\x00\x82\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x03\xda\x01\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x1e\x03\x00\x00\x80\x00\x81\x00\x82\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x51\x03\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x03\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x28\x00\x4b\x00\x5b\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x80\x00\x81\x00\x82\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x55\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x28\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x51\x03\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x03\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x80\x00\x81\x00\x82\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x9a\x02\x29\x00\x2a\x00\x2b\x00\x9b\x02\x2d\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x01\x9c\x02\x9d\x02\x9e\x02\x9f\x02\xa0\x02\xa1\x02\xa2\x02\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\xa3\x02\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\xa4\x02\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x28\x00\x47\x00\x48\x00\x49\x00\x2c\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xa1\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\xab\x01\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xa2\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\xa3\x00\x4b\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x0c\x01\x3d\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x44\x01\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x19\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x0c\x01\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x1c\x00\x4b\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x46\x01\x47\x01\xfe\x00\x17\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x19\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x0c\x01\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x1c\x00\x4b\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\xa9\x01\xfe\x00\x17\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x19\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x0c\x01\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x1c\x00\x4b\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xce\x00\x00\x00\xd0\x00\x55\x00\x00\x00\x00\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x6c\x00\xea\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x5b\x00\x6e\x00\x2c\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\xd2\x00\xd3\x00\xeb\x00\xd4\x00\xb8\x03\x00\x00\x00\x00\xa1\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x28\x00\xd6\x00\xd7\x00\xd8\x00\x2c\x00\x2d\x00\x00\x00\xf3\x00\xce\x00\x00\x00\xd0\x00\xd3\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6e\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x6f\x00\x00\x00\x55\x00\x00\x00\xf5\x00\x00\x00\xf6\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x55\x00\xf3\x00\xce\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x28\x00\x5b\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x6c\x00\x07\x02\x6d\x00\xe3\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x76\x03\x6d\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x6f\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x6c\x00\x28\x00\x6d\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x5b\x00\x6e\x00\xdf\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x28\x00\x6c\x00\x00\x00\x6d\x00\x2c\x00\x2d\x00\x00\x00\x6f\x00\x00\x00\x55\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x28\x00\x6d\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x6c\x00\x00\x00\x6d\x00\x28\x00\x87\x02\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x6e\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x6f\x00\x00\x00\x55\x00\x6e\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x3b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x55\x00\x39\x03\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x55\x00\x00\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x6c\x00\x28\x00\x6d\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x5b\x00\x6e\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\xd2\x00\xd3\x00\x6c\x00\xd4\x00\x6d\x00\x00\x00\x87\x02\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x6e\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x03\x00\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x3b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x55\x00\x2c\x00\x2d\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x5b\x00\x6d\x00\x00\x00\x55\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5b\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x8f\x01\x00\x00\x00\x00\x36\x01\x00\x00\x37\x01\x00\x00\x00\x00\x90\x01\x00\x00\x28\x00\x55\x00\x00\x00\x38\x01\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x03\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x5b\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x00\x00\x55\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x3b\x01\x5b\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\xa1\x00\x28\x00\x29\x00\xa3\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x39\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x00\xab\x03\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x01\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x55\x00\x28\x00\x29\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\xaf\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x5b\x00\x00\x00\x28\x00\x55\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\xa1\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\xaf\x00\x00\x00\x28\x00\x55\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\xa1\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x28\x00\xaf\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\xa1\x00\x00\x00\x00\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x5b\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\xd2\x00\xd3\x00\x55\x00\xd4\x00\x6f\x01\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xd6\x00\xd7\x00\xd8\x00\x70\x01\x71\x01\x72\x01\x73\x01\x00\x00\x5b\x00\x00\x00\x00\x00\x55\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x5b\x00\x55\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\xab\x02\xac\x02\xad\x02\xae\x02\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\xd1\x00\x00\x00\xd2\x00\xd3\x00\x00\x00\xd4\x00\xd5\x00\xcd\xfe\x00\x00\xcd\xfe\x82\x03\xad\x02\xae\x02\x00\x00\xaf\x02\xd6\x00\xd7\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x03\xae\x02\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x03\x64\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\xdd\x02\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x02\x64\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x8b\x02\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x02\x64\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\xbe\x01\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\xc1\x01\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x62\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x16\x04\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xf2\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xea\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x88\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x89\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x8a\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xbc\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x46\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x5a\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x5b\x03\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xce\x02\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x67\x02\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x90\x01\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x3f\x01\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x40\x01\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x90\x00\x91\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x5a\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x5b\x01\x5c\x01\x00\x00\x00\x00\x5d\x01\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\x5e\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x5f\x01\x4f\x01\xca\x00\x50\x01\x60\x01\x26\x00\x48\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x49\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x01\x4b\x01\x00\x00\xb2\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x48\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x48\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x4d\x01\x00\x00\x00\x00\x4e\x01\xc6\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc7\x00\xc8\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x51\x01\x26\x00\x8e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x7c\x03\x7d\x03\x00\x00\x19\x00\x00\x00\x7e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\x7e\x03\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xee\x03\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\xef\x03\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x02\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x41\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x42\x01\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x17\x04\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x79\x03\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x87\x03\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xca\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x88\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x89\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x8f\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x90\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x91\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xa9\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xaa\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xb1\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xb7\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x84\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x85\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x86\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x87\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x02\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x04\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x05\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1e\x03\x10\x00\x3e\x01\x12\x00\x13\x00\x14\x00\x15\x00\x26\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x01\x10\x00\x3e\x01\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x3d\x01\x10\x00\x3e\x01\x12\x00\x13\x00\x14\x00\x15\x00\x26\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x01\x8a\x01\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x8a\x01\x00\x00\x15\x00\x00\x00\x26\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x00\xfe\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x95\x02\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x19\x00\x00\x00\x00\x00\x96\x02\x07\x01\x08\x01\x00\x00\x97\x02\x25\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x02\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x96\x02\x07\x01\x08\x01\x00\x00\x97\x02\x98\x02\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x7f\x03\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x2f\x02\x17\x00\x18\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x19\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x91\x01\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x92\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x6c\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\xbc\x01\x17\x00\x18\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x19\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x18\x02\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x1c\x02\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\xc1\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x43\x01\x17\x00\x18\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x19\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x45\x01\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x6c\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyReduceArr = Happy_Data_Array.array (8, 596) [
-	(8 , happyReduce_8),
-	(9 , happyReduce_9),
-	(10 , happyReduce_10),
-	(11 , happyReduce_11),
-	(12 , happyReduce_12),
-	(13 , happyReduce_13),
-	(14 , happyReduce_14),
-	(15 , happyReduce_15),
-	(16 , happyReduce_16),
-	(17 , happyReduce_17),
-	(18 , happyReduce_18),
-	(19 , happyReduce_19),
-	(20 , happyReduce_20),
-	(21 , happyReduce_21),
-	(22 , happyReduce_22),
-	(23 , happyReduce_23),
-	(24 , happyReduce_24),
-	(25 , happyReduce_25),
-	(26 , happyReduce_26),
-	(27 , happyReduce_27),
-	(28 , happyReduce_28),
-	(29 , happyReduce_29),
-	(30 , happyReduce_30),
-	(31 , happyReduce_31),
-	(32 , happyReduce_32),
-	(33 , happyReduce_33),
-	(34 , happyReduce_34),
-	(35 , happyReduce_35),
-	(36 , happyReduce_36),
-	(37 , happyReduce_37),
-	(38 , happyReduce_38),
-	(39 , happyReduce_39),
-	(40 , happyReduce_40),
-	(41 , happyReduce_41),
-	(42 , happyReduce_42),
-	(43 , happyReduce_43),
-	(44 , happyReduce_44),
-	(45 , happyReduce_45),
-	(46 , happyReduce_46),
-	(47 , happyReduce_47),
-	(48 , happyReduce_48),
-	(49 , happyReduce_49),
-	(50 , happyReduce_50),
-	(51 , happyReduce_51),
-	(52 , happyReduce_52),
-	(53 , happyReduce_53),
-	(54 , happyReduce_54),
-	(55 , happyReduce_55),
-	(56 , happyReduce_56),
-	(57 , happyReduce_57),
-	(58 , happyReduce_58),
-	(59 , happyReduce_59),
-	(60 , happyReduce_60),
-	(61 , happyReduce_61),
-	(62 , happyReduce_62),
-	(63 , happyReduce_63),
-	(64 , happyReduce_64),
-	(65 , happyReduce_65),
-	(66 , happyReduce_66),
-	(67 , happyReduce_67),
-	(68 , happyReduce_68),
-	(69 , happyReduce_69),
-	(70 , happyReduce_70),
-	(71 , happyReduce_71),
-	(72 , happyReduce_72),
-	(73 , happyReduce_73),
-	(74 , happyReduce_74),
-	(75 , happyReduce_75),
-	(76 , happyReduce_76),
-	(77 , happyReduce_77),
-	(78 , happyReduce_78),
-	(79 , happyReduce_79),
-	(80 , happyReduce_80),
-	(81 , happyReduce_81),
-	(82 , happyReduce_82),
-	(83 , happyReduce_83),
-	(84 , happyReduce_84),
-	(85 , happyReduce_85),
-	(86 , happyReduce_86),
-	(87 , happyReduce_87),
-	(88 , happyReduce_88),
-	(89 , happyReduce_89),
-	(90 , happyReduce_90),
-	(91 , happyReduce_91),
-	(92 , happyReduce_92),
-	(93 , happyReduce_93),
-	(94 , happyReduce_94),
-	(95 , happyReduce_95),
-	(96 , happyReduce_96),
-	(97 , happyReduce_97),
-	(98 , happyReduce_98),
-	(99 , happyReduce_99),
-	(100 , happyReduce_100),
-	(101 , happyReduce_101),
-	(102 , happyReduce_102),
-	(103 , happyReduce_103),
-	(104 , happyReduce_104),
-	(105 , happyReduce_105),
-	(106 , happyReduce_106),
-	(107 , happyReduce_107),
-	(108 , happyReduce_108),
-	(109 , happyReduce_109),
-	(110 , happyReduce_110),
-	(111 , happyReduce_111),
-	(112 , happyReduce_112),
-	(113 , happyReduce_113),
-	(114 , happyReduce_114),
-	(115 , happyReduce_115),
-	(116 , happyReduce_116),
-	(117 , happyReduce_117),
-	(118 , happyReduce_118),
-	(119 , happyReduce_119),
-	(120 , happyReduce_120),
-	(121 , happyReduce_121),
-	(122 , happyReduce_122),
-	(123 , happyReduce_123),
-	(124 , happyReduce_124),
-	(125 , happyReduce_125),
-	(126 , happyReduce_126),
-	(127 , happyReduce_127),
-	(128 , happyReduce_128),
-	(129 , happyReduce_129),
-	(130 , happyReduce_130),
-	(131 , happyReduce_131),
-	(132 , happyReduce_132),
-	(133 , happyReduce_133),
-	(134 , happyReduce_134),
-	(135 , happyReduce_135),
-	(136 , happyReduce_136),
-	(137 , happyReduce_137),
-	(138 , happyReduce_138),
-	(139 , happyReduce_139),
-	(140 , happyReduce_140),
-	(141 , happyReduce_141),
-	(142 , happyReduce_142),
-	(143 , happyReduce_143),
-	(144 , happyReduce_144),
-	(145 , happyReduce_145),
-	(146 , happyReduce_146),
-	(147 , happyReduce_147),
-	(148 , happyReduce_148),
-	(149 , happyReduce_149),
-	(150 , happyReduce_150),
-	(151 , happyReduce_151),
-	(152 , happyReduce_152),
-	(153 , happyReduce_153),
-	(154 , happyReduce_154),
-	(155 , happyReduce_155),
-	(156 , happyReduce_156),
-	(157 , happyReduce_157),
-	(158 , happyReduce_158),
-	(159 , happyReduce_159),
-	(160 , happyReduce_160),
-	(161 , happyReduce_161),
-	(162 , happyReduce_162),
-	(163 , happyReduce_163),
-	(164 , happyReduce_164),
-	(165 , happyReduce_165),
-	(166 , happyReduce_166),
-	(167 , happyReduce_167),
-	(168 , happyReduce_168),
-	(169 , happyReduce_169),
-	(170 , happyReduce_170),
-	(171 , happyReduce_171),
-	(172 , happyReduce_172),
-	(173 , happyReduce_173),
-	(174 , happyReduce_174),
-	(175 , happyReduce_175),
-	(176 , happyReduce_176),
-	(177 , happyReduce_177),
-	(178 , happyReduce_178),
-	(179 , happyReduce_179),
-	(180 , happyReduce_180),
-	(181 , happyReduce_181),
-	(182 , happyReduce_182),
-	(183 , happyReduce_183),
-	(184 , happyReduce_184),
-	(185 , happyReduce_185),
-	(186 , happyReduce_186),
-	(187 , happyReduce_187),
-	(188 , happyReduce_188),
-	(189 , happyReduce_189),
-	(190 , happyReduce_190),
-	(191 , happyReduce_191),
-	(192 , happyReduce_192),
-	(193 , happyReduce_193),
-	(194 , happyReduce_194),
-	(195 , happyReduce_195),
-	(196 , happyReduce_196),
-	(197 , happyReduce_197),
-	(198 , happyReduce_198),
-	(199 , happyReduce_199),
-	(200 , happyReduce_200),
-	(201 , happyReduce_201),
-	(202 , happyReduce_202),
-	(203 , happyReduce_203),
-	(204 , happyReduce_204),
-	(205 , happyReduce_205),
-	(206 , happyReduce_206),
-	(207 , happyReduce_207),
-	(208 , happyReduce_208),
-	(209 , happyReduce_209),
-	(210 , happyReduce_210),
-	(211 , happyReduce_211),
-	(212 , happyReduce_212),
-	(213 , happyReduce_213),
-	(214 , happyReduce_214),
-	(215 , happyReduce_215),
-	(216 , happyReduce_216),
-	(217 , happyReduce_217),
-	(218 , happyReduce_218),
-	(219 , happyReduce_219),
-	(220 , happyReduce_220),
-	(221 , happyReduce_221),
-	(222 , happyReduce_222),
-	(223 , happyReduce_223),
-	(224 , happyReduce_224),
-	(225 , happyReduce_225),
-	(226 , happyReduce_226),
-	(227 , happyReduce_227),
-	(228 , happyReduce_228),
-	(229 , happyReduce_229),
-	(230 , happyReduce_230),
-	(231 , happyReduce_231),
-	(232 , happyReduce_232),
-	(233 , happyReduce_233),
-	(234 , happyReduce_234),
-	(235 , happyReduce_235),
-	(236 , happyReduce_236),
-	(237 , happyReduce_237),
-	(238 , happyReduce_238),
-	(239 , happyReduce_239),
-	(240 , happyReduce_240),
-	(241 , happyReduce_241),
-	(242 , happyReduce_242),
-	(243 , happyReduce_243),
-	(244 , happyReduce_244),
-	(245 , happyReduce_245),
-	(246 , happyReduce_246),
-	(247 , happyReduce_247),
-	(248 , happyReduce_248),
-	(249 , happyReduce_249),
-	(250 , happyReduce_250),
-	(251 , happyReduce_251),
-	(252 , happyReduce_252),
-	(253 , happyReduce_253),
-	(254 , happyReduce_254),
-	(255 , happyReduce_255),
-	(256 , happyReduce_256),
-	(257 , happyReduce_257),
-	(258 , happyReduce_258),
-	(259 , happyReduce_259),
-	(260 , happyReduce_260),
-	(261 , happyReduce_261),
-	(262 , happyReduce_262),
-	(263 , happyReduce_263),
-	(264 , happyReduce_264),
-	(265 , happyReduce_265),
-	(266 , happyReduce_266),
-	(267 , happyReduce_267),
-	(268 , happyReduce_268),
-	(269 , happyReduce_269),
-	(270 , happyReduce_270),
-	(271 , happyReduce_271),
-	(272 , happyReduce_272),
-	(273 , happyReduce_273),
-	(274 , happyReduce_274),
-	(275 , happyReduce_275),
-	(276 , happyReduce_276),
-	(277 , happyReduce_277),
-	(278 , happyReduce_278),
-	(279 , happyReduce_279),
-	(280 , happyReduce_280),
-	(281 , happyReduce_281),
-	(282 , happyReduce_282),
-	(283 , happyReduce_283),
-	(284 , happyReduce_284),
-	(285 , happyReduce_285),
-	(286 , happyReduce_286),
-	(287 , happyReduce_287),
-	(288 , happyReduce_288),
-	(289 , happyReduce_289),
-	(290 , happyReduce_290),
-	(291 , happyReduce_291),
-	(292 , happyReduce_292),
-	(293 , happyReduce_293),
-	(294 , happyReduce_294),
-	(295 , happyReduce_295),
-	(296 , happyReduce_296),
-	(297 , happyReduce_297),
-	(298 , happyReduce_298),
-	(299 , happyReduce_299),
-	(300 , happyReduce_300),
-	(301 , happyReduce_301),
-	(302 , happyReduce_302),
-	(303 , happyReduce_303),
-	(304 , happyReduce_304),
-	(305 , happyReduce_305),
-	(306 , happyReduce_306),
-	(307 , happyReduce_307),
-	(308 , happyReduce_308),
-	(309 , happyReduce_309),
-	(310 , happyReduce_310),
-	(311 , happyReduce_311),
-	(312 , happyReduce_312),
-	(313 , happyReduce_313),
-	(314 , happyReduce_314),
-	(315 , happyReduce_315),
-	(316 , happyReduce_316),
-	(317 , happyReduce_317),
-	(318 , happyReduce_318),
-	(319 , happyReduce_319),
-	(320 , happyReduce_320),
-	(321 , happyReduce_321),
-	(322 , happyReduce_322),
-	(323 , happyReduce_323),
-	(324 , happyReduce_324),
-	(325 , happyReduce_325),
-	(326 , happyReduce_326),
-	(327 , happyReduce_327),
-	(328 , happyReduce_328),
-	(329 , happyReduce_329),
-	(330 , happyReduce_330),
-	(331 , happyReduce_331),
-	(332 , happyReduce_332),
-	(333 , happyReduce_333),
-	(334 , happyReduce_334),
-	(335 , happyReduce_335),
-	(336 , happyReduce_336),
-	(337 , happyReduce_337),
-	(338 , happyReduce_338),
-	(339 , happyReduce_339),
-	(340 , happyReduce_340),
-	(341 , happyReduce_341),
-	(342 , happyReduce_342),
-	(343 , happyReduce_343),
-	(344 , happyReduce_344),
-	(345 , happyReduce_345),
-	(346 , happyReduce_346),
-	(347 , happyReduce_347),
-	(348 , happyReduce_348),
-	(349 , happyReduce_349),
-	(350 , happyReduce_350),
-	(351 , happyReduce_351),
-	(352 , happyReduce_352),
-	(353 , happyReduce_353),
-	(354 , happyReduce_354),
-	(355 , happyReduce_355),
-	(356 , happyReduce_356),
-	(357 , happyReduce_357),
-	(358 , happyReduce_358),
-	(359 , happyReduce_359),
-	(360 , happyReduce_360),
-	(361 , happyReduce_361),
-	(362 , happyReduce_362),
-	(363 , happyReduce_363),
-	(364 , happyReduce_364),
-	(365 , happyReduce_365),
-	(366 , happyReduce_366),
-	(367 , happyReduce_367),
-	(368 , happyReduce_368),
-	(369 , happyReduce_369),
-	(370 , happyReduce_370),
-	(371 , happyReduce_371),
-	(372 , happyReduce_372),
-	(373 , happyReduce_373),
-	(374 , happyReduce_374),
-	(375 , happyReduce_375),
-	(376 , happyReduce_376),
-	(377 , happyReduce_377),
-	(378 , happyReduce_378),
-	(379 , happyReduce_379),
-	(380 , happyReduce_380),
-	(381 , happyReduce_381),
-	(382 , happyReduce_382),
-	(383 , happyReduce_383),
-	(384 , happyReduce_384),
-	(385 , happyReduce_385),
-	(386 , happyReduce_386),
-	(387 , happyReduce_387),
-	(388 , happyReduce_388),
-	(389 , happyReduce_389),
-	(390 , happyReduce_390),
-	(391 , happyReduce_391),
-	(392 , happyReduce_392),
-	(393 , happyReduce_393),
-	(394 , happyReduce_394),
-	(395 , happyReduce_395),
-	(396 , happyReduce_396),
-	(397 , happyReduce_397),
-	(398 , happyReduce_398),
-	(399 , happyReduce_399),
-	(400 , happyReduce_400),
-	(401 , happyReduce_401),
-	(402 , happyReduce_402),
-	(403 , happyReduce_403),
-	(404 , happyReduce_404),
-	(405 , happyReduce_405),
-	(406 , happyReduce_406),
-	(407 , happyReduce_407),
-	(408 , happyReduce_408),
-	(409 , happyReduce_409),
-	(410 , happyReduce_410),
-	(411 , happyReduce_411),
-	(412 , happyReduce_412),
-	(413 , happyReduce_413),
-	(414 , happyReduce_414),
-	(415 , happyReduce_415),
-	(416 , happyReduce_416),
-	(417 , happyReduce_417),
-	(418 , happyReduce_418),
-	(419 , happyReduce_419),
-	(420 , happyReduce_420),
-	(421 , happyReduce_421),
-	(422 , happyReduce_422),
-	(423 , happyReduce_423),
-	(424 , happyReduce_424),
-	(425 , happyReduce_425),
-	(426 , happyReduce_426),
-	(427 , happyReduce_427),
-	(428 , happyReduce_428),
-	(429 , happyReduce_429),
-	(430 , happyReduce_430),
-	(431 , happyReduce_431),
-	(432 , happyReduce_432),
-	(433 , happyReduce_433),
-	(434 , happyReduce_434),
-	(435 , happyReduce_435),
-	(436 , happyReduce_436),
-	(437 , happyReduce_437),
-	(438 , happyReduce_438),
-	(439 , happyReduce_439),
-	(440 , happyReduce_440),
-	(441 , happyReduce_441),
-	(442 , happyReduce_442),
-	(443 , happyReduce_443),
-	(444 , happyReduce_444),
-	(445 , happyReduce_445),
-	(446 , happyReduce_446),
-	(447 , happyReduce_447),
-	(448 , happyReduce_448),
-	(449 , happyReduce_449),
-	(450 , happyReduce_450),
-	(451 , happyReduce_451),
-	(452 , happyReduce_452),
-	(453 , happyReduce_453),
-	(454 , happyReduce_454),
-	(455 , happyReduce_455),
-	(456 , happyReduce_456),
-	(457 , happyReduce_457),
-	(458 , happyReduce_458),
-	(459 , happyReduce_459),
-	(460 , happyReduce_460),
-	(461 , happyReduce_461),
-	(462 , happyReduce_462),
-	(463 , happyReduce_463),
-	(464 , happyReduce_464),
-	(465 , happyReduce_465),
-	(466 , happyReduce_466),
-	(467 , happyReduce_467),
-	(468 , happyReduce_468),
-	(469 , happyReduce_469),
-	(470 , happyReduce_470),
-	(471 , happyReduce_471),
-	(472 , happyReduce_472),
-	(473 , happyReduce_473),
-	(474 , happyReduce_474),
-	(475 , happyReduce_475),
-	(476 , happyReduce_476),
-	(477 , happyReduce_477),
-	(478 , happyReduce_478),
-	(479 , happyReduce_479),
-	(480 , happyReduce_480),
-	(481 , happyReduce_481),
-	(482 , happyReduce_482),
-	(483 , happyReduce_483),
-	(484 , happyReduce_484),
-	(485 , happyReduce_485),
-	(486 , happyReduce_486),
-	(487 , happyReduce_487),
-	(488 , happyReduce_488),
-	(489 , happyReduce_489),
-	(490 , happyReduce_490),
-	(491 , happyReduce_491),
-	(492 , happyReduce_492),
-	(493 , happyReduce_493),
-	(494 , happyReduce_494),
-	(495 , happyReduce_495),
-	(496 , happyReduce_496),
-	(497 , happyReduce_497),
-	(498 , happyReduce_498),
-	(499 , happyReduce_499),
-	(500 , happyReduce_500),
-	(501 , happyReduce_501),
-	(502 , happyReduce_502),
-	(503 , happyReduce_503),
-	(504 , happyReduce_504),
-	(505 , happyReduce_505),
-	(506 , happyReduce_506),
-	(507 , happyReduce_507),
-	(508 , happyReduce_508),
-	(509 , happyReduce_509),
-	(510 , happyReduce_510),
-	(511 , happyReduce_511),
-	(512 , happyReduce_512),
-	(513 , happyReduce_513),
-	(514 , happyReduce_514),
-	(515 , happyReduce_515),
-	(516 , happyReduce_516),
-	(517 , happyReduce_517),
-	(518 , happyReduce_518),
-	(519 , happyReduce_519),
-	(520 , happyReduce_520),
-	(521 , happyReduce_521),
-	(522 , happyReduce_522),
-	(523 , happyReduce_523),
-	(524 , happyReduce_524),
-	(525 , happyReduce_525),
-	(526 , happyReduce_526),
-	(527 , happyReduce_527),
-	(528 , happyReduce_528),
-	(529 , happyReduce_529),
-	(530 , happyReduce_530),
-	(531 , happyReduce_531),
-	(532 , happyReduce_532),
-	(533 , happyReduce_533),
-	(534 , happyReduce_534),
-	(535 , happyReduce_535),
-	(536 , happyReduce_536),
-	(537 , happyReduce_537),
-	(538 , happyReduce_538),
-	(539 , happyReduce_539),
-	(540 , happyReduce_540),
-	(541 , happyReduce_541),
-	(542 , happyReduce_542),
-	(543 , happyReduce_543),
-	(544 , happyReduce_544),
-	(545 , happyReduce_545),
-	(546 , happyReduce_546),
-	(547 , happyReduce_547),
-	(548 , happyReduce_548),
-	(549 , happyReduce_549),
-	(550 , happyReduce_550),
-	(551 , happyReduce_551),
-	(552 , happyReduce_552),
-	(553 , happyReduce_553),
-	(554 , happyReduce_554),
-	(555 , happyReduce_555),
-	(556 , happyReduce_556),
-	(557 , happyReduce_557),
-	(558 , happyReduce_558),
-	(559 , happyReduce_559),
-	(560 , happyReduce_560),
-	(561 , happyReduce_561),
-	(562 , happyReduce_562),
-	(563 , happyReduce_563),
-	(564 , happyReduce_564),
-	(565 , happyReduce_565),
-	(566 , happyReduce_566),
-	(567 , happyReduce_567),
-	(568 , happyReduce_568),
-	(569 , happyReduce_569),
-	(570 , happyReduce_570),
-	(571 , happyReduce_571),
-	(572 , happyReduce_572),
-	(573 , happyReduce_573),
-	(574 , happyReduce_574),
-	(575 , happyReduce_575),
-	(576 , happyReduce_576),
-	(577 , happyReduce_577),
-	(578 , happyReduce_578),
-	(579 , happyReduce_579),
-	(580 , happyReduce_580),
-	(581 , happyReduce_581),
-	(582 , happyReduce_582),
-	(583 , happyReduce_583),
-	(584 , happyReduce_584),
-	(585 , happyReduce_585),
-	(586 , happyReduce_586),
-	(587 , happyReduce_587),
-	(588 , happyReduce_588),
-	(589 , happyReduce_589),
-	(590 , happyReduce_590),
-	(591 , happyReduce_591),
-	(592 , happyReduce_592),
-	(593 , happyReduce_593),
-	(594 , happyReduce_594),
-	(595 , happyReduce_595),
-	(596 , happyReduce_596)
-	]
-
-happy_n_terms = 134 :: Int
-happy_n_nonterms = 219 :: Int
-
-happyReduce_8 = happySpecReduce_2  0# happyReduction_8
-happyReduction_8 happy_x_2
-	happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	case happyOut12 happy_x_2 of { happy_var_2 -> 
-	happyIn11
-		 (let (os,ss,l) = happy_var_1 in map (\x -> x os ss l) happy_var_2
-	)}}
-
-happyReduce_9 = happySpecReduce_2  1# happyReduction_9
-happyReduction_9 happy_x_2
-	happy_x_1
-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
-	case happyOut12 happy_x_2 of { happy_var_2 -> 
-	happyIn12
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_10 = happySpecReduce_1  1# happyReduction_10
-happyReduction_10 happy_x_1
-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
-	happyIn12
-		 ([happy_var_1]
-	)}
-
-happyReduce_11 = happyMonadReduce 2# 2# happyReduction_11
-happyReduction_11 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut15 happy_x_1 of { happy_var_1 -> 
-	case happyOut14 happy_x_2 of { happy_var_2 -> 
-	( checkPageModule happy_var_2 happy_var_1)}}
-	) (\r -> happyReturn (happyIn13 r))
-
-happyReduce_12 = happyMonadReduce 5# 2# happyReduction_12
-happyReduction_12 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut15 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 XCodeTagOpen) -> 
-	case happyOut19 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 XCodeTagClose) -> 
-	case happyOut14 happy_x_5 of { happy_var_5 -> 
-	( let (os,ss,l) = happy_var_1 in checkHybridModule happy_var_5 (happy_var_3 os ss l) happy_var_2 happy_var_4)}}}}}
-	) (\r -> happyReturn (happyIn13 r))
-
-happyReduce_13 = happySpecReduce_2  2# happyReduction_13
-happyReduction_13 happy_x_2
-	happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	case happyOut19 happy_x_2 of { happy_var_2 -> 
-	happyIn13
-		 (let (os,ss,l) = happy_var_1 in happy_var_2 os ss l
-	)}}
-
-happyReduce_14 = happyMonadReduce 9# 3# happyReduction_14
-happyReduction_14 (happy_x_9 `HappyStk`
-	happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> 
-	case happyOut161 happy_x_2 of { happy_var_2 -> 
-	case happyOut164 happy_x_3 of { happy_var_3 -> 
-	case happyOut166 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> 
-	case happyOut159 happy_x_6 of { happy_var_6 -> 
-	case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> 
-	case happyOut161 happy_x_8 of { happy_var_8 -> 
-	case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> 
-	( do { n <- checkEqNames happy_var_2 happy_var_8;
-                                                                       let { cn = reverse happy_var_6;
-                                                                             as = reverse happy_var_3; };
-                                                                       return $ XTag (happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,happy_var_9]) n as happy_var_4 cn })}}}}}}}}}
-	) (\r -> happyReturn (happyIn14 r))
-
-happyReduce_15 = happyReduce 5# 3# happyReduction_15
-happyReduction_15 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> 
-	case happyOut161 happy_x_2 of { happy_var_2 -> 
-	case happyOut164 happy_x_3 of { happy_var_3 -> 
-	case happyOut166 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> 
-	happyIn14
-		 (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_16 = happySpecReduce_3  4# happyReduction_16
-happyReduction_16 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut222 happy_x_1 of { happy_var_1 -> 
-	case happyOut16 happy_x_2 of { happy_var_2 -> 
-	case happyOut223 happy_x_3 of { happy_var_3 -> 
-	happyIn15
-		 (let (os,ss,ml) = happy_var_2 in (os,happy_var_1:ss++[happy_var_3],happy_var_1 <^^> happy_var_3)
-	)}}}
-
-happyReduce_17 = happySpecReduce_3  5# happyReduction_17
-happyReduction_17 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut17 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> 
-	case happyOut16 happy_x_3 of { happy_var_3 -> 
-	happyIn16
-		 (let (os,ss,ml) = happy_var_3 in (happy_var_1 : os, happy_var_2 : ss, Just $ ann happy_var_1 <++> nIS happy_var_2 <+?> ml)
-	)}}}
-
-happyReduce_18 = happySpecReduce_0  5# happyReduction_18
-happyReduction_18  =  happyIn16
-		 (([],[],Nothing)
-	)
-
-happyReduce_19 = happyReduce 4# 6# happyReduction_19
-happyReduction_19 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LANGUAGE) -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut25 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> 
-	happyIn17
-		 (LanguagePragma (happy_var_1 <^^> happy_var_4 <** (happy_var_1:snd happy_var_2 ++ reverse happy_var_3 ++ [happy_var_4])) (fst happy_var_2)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_20 = happySpecReduce_3  6# happyReduction_20
-happyReduction_20 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut25 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn17
-		 (let Loc l (OPTIONS (mc, s)) = happy_var_1
-                                                      in OptionsPragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) (readTool mc) s
-	)}}}
-
-happyReduce_21 = happySpecReduce_3  6# happyReduction_21
-happyReduction_21 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 ANN) -> 
-	case happyOut76 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn17
-		 (AnnModulePragma (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_22 = happySpecReduce_3  7# happyReduction_22
-happyReduction_22 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut213 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut18 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3)
-	)}}}
-
-happyReduce_23 = happySpecReduce_1  7# happyReduction_23
-happyReduction_23 happy_x_1
-	 =  case happyOut213 happy_x_1 of { happy_var_1 -> 
-	happyIn18
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_24 = happySpecReduce_2  8# happyReduction_24
-happyReduction_24 happy_x_2
-	happy_x_1
-	 =  case happyOut20 happy_x_1 of { happy_var_1 -> 
-	case happyOut22 happy_x_2 of { happy_var_2 -> 
-	happyIn19
-		 (let (is,ds,ss1,inf) = happy_var_2
-                 in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) happy_var_1 os is ds
-	)}}
-
-happyReduce_25 = happyReduce 5# 9# happyReduction_25
-happyReduction_25 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> 
-	case happyOut224 happy_x_2 of { happy_var_2 -> 
-	case happyOut21 happy_x_3 of { happy_var_3 -> 
-	case happyOut26 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Where) -> 
-	happyIn20
-		 (Just $ ModuleHead (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 happy_var_3 happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_26 = happySpecReduce_0  9# happyReduction_26
-happyReduction_26  =  happyIn20
-		 (Nothing
-	)
-
-happyReduce_27 = happySpecReduce_3  10# happyReduction_27
-happyReduction_27 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn21
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ DeprText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s
-	)}}}
-
-happyReduce_28 = happySpecReduce_3  10# happyReduction_28
-happyReduction_28 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn21
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ WarnText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s
-	)}}}
-
-happyReduce_29 = happySpecReduce_0  10# happyReduction_29
-happyReduction_29  =  happyIn21
-		 (Nothing
-	)
-
-happyReduce_30 = happySpecReduce_3  11# happyReduction_30
-happyReduction_30 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut23 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn22
-		 (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3)
-	)}}}
-
-happyReduce_31 = happySpecReduce_3  11# happyReduction_31
-happyReduction_31 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut222 happy_x_1 of { happy_var_1 -> 
-	case happyOut23 happy_x_2 of { happy_var_2 -> 
-	case happyOut223 happy_x_3 of { happy_var_3 -> 
-	happyIn22
-		 (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3)
-	)}}}
-
-happyReduce_32 = happyReduce 4# 12# happyReduction_32
-happyReduction_32 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut31 happy_x_2 of { happy_var_2 -> 
-	case happyOut24 happy_x_3 of { happy_var_3 -> 
-	case happyOut48 happy_x_4 of { happy_var_4 -> 
-	happyIn23
-		 ((reverse (fst happy_var_2), fst happy_var_4, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3 ++ snd happy_var_4)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_33 = happySpecReduce_2  12# happyReduction_33
-happyReduction_33 happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut48 happy_x_2 of { happy_var_2 -> 
-	happyIn23
-		 (([], fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2)
-	)}}
-
-happyReduce_34 = happySpecReduce_3  12# happyReduction_34
-happyReduction_34 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut31 happy_x_2 of { happy_var_2 -> 
-	case happyOut25 happy_x_3 of { happy_var_3 -> 
-	happyIn23
-		 ((reverse (fst happy_var_2), [], reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3)
-	)}}}
-
-happyReduce_35 = happySpecReduce_1  12# happyReduction_35
-happyReduction_35 happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	happyIn23
-		 (([], [], reverse happy_var_1)
-	)}
-
-happyReduce_36 = happySpecReduce_2  13# happyReduction_36
-happyReduction_36 happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> 
-	happyIn24
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_37 = happySpecReduce_1  14# happyReduction_37
-happyReduction_37 happy_x_1
-	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
-	happyIn25
-		 (happy_var_1
-	)}
-
-happyReduce_38 = happySpecReduce_0  14# happyReduction_38
-happyReduction_38  =  happyIn25
-		 ([]
-	)
-
-happyReduce_39 = happySpecReduce_1  15# happyReduction_39
-happyReduction_39 happy_x_1
-	 =  case happyOut27 happy_x_1 of { happy_var_1 -> 
-	happyIn26
-		 (Just happy_var_1
-	)}
-
-happyReduce_40 = happySpecReduce_0  15# happyReduction_40
-happyReduction_40  =  happyIn26
-		 (Nothing
-	)
-
-happyReduce_41 = happyReduce 4# 16# happyReduction_41
-happyReduction_41 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut29 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn27
-		 (ExportSpecList (happy_var_1 <^^> happy_var_4 <** (happy_var_1:reverse (snd happy_var_2) ++ happy_var_3 ++ [happy_var_4])) (reverse (fst happy_var_2))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_42 = happySpecReduce_3  16# happyReduction_42
-happyReduction_42 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut28 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn27
-		 (ExportSpecList (happy_var_1 <^^> happy_var_3 <** (happy_var_1:happy_var_2++[happy_var_3])) []
-	)}}}
-
-happyReduce_43 = happySpecReduce_1  17# happyReduction_43
-happyReduction_43 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> 
-	happyIn28
-		 ([happy_var_1]
-	)}
-
-happyReduce_44 = happySpecReduce_0  17# happyReduction_44
-happyReduction_44  =  happyIn28
-		 ([  ]
-	)
-
-happyReduce_45 = happySpecReduce_3  18# happyReduction_45
-happyReduction_45 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut29 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut30 happy_x_3 of { happy_var_3 -> 
-	happyIn29
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_46 = happySpecReduce_1  18# happyReduction_46
-happyReduction_46 happy_x_1
-	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
-	happyIn29
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_47 = happySpecReduce_1  19# happyReduction_47
-happyReduction_47 happy_x_1
-	 =  case happyOut195 happy_x_1 of { happy_var_1 -> 
-	happyIn30
-		 (EVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_48 = happySpecReduce_1  19# happyReduction_48
-happyReduction_48 happy_x_1
-	 =  case happyOut226 happy_x_1 of { happy_var_1 -> 
-	happyIn30
-		 (EAbs (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_49 = happyReduce 4# 19# happyReduction_49
-happyReduction_49 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut226 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn30
-		 (EThingAll  (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1
-	) `HappyStk` happyRest}}}}
-
-happyReduce_50 = happySpecReduce_3  19# happyReduction_50
-happyReduction_50 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut226 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn30
-		 (EThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3])    happy_var_1 []
-	)}}}
-
-happyReduce_51 = happyReduce 4# 19# happyReduction_51
-happyReduction_51 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut226 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut42 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn30
-		 (EThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_52 = happySpecReduce_2  19# happyReduction_52
-happyReduction_52 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> 
-	case happyOut224 happy_x_2 of { happy_var_2 -> 
-	happyIn30
-		 (EModuleContents (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_53 = happySpecReduce_3  20# happyReduction_53
-happyReduction_53 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut31 happy_x_1 of { happy_var_1 -> 
-	case happyOut24 happy_x_2 of { happy_var_2 -> 
-	case happyOut32 happy_x_3 of { happy_var_3 -> 
-	happyIn31
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_54 = happySpecReduce_1  20# happyReduction_54
-happyReduction_54 happy_x_1
-	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
-	happyIn31
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_55 = happyReduce 7# 21# happyReduction_55
-happyReduction_55 (happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> 
-	case happyOut33 happy_x_2 of { happy_var_2 -> 
-	case happyOut34 happy_x_3 of { happy_var_3 -> 
-	case happyOut35 happy_x_4 of { happy_var_4 -> 
-	case happyOut224 happy_x_5 of { happy_var_5 -> 
-	case happyOut36 happy_x_6 of { happy_var_6 -> 
-	case happyOut37 happy_x_7 of { happy_var_7 -> 
-	happyIn32
-		 (let { (mmn,ss,ml) = happy_var_6 ;
-                                      l = nIS happy_var_1 <++> ann happy_var_5 <+?> ml <+?> (fmap ann) happy_var_7 <** (happy_var_1:snd happy_var_2 ++ snd happy_var_3 ++ snd happy_var_4 ++ ss)}
-                                 in ImportDecl l happy_var_5 (fst happy_var_3) (fst happy_var_2) (fst happy_var_4) mmn happy_var_7
-	) `HappyStk` happyRest}}}}}}}
-
-happyReduce_56 = happySpecReduce_2  22# happyReduction_56
-happyReduction_56 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 SOURCE) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> 
-	happyIn33
-		 ((True,[happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_57 = happySpecReduce_0  22# happyReduction_57
-happyReduction_57  =  happyIn33
-		 ((False,[])
-	)
-
-happyReduce_58 = happySpecReduce_1  23# happyReduction_58
-happyReduction_58 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> 
-	happyIn34
-		 ((True,[happy_var_1])
-	)}
-
-happyReduce_59 = happySpecReduce_0  23# happyReduction_59
-happyReduction_59  =  happyIn34
-		 ((False, [])
-	)
-
-happyReduce_60 = happyMonadReduce 1# 24# happyReduction_60
-happyReduction_60 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> 
-	( do { checkEnabled PackageImports ;
-                                                      let { Loc l (StringTok (s,_)) = happy_var_1 } ;
-                                                      return $ (Just s,[l]) })}
-	) (\r -> happyReturn (happyIn35 r))
-
-happyReduce_61 = happySpecReduce_0  24# happyReduction_61
-happyReduction_61  =  happyIn35
-		 ((Nothing,[])
-	)
-
-happyReduce_62 = happySpecReduce_2  25# happyReduction_62
-happyReduction_62 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> 
-	case happyOut224 happy_x_2 of { happy_var_2 -> 
-	happyIn36
-		 ((Just happy_var_2,[happy_var_1],Just (nIS happy_var_1 <++> ann happy_var_2))
-	)}}
-
-happyReduce_63 = happySpecReduce_0  25# happyReduction_63
-happyReduction_63  =  happyIn36
-		 ((Nothing,[],Nothing)
-	)
-
-happyReduce_64 = happySpecReduce_1  26# happyReduction_64
-happyReduction_64 happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	happyIn37
-		 (Just happy_var_1
-	)}
-
-happyReduce_65 = happySpecReduce_0  26# happyReduction_65
-happyReduction_65  =  happyIn37
-		 (Nothing
-	)
-
-happyReduce_66 = happyReduce 5# 27# happyReduction_66
-happyReduction_66 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut39 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut40 happy_x_3 of { happy_var_3 -> 
-	case happyOut28 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn38
-		 (let {(b,ml,s) = happy_var_1 ;
-                                                      l = (ml <?+> (happy_var_2 <^^> happy_var_5)) <** (s ++ happy_var_2:reverse (snd happy_var_3) ++ happy_var_4 ++ [happy_var_5])}
-                                                 in ImportSpecList l b (reverse (fst happy_var_3))
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_67 = happyReduce 4# 27# happyReduction_67
-happyReduction_67 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut39 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn38
-		 (let {(b,ml,s) = happy_var_1 ; l = (ml <?+> (happy_var_2 <^^> happy_var_4)) <** (s ++ happy_var_2:happy_var_3 ++ [happy_var_4])}
-                                                 in ImportSpecList l b []
-	) `HappyStk` happyRest}}}}
-
-happyReduce_68 = happySpecReduce_1  28# happyReduction_68
-happyReduction_68 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> 
-	happyIn39
-		 ((True,Just (nIS happy_var_1),[happy_var_1])
-	)}
-
-happyReduce_69 = happySpecReduce_0  28# happyReduction_69
-happyReduction_69  =  happyIn39
-		 ((False,Nothing,[])
-	)
-
-happyReduce_70 = happySpecReduce_3  29# happyReduction_70
-happyReduction_70 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut41 happy_x_3 of { happy_var_3 -> 
-	happyIn40
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_71 = happySpecReduce_1  29# happyReduction_71
-happyReduction_71 happy_x_1
-	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
-	happyIn40
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_72 = happySpecReduce_1  30# happyReduction_72
-happyReduction_72 happy_x_1
-	 =  case happyOut193 happy_x_1 of { happy_var_1 -> 
-	happyIn41
-		 (IVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_73 = happySpecReduce_1  30# happyReduction_73
-happyReduction_73 happy_x_1
-	 =  case happyOut225 happy_x_1 of { happy_var_1 -> 
-	happyIn41
-		 (IAbs (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_74 = happyReduce 4# 30# happyReduction_74
-happyReduction_74 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut225 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn41
-		 (IThingAll  (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1
-	) `HappyStk` happyRest}}}}
-
-happyReduce_75 = happySpecReduce_3  30# happyReduction_75
-happyReduction_75 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut225 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn41
-		 (IThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3])    happy_var_1 []
-	)}}}
-
-happyReduce_76 = happyReduce 4# 30# happyReduction_76
-happyReduction_76 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut225 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut42 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn41
-		 (IThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_77 = happySpecReduce_3  31# happyReduction_77
-happyReduction_77 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut43 happy_x_3 of { happy_var_3 -> 
-	happyIn42
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_78 = happySpecReduce_1  31# happyReduction_78
-happyReduction_78 happy_x_1
-	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
-	happyIn42
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_79 = happySpecReduce_1  32# happyReduction_79
-happyReduction_79 happy_x_1
-	 =  case happyOut193 happy_x_1 of { happy_var_1 -> 
-	happyIn43
-		 (VarName (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_80 = happySpecReduce_1  32# happyReduction_80
-happyReduction_80 happy_x_1
-	 =  case happyOut197 happy_x_1 of { happy_var_1 -> 
-	happyIn43
-		 (ConName (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_81 = happySpecReduce_3  33# happyReduction_81
-happyReduction_81 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
-	case happyOut45 happy_x_2 of { happy_var_2 -> 
-	case happyOut47 happy_x_3 of { happy_var_3 -> 
-	happyIn44
-		 (let (ops,ss,l) = happy_var_3
-                                                 in InfixDecl (ann happy_var_1 <++> l <** (snd happy_var_2 ++ reverse ss)) happy_var_1 (fst happy_var_2) (reverse ops)
-	)}}}
-
-happyReduce_82 = happySpecReduce_0  34# happyReduction_82
-happyReduction_82  =  happyIn45
-		 ((Nothing, [])
-	)
-
-happyReduce_83 = happyMonadReduce 1# 34# happyReduction_83
-happyReduction_83 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> 
-	( let Loc l (IntTok (i,_)) = happy_var_1 in checkPrec i >>= \i -> return (Just i, [l]))}
-	) (\r -> happyReturn (happyIn45 r))
-
-happyReduce_84 = happySpecReduce_1  35# happyReduction_84
-happyReduction_84 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> 
-	happyIn46
-		 (AssocNone  $ nIS happy_var_1
-	)}
-
-happyReduce_85 = happySpecReduce_1  35# happyReduction_85
-happyReduction_85 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> 
-	happyIn46
-		 (AssocLeft  $ nIS happy_var_1
-	)}
-
-happyReduce_86 = happySpecReduce_1  35# happyReduction_86
-happyReduction_86 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> 
-	happyIn46
-		 (AssocRight $ nIS happy_var_1
-	)}
-
-happyReduce_87 = happySpecReduce_3  36# happyReduction_87
-happyReduction_87 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut204 happy_x_3 of { happy_var_3 -> 
-	happyIn47
-		 (let (ops,ss,l) = happy_var_1 in (happy_var_3 : ops, happy_var_2 : ss, l <++> ann happy_var_3)
-	)}}}
-
-happyReduce_88 = happySpecReduce_1  36# happyReduction_88
-happyReduction_88 happy_x_1
-	 =  case happyOut204 happy_x_1 of { happy_var_1 -> 
-	happyIn47
-		 (([happy_var_1],[],ann happy_var_1)
-	)}
-
-happyReduce_89 = happyMonadReduce 2# 37# happyReduction_89
-happyReduction_89 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut49 happy_x_1 of { happy_var_1 -> 
-	case happyOut25 happy_x_2 of { happy_var_2 -> 
-	( checkRevDecls (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1 ++ reverse happy_var_2))}}
-	) (\r -> happyReturn (happyIn48 r))
-
-happyReduce_90 = happySpecReduce_3  38# happyReduction_90
-happyReduction_90 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
-	case happyOut24 happy_x_2 of { happy_var_2 -> 
-	case happyOut50 happy_x_3 of { happy_var_3 -> 
-	happyIn49
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_91 = happySpecReduce_1  38# happyReduction_91
-happyReduction_91 happy_x_1
-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
-	happyIn49
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_92 = happyMonadReduce 4# 39# happyReduction_92
-happyReduction_92 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOut78 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> 
-	case happyOut88 happy_x_4 of { happy_var_4 -> 
-	( do { dh <- checkSimpleType happy_var_2;
-                       let {l = nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]};
-                       return (TypeDecl l dh happy_var_4) })}}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_93 = happyMonadReduce 4# 39# happyReduction_93
-happyReduction_93 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> 
-	case happyOut80 happy_x_3 of { happy_var_3 -> 
-	case happyOut122 happy_x_4 of { happy_var_4 -> 
-	( do { dh <- checkSimpleType happy_var_3;
-                       let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)};
-                       return (TypeFamDecl l dh (fst happy_var_4)) })}}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_94 = happyMonadReduce 5# 39# happyReduction_94
-happyReduction_94 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut77 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 Equals) -> 
-	case happyOut88 happy_x_5 of { happy_var_5 -> 
-	( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns
-                       checkEnabled TypeFamilies ;
-                       let {l = nIS happy_var_1 <++> ann happy_var_5 <** [happy_var_1,happy_var_2,happy_var_4]};
-                       return (TypeInsDecl l happy_var_3 happy_var_5) })}}}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_95 = happyMonadReduce 4# 39# happyReduction_95
-happyReduction_95 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> 
-	case happyOut89 happy_x_2 of { happy_var_2 -> 
-	case happyOut104 happy_x_3 of { happy_var_3 -> 
-	case happyOut116 happy_x_4 of { happy_var_4 -> 
-	( do { (cs,dh) <- checkDataHeader happy_var_2;
-                       let { (qds,ss,minf) = happy_var_3;
-                             l = happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss};
-                       checkDataOrNew happy_var_1 qds;
-                       return (DataDecl l happy_var_1 cs dh (reverse qds) happy_var_4) })}}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_96 = happyMonadReduce 5# 39# happyReduction_96
-happyReduction_96 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> 
-	case happyOut89 happy_x_2 of { happy_var_2 -> 
-	case happyOut122 happy_x_3 of { happy_var_3 -> 
-	case happyOut100 happy_x_4 of { happy_var_4 -> 
-	case happyOut116 happy_x_5 of { happy_var_5 -> 
-	( do { (cs,dh) <- checkDataHeader happy_var_2;
-                       let { (gs,ss,minf) = happy_var_4;
-                             l = ann happy_var_1 <+?> minf <+?> fmap ann happy_var_5 <** (snd happy_var_3 ++ ss)};
-                       checkDataOrNew happy_var_1 gs;
-                       case (gs, fst happy_var_3) of
-                        ([], Nothing) -> return (DataDecl l happy_var_1 cs dh [] happy_var_5)
-                        _ -> checkEnabled GADTs >> return (GDataDecl l happy_var_1 cs dh (fst happy_var_3) (reverse gs) happy_var_5) })}}}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_97 = happyMonadReduce 4# 39# happyReduction_97
-happyReduction_97 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> 
-	case happyOut89 happy_x_3 of { happy_var_3 -> 
-	case happyOut122 happy_x_4 of { happy_var_4 -> 
-	( do { (cs,dh) <- checkDataHeader happy_var_3;
-                       let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)};
-                       return (DataFamDecl l cs dh (fst happy_var_4)) })}}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_98 = happyMonadReduce 5# 39# happyReduction_98
-happyReduction_98 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut88 happy_x_3 of { happy_var_3 -> 
-	case happyOut104 happy_x_4 of { happy_var_4 -> 
-	case happyOut116 happy_x_5 of { happy_var_5 -> 
-	( do { -- (cs,c,t) <- checkDataHeader happy_var_4;
-                       checkEnabled TypeFamilies ;
-                       let { (qds,ss,minf) = happy_var_4 ;
-                             l = happy_var_1 <> happy_var_3 <+?> minf <+?> fmap ann happy_var_5 <** happy_var_2:ss };
-                       checkDataOrNew happy_var_1 qds;
-                       return (DataInsDecl l happy_var_1 happy_var_3 (reverse qds) happy_var_5) })}}}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_99 = happyMonadReduce 6# 39# happyReduction_99
-happyReduction_99 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut88 happy_x_3 of { happy_var_3 -> 
-	case happyOut122 happy_x_4 of { happy_var_4 -> 
-	case happyOut100 happy_x_5 of { happy_var_5 -> 
-	case happyOut116 happy_x_6 of { happy_var_6 -> 
-	( do { -- (cs,c,t) <- checkDataHeader happy_var_4;
-                       checkEnabled TypeFamilies ;
-                       let {(gs,ss,minf) = happy_var_5;
-                            l = ann happy_var_1 <+?> minf <+?> fmap ann happy_var_6 <** (happy_var_2:snd happy_var_4 ++ ss)};
-                       checkDataOrNew happy_var_1 gs;
-                       return (GDataInsDecl l happy_var_1 happy_var_3 (fst happy_var_4) (reverse gs) happy_var_6) })}}}}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_100 = happyMonadReduce 4# 39# happyReduction_100
-happyReduction_100 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> 
-	case happyOut89 happy_x_2 of { happy_var_2 -> 
-	case happyOut97 happy_x_3 of { happy_var_3 -> 
-	case happyOut123 happy_x_4 of { happy_var_4 -> 
-	( do { (cs,dh) <- checkClassHeader happy_var_2;
-                       let {(fds,ss1,minf1) = happy_var_3;(mcs,ss2,minf2) = happy_var_4} ;
-                       let { l = nIS happy_var_1 <++> ann happy_var_2 <+?> minf1 <+?> minf2 <** (happy_var_1:ss1 ++ ss2)} ;
-                       return (ClassDecl l cs dh fds mcs) })}}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_101 = happyMonadReduce 3# 39# happyReduction_101
-happyReduction_101 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> 
-	case happyOut89 happy_x_2 of { happy_var_2 -> 
-	case happyOut128 happy_x_3 of { happy_var_3 -> 
-	( do { (cs,ih) <- checkInstHeader happy_var_2;
-                       let {(mis,ss,minf) = happy_var_3};
-                       return (InstDecl (nIS happy_var_1 <++> ann happy_var_2 <+?> minf <** (happy_var_1:ss)) cs ih mis) })}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_102 = happyMonadReduce 3# 39# happyReduction_102
-happyReduction_102 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut89 happy_x_3 of { happy_var_3 -> 
-	( do { checkEnabled StandaloneDeriving ;
-                       (cs, ih) <- checkInstHeader happy_var_3;
-                       let {l = nIS happy_var_1 <++> ann happy_var_3 <** [happy_var_1,happy_var_2]};
-                       return (DerivDecl l cs ih) })}}}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_103 = happyReduce 4# 39# happyReduction_103
-happyReduction_103 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut52 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn50
-		 (DefaultDecl (happy_var_1 <^^> happy_var_4 <** (happy_var_1:happy_var_2 : snd happy_var_3 ++ [happy_var_4])) (fst happy_var_3)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_104 = happyMonadReduce 1# 39# happyReduction_104
-happyReduction_104 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut141 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled TemplateHaskell >> checkExpr happy_var_1 >>= \e -> return (SpliceDecl (ann e) e))}
-	) (\r -> happyReturn (happyIn50 r))
-
-happyReduce_105 = happyReduce 5# 39# happyReduction_105
-happyReduction_105 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Import) -> 
-	case happyOut63 happy_x_3 of { happy_var_3 -> 
-	case happyOut64 happy_x_4 of { happy_var_4 -> 
-	case happyOut65 happy_x_5 of { happy_var_5 -> 
-	happyIn50
-		 (let (s,n,t,ss) = happy_var_5 in ForImp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 happy_var_4 s n t
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_106 = happyReduce 4# 39# happyReduction_106
-happyReduction_106 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Export) -> 
-	case happyOut63 happy_x_3 of { happy_var_3 -> 
-	case happyOut65 happy_x_4 of { happy_var_4 -> 
-	happyIn50
-		 (let (s,n,t,ss) = happy_var_4 in ForExp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3    s n t
-	) `HappyStk` happyRest}}}}
-
-happyReduce_107 = happySpecReduce_3  39# happyReduction_107
-happyReduction_107 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 RULES) -> 
-	case happyOut66 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn50
-		 (RulePragmaDecl (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ reverse happy_var_2
-	)}}}
-
-happyReduce_108 = happySpecReduce_3  39# happyReduction_108
-happyReduction_108 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> 
-	case happyOut72 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn50
-		 (DeprPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2)
-	)}}}
-
-happyReduce_109 = happySpecReduce_3  39# happyReduction_109
-happyReduction_109 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> 
-	case happyOut72 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn50
-		 (WarnPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2)
-	)}}}
-
-happyReduce_110 = happySpecReduce_3  39# happyReduction_110
-happyReduction_110 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 ANN) -> 
-	case happyOut76 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn50
-		 (AnnPragma      (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_111 = happySpecReduce_1  39# happyReduction_111
-happyReduction_111 happy_x_1
-	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (happy_var_1
-	)}
-
-happyReduce_112 = happySpecReduce_1  40# happyReduction_112
-happyReduction_112 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> 
-	happyIn51
-		 (DataType $ nIS happy_var_1
-	)}
-
-happyReduce_113 = happySpecReduce_1  40# happyReduction_113
-happyReduction_113 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> 
-	happyIn51
-		 (NewType  $ nIS happy_var_1
-	)}
-
-happyReduce_114 = happyMonadReduce 1# 41# happyReduction_114
-happyReduction_114 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut91 happy_x_1 of { happy_var_1 -> 
-	( do { ts <- mapM checkType (fst happy_var_1);
-                                              return $ (reverse ts, reverse (snd happy_var_1)) })}
-	) (\r -> happyReturn (happyIn52 r))
-
-happyReduce_115 = happySpecReduce_1  41# happyReduction_115
-happyReduction_115 happy_x_1
-	 =  case happyOut79 happy_x_1 of { happy_var_1 -> 
-	happyIn52
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_116 = happySpecReduce_0  41# happyReduction_116
-happyReduction_116  =  happyIn52
-		 (([],[])
-	)
-
-happyReduce_117 = happyMonadReduce 3# 42# happyReduction_117
-happyReduction_117 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut54 happy_x_2 of { happy_var_2 -> 
-	case happyOut25 happy_x_3 of { happy_var_3 -> 
-	( checkRevDecls (fst happy_var_2) >>= \ds -> return (ds, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}}
-	) (\r -> happyReturn (happyIn53 r))
-
-happyReduce_118 = happySpecReduce_1  42# happyReduction_118
-happyReduction_118 happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	happyIn53
-		 (([],reverse happy_var_1)
-	)}
-
-happyReduce_119 = happySpecReduce_3  43# happyReduction_119
-happyReduction_119 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
-	case happyOut24 happy_x_2 of { happy_var_2 -> 
-	case happyOut55 happy_x_3 of { happy_var_3 -> 
-	happyIn54
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_120 = happySpecReduce_1  43# happyReduction_120
-happyReduction_120 happy_x_1
-	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
-	happyIn54
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_121 = happySpecReduce_1  44# happyReduction_121
-happyReduction_121 happy_x_1
-	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
-	happyIn55
-		 (happy_var_1
-	)}
-
-happyReduce_122 = happySpecReduce_1  44# happyReduction_122
-happyReduction_122 happy_x_1
-	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
-	happyIn55
-		 (happy_var_1
-	)}
-
-happyReduce_123 = happySpecReduce_1  44# happyReduction_123
-happyReduction_123 happy_x_1
-	 =  case happyOut133 happy_x_1 of { happy_var_1 -> 
-	happyIn55
-		 (happy_var_1
-	)}
-
-happyReduce_124 = happySpecReduce_3  45# happyReduction_124
-happyReduction_124 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut53 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn56
-		 (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2)
-	)}}}
-
-happyReduce_125 = happySpecReduce_3  45# happyReduction_125
-happyReduction_125 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut222 happy_x_1 of { happy_var_1 -> 
-	case happyOut53 happy_x_2 of { happy_var_2 -> 
-	case happyOut223 happy_x_3 of { happy_var_3 -> 
-	happyIn56
-		 (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2)
-	)}}}
-
-happyReduce_126 = happyMonadReduce 3# 46# happyReduction_126
-happyReduction_126 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut88 happy_x_3 of { happy_var_3 -> 
-	( do { v <- checkSigVar happy_var_1;
-                                                               return $ TypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) [v] happy_var_3 })}}}
-	) (\r -> happyReturn (happyIn57 r))
-
-happyReduce_127 = happyMonadReduce 5# 46# happyReduction_127
-happyReduction_127 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut62 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> 
-	case happyOut88 happy_x_5 of { happy_var_5 -> 
-	( do { v <- checkSigVar happy_var_1;
-                                                               let {(vs,ss,_) = happy_var_3 ; l = happy_var_1 <> happy_var_5 <** (happy_var_2 : reverse ss ++ [happy_var_4]) } ;
-                                                               return $ TypeSig l (v : reverse vs) happy_var_5 })}}}}}
-	) (\r -> happyReturn (happyIn57 r))
-
-happyReduce_128 = happySpecReduce_1  46# happyReduction_128
-happyReduction_128 happy_x_1
-	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
-	happyIn57
-		 (happy_var_1
-	)}
-
-happyReduce_129 = happyReduce 4# 47# happyReduction_129
-happyReduction_129 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut68 happy_x_2 of { happy_var_2 -> 
-	case happyOut195 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> 
-	happyIn58
-		 (let Loc l (INLINE s) = happy_var_1 in InlineSig (l <^^> happy_var_4 <** [l,happy_var_4]) s happy_var_2 happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_130 = happyReduce 4# 47# happyReduction_130
-happyReduction_130 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 INLINE_CONLIKE) -> 
-	case happyOut68 happy_x_2 of { happy_var_2 -> 
-	case happyOut195 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> 
-	happyIn58
-		 (InlineConlikeSig (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_4]) happy_var_2 happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_131 = happyReduce 5# 47# happyReduction_131
-happyReduction_131 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> 
-	case happyOut195 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut59 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 PragmaEnd) -> 
-	happyIn58
-		 (SpecSig (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 (fst happy_var_4)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_132 = happyReduce 6# 47# happyReduction_132
-happyReduction_132 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut68 happy_x_2 of { happy_var_2 -> 
-	case happyOut195 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> 
-	case happyOut59 happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (Loc happy_var_6 PragmaEnd) -> 
-	happyIn58
-		 (let Loc l (SPECIALISE_INLINE s) = happy_var_1
-                                                          in SpecInlineSig (l <^^> happy_var_6 <** (l:happy_var_4:snd happy_var_5++[happy_var_6])) s happy_var_2 happy_var_3 (fst happy_var_5)
-	) `HappyStk` happyRest}}}}}}
-
-happyReduce_133 = happyMonadReduce 4# 47# happyReduction_133
-happyReduction_133 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut89 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> 
-	( do { (cs,ih) <- checkInstHeader happy_var_3;
-                                                               let {l = happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,happy_var_4]};
-                                                               return $ InstSig l cs ih })}}}}
-	) (\r -> happyReturn (happyIn58 r))
-
-happyReduce_134 = happySpecReduce_1  48# happyReduction_134
-happyReduction_134 happy_x_1
-	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
-	happyIn59
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_135 = happySpecReduce_3  48# happyReduction_135
-happyReduction_135 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut59 happy_x_3 of { happy_var_3 -> 
-	happyIn59
-		 ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3)
-	)}}}
-
-happyReduce_136 = happyMonadReduce 1# 49# happyReduction_136
-happyReduction_136 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut89 happy_x_1 of { happy_var_1 -> 
-	( checkType $ mkTyForall (ann happy_var_1) Nothing Nothing happy_var_1)}
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_137 = happySpecReduce_1  50# happyReduction_137
-happyReduction_137 happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	happyIn61
-		 (happy_var_1
-	)}
-
-happyReduce_138 = happySpecReduce_3  50# happyReduction_138
-happyReduction_138 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut189 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn61
-		 (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2)
-	)}}}
-
-happyReduce_139 = happySpecReduce_3  50# happyReduction_139
-happyReduction_139 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut222 happy_x_1 of { happy_var_1 -> 
-	case happyOut189 happy_x_2 of { happy_var_2 -> 
-	case happyOut223 happy_x_3 of { happy_var_3 -> 
-	happyIn61
-		 (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2)
-	)}}}
-
-happyReduce_140 = happySpecReduce_3  51# happyReduction_140
-happyReduction_140 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut62 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut193 happy_x_3 of { happy_var_3 -> 
-	happyIn62
-		 (let (ns,ss,l) = happy_var_1 in (happy_var_3 : ns, happy_var_2 : ss, l <++> ann happy_var_3)
-	)}}}
-
-happyReduce_141 = happyMonadReduce 1# 51# happyReduction_141
-happyReduction_141 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> 
-	( do { n <- checkUnQual happy_var_1;
-                                              return ([n],[],ann n) })}
-	) (\r -> happyReturn (happyIn62 r))
-
-happyReduce_142 = happySpecReduce_1  52# happyReduction_142
-happyReduction_142 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> 
-	happyIn63
-		 (StdCall (nIS happy_var_1)
-	)}
-
-happyReduce_143 = happySpecReduce_1  52# happyReduction_143
-happyReduction_143 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> 
-	happyIn63
-		 (CCall   (nIS happy_var_1)
-	)}
-
-happyReduce_144 = happySpecReduce_1  53# happyReduction_144
-happyReduction_144 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> 
-	happyIn64
-		 (Just $ PlaySafe  (nIS happy_var_1) False
-	)}
-
-happyReduce_145 = happySpecReduce_1  53# happyReduction_145
-happyReduction_145 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> 
-	happyIn64
-		 (Just $ PlayRisky (nIS happy_var_1)
-	)}
-
-happyReduce_146 = happySpecReduce_1  53# happyReduction_146
-happyReduction_146 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> 
-	happyIn64
-		 (Just $ PlaySafe  (nIS happy_var_1) True
-	)}
-
-happyReduce_147 = happySpecReduce_0  53# happyReduction_147
-happyReduction_147  =  happyIn64
-		 (Nothing
-	)
-
-happyReduce_148 = happyReduce 4# 54# happyReduction_148
-happyReduction_148 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut194 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut77 happy_x_4 of { happy_var_4 -> 
-	happyIn65
-		 (let Loc l (StringTok (s,_)) = happy_var_1 in (Just s, happy_var_2, happy_var_4, [l,happy_var_3])
-	) `HappyStk` happyRest}}}}
-
-happyReduce_149 = happySpecReduce_3  54# happyReduction_149
-happyReduction_149 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut194 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut77 happy_x_3 of { happy_var_3 -> 
-	happyIn65
-		 ((Nothing, happy_var_1, happy_var_3, [happy_var_2])
-	)}}}
-
-happyReduce_150 = happySpecReduce_3  55# happyReduction_150
-happyReduction_150 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut66 happy_x_1 of { happy_var_1 -> 
-	case happyOut67 happy_x_3 of { happy_var_3 -> 
-	happyIn66
-		 (happy_var_3 : happy_var_1
-	)}}
-
-happyReduce_151 = happySpecReduce_2  55# happyReduction_151
-happyReduction_151 happy_x_2
-	happy_x_1
-	 =  case happyOut66 happy_x_1 of { happy_var_1 -> 
-	happyIn66
-		 (happy_var_1
-	)}
-
-happyReduce_152 = happySpecReduce_1  55# happyReduction_152
-happyReduction_152 happy_x_1
-	 =  case happyOut67 happy_x_1 of { happy_var_1 -> 
-	happyIn66
-		 ([happy_var_1]
-	)}
-
-happyReduce_153 = happySpecReduce_0  55# happyReduction_153
-happyReduction_153  =  happyIn66
-		 ([]
-	)
-
-happyReduce_154 = happyMonadReduce 6# 56# happyReduction_154
-happyReduction_154 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut68 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOut141 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 Equals) -> 
-	case happyOut139 happy_x_6 of { happy_var_6 -> 
-	( do { let {Loc l (StringTok (s,_)) = happy_var_1};
-                                                                  e <- checkRuleExpr happy_var_4;
-                                                                  return $ Rule (nIS l <++> ann happy_var_6 <** l:snd happy_var_3 ++ [happy_var_5]) s happy_var_2 (fst happy_var_3) e happy_var_6 })}}}}}}
-	) (\r -> happyReturn (happyIn67 r))
-
-happyReduce_155 = happySpecReduce_0  57# happyReduction_155
-happyReduction_155  =  happyIn68
-		 (Nothing
-	)
-
-happyReduce_156 = happySpecReduce_3  57# happyReduction_156
-happyReduction_156 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> 
-	happyIn68
-		 (let Loc l (IntTok (i,_)) = happy_var_2 in Just $ ActiveFrom  (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3])    (fromInteger i)
-	)}}}
-
-happyReduce_157 = happyReduce 4# 57# happyReduction_157
-happyReduction_157 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightSquare) -> 
-	happyIn68
-		 (let Loc l (IntTok (i,_)) = happy_var_3 in Just $ ActiveUntil (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,l,happy_var_4]) (fromInteger i)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_158 = happySpecReduce_0  58# happyReduction_158
-happyReduction_158  =  happyIn69
-		 ((Nothing,[])
-	)
-
-happyReduce_159 = happySpecReduce_3  58# happyReduction_159
-happyReduction_159 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	case happyOut70 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> 
-	happyIn69
-		 ((Just happy_var_2,[happy_var_1,happy_var_3])
-	)}}}
-
-happyReduce_160 = happySpecReduce_1  59# happyReduction_160
-happyReduction_160 happy_x_1
-	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
-	happyIn70
-		 ([happy_var_1]
-	)}
-
-happyReduce_161 = happySpecReduce_2  59# happyReduction_161
-happyReduction_161 happy_x_2
-	happy_x_1
-	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
-	case happyOut70 happy_x_2 of { happy_var_2 -> 
-	happyIn70
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_162 = happySpecReduce_1  60# happyReduction_162
-happyReduction_162 happy_x_1
-	 =  case happyOut210 happy_x_1 of { happy_var_1 -> 
-	happyIn71
-		 (RuleVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_163 = happyReduce 5# 60# happyReduction_163
-happyReduction_163 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut210 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut88 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn71
-		 (TypedRuleVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_164 = happySpecReduce_3  61# happyReduction_164
-happyReduction_164 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut72 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> 
-	case happyOut73 happy_x_3 of { happy_var_3 -> 
-	happyIn72
-		 ((fst happy_var_3 : fst happy_var_1, snd happy_var_1 ++ (happy_var_2:snd happy_var_3))
-	)}}}
-
-happyReduce_165 = happySpecReduce_2  61# happyReduction_165
-happyReduction_165 happy_x_2
-	happy_x_1
-	 =  case happyOut72 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> 
-	happyIn72
-		 ((fst happy_var_1, snd happy_var_1 ++ [happy_var_2])
-	)}}
-
-happyReduce_166 = happySpecReduce_1  61# happyReduction_166
-happyReduction_166 happy_x_1
-	 =  case happyOut73 happy_x_1 of { happy_var_1 -> 
-	happyIn72
-		 (([fst happy_var_1],snd happy_var_1)
-	)}
-
-happyReduce_167 = happySpecReduce_0  61# happyReduction_167
-happyReduction_167  =  happyIn72
-		 (([],[])
-	)
-
-happyReduce_168 = happySpecReduce_2  62# happyReduction_168
-happyReduction_168 happy_x_2
-	happy_x_1
-	 =  case happyOut74 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	happyIn73
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in ((fst happy_var_1,s),snd happy_var_1 ++ [l])
-	)}}
-
-happyReduce_169 = happySpecReduce_1  63# happyReduction_169
-happyReduction_169 happy_x_1
-	 =  case happyOut75 happy_x_1 of { happy_var_1 -> 
-	happyIn74
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_170 = happySpecReduce_3  63# happyReduction_170
-happyReduction_170 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut75 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut74 happy_x_3 of { happy_var_3 -> 
-	happyIn74
-		 ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3)
-	)}}}
-
-happyReduce_171 = happySpecReduce_1  64# happyReduction_171
-happyReduction_171 happy_x_1
-	 =  case happyOut197 happy_x_1 of { happy_var_1 -> 
-	happyIn75
-		 (happy_var_1
-	)}
-
-happyReduce_172 = happySpecReduce_1  64# happyReduction_172
-happyReduction_172 happy_x_1
-	 =  case happyOut193 happy_x_1 of { happy_var_1 -> 
-	happyIn75
-		 (happy_var_1
-	)}
-
-happyReduce_173 = happyMonadReduce 3# 65# happyReduction_173
-happyReduction_173 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOut213 happy_x_2 of { happy_var_2 -> 
-	case happyOut150 happy_x_3 of { happy_var_3 -> 
-	( checkExpr happy_var_3 >>= \e -> return (TypeAnn   (nIS happy_var_1 <++> ann e <** [happy_var_1]) happy_var_2 e))}}}
-	) (\r -> happyReturn (happyIn76 r))
-
-happyReduce_174 = happyMonadReduce 2# 65# happyReduction_174
-happyReduction_174 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> 
-	case happyOut150 happy_x_2 of { happy_var_2 -> 
-	( checkExpr happy_var_2 >>= \e -> return (ModuleAnn (nIS happy_var_1 <++> ann e <** [happy_var_1])    e))}}
-	) (\r -> happyReturn (happyIn76 r))
-
-happyReduce_175 = happyMonadReduce 2# 65# happyReduction_175
-happyReduction_175 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> 
-	case happyOut150 happy_x_2 of { happy_var_2 -> 
-	( checkExpr happy_var_2 >>= \e -> return (Ann (happy_var_1 <> e) happy_var_1 e))}}
-	) (\r -> happyReturn (happyIn76 r))
-
-happyReduce_176 = happyMonadReduce 1# 66# happyReduction_176
-happyReduction_176 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut78 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1)}
-	) (\r -> happyReturn (happyIn77 r))
-
-happyReduce_177 = happySpecReduce_1  67# happyReduction_177
-happyReduction_177 happy_x_1
-	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
-	happyIn78
-		 (happy_var_1
-	)}
-
-happyReduce_178 = happySpecReduce_3  67# happyReduction_178
-happyReduction_178 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
-	case happyOut87 happy_x_2 of { happy_var_2 -> 
-	case happyOut78 happy_x_3 of { happy_var_3 -> 
-	happyIn78
-		 (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_179 = happySpecReduce_3  67# happyReduction_179
-happyReduction_179 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
-	case happyOut228 happy_x_2 of { happy_var_2 -> 
-	case happyOut78 happy_x_3 of { happy_var_3 -> 
-	happyIn78
-		 (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_180 = happySpecReduce_3  67# happyReduction_180
-happyReduction_180 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOut89 happy_x_3 of { happy_var_3 -> 
-	happyIn78
-		 (TyFun (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_181 = happyMonadReduce 3# 67# happyReduction_181
-happyReduction_181 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> 
-	case happyOut82 happy_x_3 of { happy_var_3 -> 
-	( do { checkEnabled TypeFamilies ;
-                                              let {l = happy_var_1 <> happy_var_3 <** [happy_var_2]};
-                                              return $ TyPred l $ EqualP l happy_var_1 happy_var_3 })}}}
-	) (\r -> happyReturn (happyIn78 r))
-
-happyReduce_182 = happyMonadReduce 1# 68# happyReduction_182
-happyReduction_182 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut80 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1)}
-	) (\r -> happyReturn (happyIn79 r))
-
-happyReduce_183 = happySpecReduce_3  69# happyReduction_183
-happyReduction_183 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut78 happy_x_3 of { happy_var_3 -> 
-	happyIn80
-		 (let l = (happy_var_1 <> happy_var_3 <** [happy_var_2]) in TyPred l $ IParam l happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_184 = happySpecReduce_1  69# happyReduction_184
-happyReduction_184 happy_x_1
-	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
-	happyIn80
-		 (happy_var_1
-	)}
-
-happyReduce_185 = happyMonadReduce 1# 70# happyReduction_185
-happyReduction_185 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1)}
-	) (\r -> happyReturn (happyIn81 r))
-
-happyReduce_186 = happySpecReduce_2  71# happyReduction_186
-happyReduction_186 happy_x_2
-	happy_x_1
-	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
-	case happyOut84 happy_x_2 of { happy_var_2 -> 
-	happyIn82
-		 (TyApp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2
-	)}}
-
-happyReduce_187 = happySpecReduce_1  71# happyReduction_187
-happyReduction_187 happy_x_1
-	 =  case happyOut84 happy_x_1 of { happy_var_1 -> 
-	happyIn82
-		 (happy_var_1
-	)}
-
-happyReduce_188 = happyMonadReduce 1# 72# happyReduction_188
-happyReduction_188 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut84 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1)}
-	) (\r -> happyReturn (happyIn83 r))
-
-happyReduce_189 = happySpecReduce_1  73# happyReduction_189
-happyReduction_189 happy_x_1
-	 =  case happyOut85 happy_x_1 of { happy_var_1 -> 
-	happyIn84
-		 (TyCon   (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_190 = happySpecReduce_1  73# happyReduction_190
-happyReduction_190 happy_x_1
-	 =  case happyOut227 happy_x_1 of { happy_var_1 -> 
-	happyIn84
-		 (TyVar   (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_191 = happySpecReduce_3  73# happyReduction_191
-happyReduction_191 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut91 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn84
-		 (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Boxed   (reverse (fst happy_var_2))
-	)}}}
-
-happyReduce_192 = happySpecReduce_3  73# happyReduction_192
-happyReduction_192 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOut92 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> 
-	happyIn84
-		 (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Unboxed (reverse (fst happy_var_2))
-	)}}}
-
-happyReduce_193 = happySpecReduce_3  73# happyReduction_193
-happyReduction_193 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOut80 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> 
-	happyIn84
-		 (TyList  (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_194 = happySpecReduce_3  73# happyReduction_194
-happyReduction_194 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut89 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn84
-		 (TyParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_195 = happyReduce 5# 73# happyReduction_195
-happyReduction_195 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut89 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut119 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn84
-		 (TyKind  (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_196 = happySpecReduce_1  74# happyReduction_196
-happyReduction_196 happy_x_1
-	 =  case happyOut86 happy_x_1 of { happy_var_1 -> 
-	happyIn85
-		 (happy_var_1
-	)}
-
-happyReduce_197 = happySpecReduce_2  74# happyReduction_197
-happyReduction_197 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> 
-	happyIn85
-		 (unit_tycon_name              (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_198 = happySpecReduce_3  74# happyReduction_198
-happyReduction_198 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn85
-		 (fun_tycon_name               (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3])
-	)}}}
-
-happyReduce_199 = happySpecReduce_2  74# happyReduction_199
-happyReduction_199 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> 
-	happyIn85
-		 (list_tycon_name              (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_200 = happySpecReduce_3  74# happyReduction_200
-happyReduction_200 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut153 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn85
-		 (tuple_tycon_name             (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Boxed (length happy_var_2)
-	)}}}
-
-happyReduce_201 = happySpecReduce_2  74# happyReduction_201
-happyReduction_201 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> 
-	happyIn85
-		 (unboxed_singleton_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_202 = happySpecReduce_3  74# happyReduction_202
-happyReduction_202 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOut153 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> 
-	happyIn85
-		 (tuple_tycon_name             (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Unboxed (length happy_var_2)
-	)}}}
-
-happyReduce_203 = happySpecReduce_1  75# happyReduction_203
-happyReduction_203 happy_x_1
-	 =  case happyOut212 happy_x_1 of { happy_var_1 -> 
-	happyIn86
-		 (happy_var_1
-	)}
-
-happyReduce_204 = happySpecReduce_3  75# happyReduction_204
-happyReduction_204 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut207 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn86
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_205 = happySpecReduce_1  76# happyReduction_205
-happyReduction_205 happy_x_1
-	 =  case happyOut203 happy_x_1 of { happy_var_1 -> 
-	happyIn87
-		 (happy_var_1
-	)}
-
-happyReduce_206 = happyMonadReduce 1# 77# happyReduction_206
-happyReduction_206 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut89 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1)}
-	) (\r -> happyReturn (happyIn88 r))
-
-happyReduce_207 = happyReduce 4# 78# happyReduction_207
-happyReduction_207 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	case happyOut93 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> 
-	case happyOut89 happy_x_4 of { happy_var_4 -> 
-	happyIn89
-		 (TyForall (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (Just (reverse (fst happy_var_2))) Nothing happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_208 = happySpecReduce_2  78# happyReduction_208
-happyReduction_208 happy_x_2
-	happy_x_1
-	 =  case happyOut90 happy_x_1 of { happy_var_1 -> 
-	case happyOut89 happy_x_2 of { happy_var_2 -> 
-	happyIn89
-		 (TyForall (happy_var_1 <> happy_var_2) Nothing (Just happy_var_1) happy_var_2
-	)}}
-
-happyReduce_209 = happySpecReduce_1  78# happyReduction_209
-happyReduction_209 happy_x_1
-	 =  case happyOut80 happy_x_1 of { happy_var_1 -> 
-	happyIn89
-		 (happy_var_1
-	)}
-
-happyReduce_210 = happyMonadReduce 2# 79# happyReduction_210
-happyReduction_210 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleArrow) -> 
-	( checkPContext $ (amap (\l -> l <++> nIS happy_var_2 <** (srcInfoPoints l ++ [happy_var_2]))) happy_var_1)}}
-	) (\r -> happyReturn (happyIn90 r))
-
-happyReduce_211 = happyMonadReduce 4# 79# happyReduction_211
-happyReduction_211 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> 
-	case happyOut82 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleArrow) -> 
-	( do { checkEnabled TypeFamilies;
-                                              let {l = happy_var_1 <> happy_var_3 <** [happy_var_2,happy_var_4]};
-                                              checkPContext (TyPred l $ EqualP l happy_var_1 happy_var_3) })}}}}
-	) (\r -> happyReturn (happyIn90 r))
-
-happyReduce_212 = happySpecReduce_3  80# happyReduction_212
-happyReduction_212 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut92 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut89 happy_x_3 of { happy_var_3 -> 
-	happyIn91
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_213 = happySpecReduce_1  81# happyReduction_213
-happyReduction_213 happy_x_1
-	 =  case happyOut89 happy_x_1 of { happy_var_1 -> 
-	happyIn92
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_214 = happySpecReduce_3  81# happyReduction_214
-happyReduction_214 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut92 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut89 happy_x_3 of { happy_var_3 -> 
-	happyIn92
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_215 = happySpecReduce_2  82# happyReduction_215
-happyReduction_215 happy_x_2
-	happy_x_1
-	 =  case happyOut93 happy_x_1 of { happy_var_1 -> 
-	case happyOut94 happy_x_2 of { happy_var_2 -> 
-	happyIn93
-		 ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2))
-	)}}
-
-happyReduce_216 = happySpecReduce_0  82# happyReduction_216
-happyReduction_216  =  happyIn93
-		 (([],Nothing)
-	)
-
-happyReduce_217 = happySpecReduce_1  83# happyReduction_217
-happyReduction_217 happy_x_1
-	 =  case happyOut227 happy_x_1 of { happy_var_1 -> 
-	happyIn94
-		 (UnkindedVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_218 = happyReduce 5# 83# happyReduction_218
-happyReduction_218 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut227 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut119 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn94
-		 (KindedVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_219 = happySpecReduce_2  84# happyReduction_219
-happyReduction_219 happy_x_2
-	happy_x_1
-	 =  case happyOut95 happy_x_1 of { happy_var_1 -> 
-	case happyOut227 happy_x_2 of { happy_var_2 -> 
-	happyIn95
-		 ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2))
-	)}}
-
-happyReduce_220 = happySpecReduce_0  84# happyReduction_220
-happyReduction_220  =  happyIn95
-		 (([], Nothing)
-	)
-
-happyReduce_221 = happySpecReduce_2  85# happyReduction_221
-happyReduction_221 happy_x_2
-	happy_x_1
-	 =  case happyOut95 happy_x_1 of { happy_var_1 -> 
-	case happyOut227 happy_x_2 of { happy_var_2 -> 
-	happyIn96
-		 ((happy_var_2 : fst happy_var_1, snd happy_var_1 <?+> ann happy_var_2)
-	)}}
-
-happyReduce_222 = happySpecReduce_0  86# happyReduction_222
-happyReduction_222  =  happyIn97
-		 (([],[], Nothing)
-	)
-
-happyReduce_223 = happyMonadReduce 2# 86# happyReduction_223
-happyReduction_223 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> 
-	case happyOut98 happy_x_2 of { happy_var_2 -> 
-	( do { checkEnabled FunctionalDependencies ;
-                                              let {(fds,ss,l) = happy_var_2} ;
-                                              return (reverse fds, happy_var_1 : reverse ss, Just (nIS happy_var_1 <++> l)) })}}
-	) (\r -> happyReturn (happyIn97 r))
-
-happyReduce_224 = happySpecReduce_3  87# happyReduction_224
-happyReduction_224 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut99 happy_x_3 of { happy_var_3 -> 
-	happyIn98
-		 (let (fds,ss,l) = happy_var_1 in (happy_var_3 : fds, happy_var_2 : ss, l <++> ann happy_var_3)
-	)}}}
-
-happyReduce_225 = happySpecReduce_1  87# happyReduction_225
-happyReduction_225 happy_x_1
-	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
-	happyIn98
-		 (([happy_var_1],[],ann happy_var_1)
-	)}
-
-happyReduce_226 = happySpecReduce_3  88# happyReduction_226
-happyReduction_226 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut96 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOut96 happy_x_3 of { happy_var_3 -> 
-	happyIn99
-		 (FunDep (snd happy_var_1 <++> snd happy_var_3 <** [happy_var_2]) (reverse (fst happy_var_1)) (reverse (fst happy_var_3))
-	)}}}
-
-happyReduce_227 = happyMonadReduce 4# 89# happyReduction_227
-happyReduction_227 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut101 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}}
-	) (\r -> happyReturn (happyIn100 r))
-
-happyReduce_228 = happyMonadReduce 4# 89# happyReduction_228
-happyReduction_228 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	case happyOut222 happy_x_2 of { happy_var_2 -> 
-	case happyOut101 happy_x_3 of { happy_var_3 -> 
-	case happyOut223 happy_x_4 of { happy_var_4 -> 
-	( return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}}
-	) (\r -> happyReturn (happyIn100 r))
-
-happyReduce_229 = happyMonadReduce 0# 89# happyReduction_229
-happyReduction_229 (happyRest) tk
-	 = happyThen (( checkEnabled EmptyDataDecls >> return ([],[],Nothing))
-	) (\r -> happyReturn (happyIn100 r))
-
-happyReduce_230 = happySpecReduce_3  90# happyReduction_230
-happyReduction_230 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut102 happy_x_2 of { happy_var_2 -> 
-	case happyOut25 happy_x_3 of { happy_var_3 -> 
-	happyIn101
-		 ((fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3)
-	)}}}
-
-happyReduce_231 = happySpecReduce_3  91# happyReduction_231
-happyReduction_231 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
-	case happyOut24 happy_x_2 of { happy_var_2 -> 
-	case happyOut103 happy_x_3 of { happy_var_3 -> 
-	happyIn102
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_232 = happySpecReduce_1  91# happyReduction_232
-happyReduction_232 happy_x_1
-	 =  case happyOut103 happy_x_1 of { happy_var_1 -> 
-	happyIn102
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_233 = happyMonadReduce 3# 92# happyReduction_233
-happyReduction_233 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut198 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut88 happy_x_3 of { happy_var_3 -> 
-	( do { c <- checkUnQual happy_var_1;
-                                               return $ GadtDecl (happy_var_1 <> happy_var_3 <** [happy_var_2]) c happy_var_3 })}}}
-	) (\r -> happyReturn (happyIn103 r))
-
-happyReduce_234 = happySpecReduce_2  93# happyReduction_234
-happyReduction_234 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> 
-	case happyOut105 happy_x_2 of { happy_var_2 -> 
-	happyIn104
-		 (let (ds,ss,l) = happy_var_2 in (ds, happy_var_1 : reverse ss, Just $ nIS happy_var_1 <++> l)
-	)}}
-
-happyReduce_235 = happySpecReduce_3  94# happyReduction_235
-happyReduction_235 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut105 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut106 happy_x_3 of { happy_var_3 -> 
-	happyIn105
-		 (let (ds,ss,l) = happy_var_1 in (happy_var_3 : ds, happy_var_2 : ss, l <++> ann happy_var_3)
-	)}}}
-
-happyReduce_236 = happySpecReduce_1  94# happyReduction_236
-happyReduction_236 happy_x_1
-	 =  case happyOut106 happy_x_1 of { happy_var_1 -> 
-	happyIn105
-		 (([happy_var_1],[],ann happy_var_1)
-	)}
-
-happyReduce_237 = happyMonadReduce 3# 95# happyReduction_237
-happyReduction_237 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut107 happy_x_1 of { happy_var_1 -> 
-	case happyOut90 happy_x_2 of { happy_var_2 -> 
-	case happyOut108 happy_x_3 of { happy_var_3 -> 
-	( do { checkEnabled ExistentialQuantification ;
-                                               ctxt <- checkContext (Just happy_var_2) ;
-                                               let {(mtvs,ss,ml) = happy_var_1} ;
-                                               return $ QualConDecl (ml <?+> ann happy_var_3 <** ss) mtvs ctxt happy_var_3 })}}}
-	) (\r -> happyReturn (happyIn106 r))
-
-happyReduce_238 = happySpecReduce_2  95# happyReduction_238
-happyReduction_238 happy_x_2
-	happy_x_1
-	 =  case happyOut107 happy_x_1 of { happy_var_1 -> 
-	case happyOut108 happy_x_2 of { happy_var_2 -> 
-	happyIn106
-		 (let (mtvs, ss, ml) = happy_var_1 in QualConDecl (ml <?+> ann happy_var_2 <** ss) mtvs Nothing happy_var_2
-	)}}
-
-happyReduce_239 = happyMonadReduce 3# 96# happyReduction_239
-happyReduction_239 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	case happyOut93 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> 
-	( checkEnabled ExistentialQuantification >> return (Just (fst happy_var_2), [happy_var_1,happy_var_3], Just $ happy_var_1 <^^> happy_var_3))}}}
-	) (\r -> happyReturn (happyIn107 r))
-
-happyReduce_240 = happySpecReduce_0  96# happyReduction_240
-happyReduction_240  =  happyIn107
-		 ((Nothing, [], Nothing)
-	)
-
-happyReduce_241 = happySpecReduce_1  97# happyReduction_241
-happyReduction_241 happy_x_1
-	 =  case happyOut109 happy_x_1 of { happy_var_1 -> 
-	happyIn108
-		 (let (n,ts,l) = happy_var_1 in ConDecl l n ts
-	)}
-
-happyReduce_242 = happySpecReduce_3  97# happyReduction_242
-happyReduction_242 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut112 happy_x_1 of { happy_var_1 -> 
-	case happyOut202 happy_x_2 of { happy_var_2 -> 
-	case happyOut112 happy_x_3 of { happy_var_3 -> 
-	happyIn108
-		 (InfixConDecl (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_243 = happyMonadReduce 3# 97# happyReduction_243
-happyReduction_243 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut198 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	( do { c <- checkUnQual happy_var_1; return $ RecDecl (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) c [] })}}}
-	) (\r -> happyReturn (happyIn108 r))
-
-happyReduce_244 = happyMonadReduce 4# 97# happyReduction_244
-happyReduction_244 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut198 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut113 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( do { c <- checkUnQual happy_var_1;
-                                              return $ RecDecl (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) c (reverse (fst happy_var_3)) })}}}}
-	) (\r -> happyReturn (happyIn108 r))
-
-happyReduce_245 = happyMonadReduce 1# 98# happyReduction_245
-happyReduction_245 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> 
-	( do { (c,ts) <- splitTyConApp happy_var_1;
-                                              return (c,map (\t -> UnBangedTy (ann t) t) ts,ann happy_var_1) })}
-	) (\r -> happyReturn (happyIn109 r))
-
-happyReduce_246 = happySpecReduce_1  98# happyReduction_246
-happyReduction_246 happy_x_1
-	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
-	happyIn109
-		 (happy_var_1
-	)}
-
-happyReduce_247 = happyMonadReduce 3# 99# happyReduction_247
-happyReduction_247 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Exclamation) -> 
-	case happyOut83 happy_x_3 of { happy_var_3 -> 
-	( do { (c,ts) <- splitTyConApp happy_var_1;
-                                                          return (c,map (\t -> UnBangedTy (ann t) t) ts++
-                                                                  [BangedTy (nIS happy_var_2 <++> ann happy_var_3 <** [happy_var_2]) happy_var_3], happy_var_1 <> happy_var_3) })}}}
-	) (\r -> happyReturn (happyIn110 r))
-
-happyReduce_248 = happyMonadReduce 5# 99# happyReduction_248
-happyReduction_248 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 UNPACK) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 Exclamation) -> 
-	case happyOut83 happy_x_5 of { happy_var_5 -> 
-	( do { (c,ts) <- splitTyConApp happy_var_1;
-                                                          return (c,map (\t -> UnBangedTy (ann t) t) ts++
-                                                                  [UnpackedTy (nIS happy_var_2 <++> ann happy_var_5 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_5], happy_var_1 <> happy_var_5) })}}}}}
-	) (\r -> happyReturn (happyIn110 r))
-
-happyReduce_249 = happySpecReduce_2  99# happyReduction_249
-happyReduction_249 happy_x_2
-	happy_x_1
-	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
-	case happyOut111 happy_x_2 of { happy_var_2 -> 
-	happyIn110
-		 (let (n,ts,l) = happy_var_1 in (n, ts ++ [happy_var_2],l <++> ann happy_var_2)
-	)}}
-
-happyReduce_250 = happySpecReduce_1  100# happyReduction_250
-happyReduction_250 happy_x_1
-	 =  case happyOut83 happy_x_1 of { happy_var_1 -> 
-	happyIn111
-		 (UnBangedTy (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_251 = happySpecReduce_2  100# happyReduction_251
-happyReduction_251 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	case happyOut83 happy_x_2 of { happy_var_2 -> 
-	happyIn111
-		 (BangedTy   (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_252 = happyReduce 4# 100# happyReduction_252
-happyReduction_252 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> 
-	case happyOut83 happy_x_4 of { happy_var_4 -> 
-	happyIn111
-		 (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_253 = happySpecReduce_1  101# happyReduction_253
-happyReduction_253 happy_x_1
-	 =  case happyOut81 happy_x_1 of { happy_var_1 -> 
-	happyIn112
-		 (UnBangedTy (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_254 = happySpecReduce_2  101# happyReduction_254
-happyReduction_254 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	case happyOut83 happy_x_2 of { happy_var_2 -> 
-	happyIn112
-		 (BangedTy   (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_255 = happyReduce 4# 101# happyReduction_255
-happyReduction_255 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> 
-	case happyOut83 happy_x_4 of { happy_var_4 -> 
-	happyIn112
-		 (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_256 = happySpecReduce_3  102# happyReduction_256
-happyReduction_256 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut113 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut114 happy_x_3 of { happy_var_3 -> 
-	happyIn113
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_257 = happySpecReduce_1  102# happyReduction_257
-happyReduction_257 happy_x_1
-	 =  case happyOut114 happy_x_1 of { happy_var_1 -> 
-	happyIn113
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_258 = happySpecReduce_3  103# happyReduction_258
-happyReduction_258 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut62 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut115 happy_x_3 of { happy_var_3 -> 
-	happyIn114
-		 (let (ns,ss,l) = happy_var_1 in FieldDecl (l <++> ann happy_var_3 <** (reverse ss ++ [happy_var_2])) (reverse ns) happy_var_3
-	)}}}
-
-happyReduce_259 = happySpecReduce_1  104# happyReduction_259
-happyReduction_259 happy_x_1
-	 =  case happyOut88 happy_x_1 of { happy_var_1 -> 
-	happyIn115
-		 (UnBangedTy (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_260 = happySpecReduce_2  104# happyReduction_260
-happyReduction_260 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	case happyOut83 happy_x_2 of { happy_var_2 -> 
-	happyIn115
-		 (BangedTy   (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_261 = happyReduce 4# 104# happyReduction_261
-happyReduction_261 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> 
-	case happyOut83 happy_x_4 of { happy_var_4 -> 
-	happyIn115
-		 (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_262 = happySpecReduce_0  105# happyReduction_262
-happyReduction_262  =  happyIn116
-		 (Nothing
-	)
-
-happyReduce_263 = happySpecReduce_2  105# happyReduction_263
-happyReduction_263 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> 
-	case happyOut118 happy_x_2 of { happy_var_2 -> 
-	happyIn116
-		 (let l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] in Just $ Deriving l [IHead (ann happy_var_2) happy_var_2 []]
-	)}}
-
-happyReduce_264 = happySpecReduce_3  105# happyReduction_264
-happyReduction_264 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn116
-		 (Just $ Deriving (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3]) []
-	)}}}
-
-happyReduce_265 = happyReduce 4# 105# happyReduction_265
-happyReduction_265 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut117 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn116
-		 (Just $ Deriving (happy_var_1 <^^> happy_var_4 <** happy_var_1:happy_var_2: reverse (snd happy_var_3) ++ [happy_var_4]) (reverse (fst happy_var_3))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_266 = happyMonadReduce 1# 106# happyReduction_266
-happyReduction_266 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut92 happy_x_1 of { happy_var_1 -> 
-	( checkDeriving (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1))}
-	) (\r -> happyReturn (happyIn117 r))
-
-happyReduce_267 = happySpecReduce_1  107# happyReduction_267
-happyReduction_267 happy_x_1
-	 =  case happyOut212 happy_x_1 of { happy_var_1 -> 
-	happyIn118
-		 (happy_var_1
-	)}
-
-happyReduce_268 = happyMonadReduce 1# 108# happyReduction_268
-happyReduction_268 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut120 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled KindSignatures >> return happy_var_1)}
-	) (\r -> happyReturn (happyIn119 r))
-
-happyReduce_269 = happySpecReduce_1  109# happyReduction_269
-happyReduction_269 happy_x_1
-	 =  case happyOut121 happy_x_1 of { happy_var_1 -> 
-	happyIn120
-		 (happy_var_1
-	)}
-
-happyReduce_270 = happySpecReduce_3  109# happyReduction_270
-happyReduction_270 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut121 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOut120 happy_x_3 of { happy_var_3 -> 
-	happyIn120
-		 (KindFn (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_271 = happySpecReduce_1  110# happyReduction_271
-happyReduction_271 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> 
-	happyIn121
-		 (KindStar  (nIS happy_var_1)
-	)}
-
-happyReduce_272 = happySpecReduce_1  110# happyReduction_272
-happyReduction_272 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	happyIn121
-		 (KindBang  (nIS happy_var_1)
-	)}
-
-happyReduce_273 = happySpecReduce_3  110# happyReduction_273
-happyReduction_273 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut120 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn121
-		 (KindParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_274 = happySpecReduce_0  111# happyReduction_274
-happyReduction_274  =  happyIn122
-		 ((Nothing,[])
-	)
-
-happyReduce_275 = happySpecReduce_2  111# happyReduction_275
-happyReduction_275 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> 
-	case happyOut119 happy_x_2 of { happy_var_2 -> 
-	happyIn122
-		 ((Just happy_var_2,[happy_var_1])
-	)}}
-
-happyReduce_276 = happyMonadReduce 4# 112# happyReduction_276
-happyReduction_276 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut124 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}}
-	) (\r -> happyReturn (happyIn123 r))
-
-happyReduce_277 = happyMonadReduce 4# 112# happyReduction_277
-happyReduction_277 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	case happyOut222 happy_x_2 of { happy_var_2 -> 
-	case happyOut124 happy_x_3 of { happy_var_3 -> 
-	case happyOut223 happy_x_4 of { happy_var_4 -> 
-	( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}}
-	) (\r -> happyReturn (happyIn123 r))
-
-happyReduce_278 = happySpecReduce_0  112# happyReduction_278
-happyReduction_278  =  happyIn123
-		 ((Nothing,[],Nothing)
-	)
-
-happyReduce_279 = happyMonadReduce 3# 113# happyReduction_279
-happyReduction_279 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut125 happy_x_2 of { happy_var_2 -> 
-	case happyOut25 happy_x_3 of { happy_var_3 -> 
-	( checkRevClsDecls (fst happy_var_2) >>= \cs -> return (cs, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}}
-	) (\r -> happyReturn (happyIn124 r))
-
-happyReduce_280 = happySpecReduce_1  113# happyReduction_280
-happyReduction_280 happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	happyIn124
-		 (([],reverse happy_var_1)
-	)}
-
-happyReduce_281 = happySpecReduce_3  114# happyReduction_281
-happyReduction_281 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut125 happy_x_1 of { happy_var_1 -> 
-	case happyOut24 happy_x_2 of { happy_var_2 -> 
-	case happyOut126 happy_x_3 of { happy_var_3 -> 
-	happyIn125
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_282 = happySpecReduce_1  114# happyReduction_282
-happyReduction_282 happy_x_1
-	 =  case happyOut126 happy_x_1 of { happy_var_1 -> 
-	happyIn125
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_283 = happySpecReduce_1  115# happyReduction_283
-happyReduction_283 happy_x_1
-	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
-	happyIn126
-		 (ClsDecl (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_284 = happyMonadReduce 1# 115# happyReduction_284
-happyReduction_284 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled TypeFamilies >> return happy_var_1)}
-	) (\r -> happyReturn (happyIn126 r))
-
-happyReduce_285 = happyMonadReduce 3# 116# happyReduction_285
-happyReduction_285 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOut80 happy_x_2 of { happy_var_2 -> 
-	case happyOut122 happy_x_3 of { happy_var_3 -> 
-	( do { dh <- checkSimpleType happy_var_2;
-                    return (ClsTyFam  (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) dh (fst happy_var_3)) })}}}
-	) (\r -> happyReturn (happyIn127 r))
-
-happyReduce_286 = happyReduce 4# 116# happyReduction_286
-happyReduction_286 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOut77 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> 
-	case happyOut88 happy_x_4 of { happy_var_4 -> 
-	happyIn127
-		 (ClsTyDef (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_287 = happyMonadReduce 3# 116# happyReduction_287
-happyReduction_287 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> 
-	case happyOut89 happy_x_2 of { happy_var_2 -> 
-	case happyOut122 happy_x_3 of { happy_var_3 -> 
-	( do { (cs,dh) <- checkDataHeader happy_var_2;
-                    return (ClsDataFam (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) cs dh (fst happy_var_3)) })}}}
-	) (\r -> happyReturn (happyIn127 r))
-
-happyReduce_288 = happyMonadReduce 4# 117# happyReduction_288
-happyReduction_288 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut129 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}}
-	) (\r -> happyReturn (happyIn128 r))
-
-happyReduce_289 = happyMonadReduce 4# 117# happyReduction_289
-happyReduction_289 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	case happyOut222 happy_x_2 of { happy_var_2 -> 
-	case happyOut129 happy_x_3 of { happy_var_3 -> 
-	case happyOut223 happy_x_4 of { happy_var_4 -> 
-	( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}}
-	) (\r -> happyReturn (happyIn128 r))
-
-happyReduce_290 = happySpecReduce_0  117# happyReduction_290
-happyReduction_290  =  happyIn128
-		 ((Nothing, [], Nothing)
-	)
-
-happyReduce_291 = happyMonadReduce 3# 118# happyReduction_291
-happyReduction_291 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut130 happy_x_2 of { happy_var_2 -> 
-	case happyOut25 happy_x_3 of { happy_var_3 -> 
-	( checkRevInstDecls (fst happy_var_2) >>= \is -> return (is, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}}
-	) (\r -> happyReturn (happyIn129 r))
-
-happyReduce_292 = happySpecReduce_1  118# happyReduction_292
-happyReduction_292 happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	happyIn129
-		 (([],reverse happy_var_1)
-	)}
-
-happyReduce_293 = happySpecReduce_3  119# happyReduction_293
-happyReduction_293 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut130 happy_x_1 of { happy_var_1 -> 
-	case happyOut24 happy_x_2 of { happy_var_2 -> 
-	case happyOut131 happy_x_3 of { happy_var_3 -> 
-	happyIn130
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_294 = happySpecReduce_1  119# happyReduction_294
-happyReduction_294 happy_x_1
-	 =  case happyOut131 happy_x_1 of { happy_var_1 -> 
-	happyIn130
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_295 = happySpecReduce_1  120# happyReduction_295
-happyReduction_295 happy_x_1
-	 =  case happyOut133 happy_x_1 of { happy_var_1 -> 
-	happyIn131
-		 (InsDecl (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_296 = happyMonadReduce 1# 120# happyReduction_296
-happyReduction_296 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut132 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled TypeFamilies >> return happy_var_1)}
-	) (\r -> happyReturn (happyIn131 r))
-
-happyReduce_297 = happySpecReduce_1  120# happyReduction_297
-happyReduction_297 happy_x_1
-	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
-	happyIn131
-		 (InsDecl (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_298 = happyMonadReduce 4# 121# happyReduction_298
-happyReduction_298 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOut77 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> 
-	case happyOut88 happy_x_4 of { happy_var_4 -> 
-	( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns
-                       return (InsType (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4) })}}}}
-	) (\r -> happyReturn (happyIn132 r))
-
-happyReduce_299 = happyMonadReduce 4# 121# happyReduction_299
-happyReduction_299 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> 
-	case happyOut88 happy_x_2 of { happy_var_2 -> 
-	case happyOut104 happy_x_3 of { happy_var_3 -> 
-	case happyOut116 happy_x_4 of { happy_var_4 -> 
-	( do { -- (cs,c,t) <- checkDataHeader happy_var_4;
-                       let {(ds,ss,minf) = happy_var_3};
-                       checkDataOrNew happy_var_1 ds;
-                       return (InsData (happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss ) happy_var_1 happy_var_2 (reverse ds) happy_var_4) })}}}}
-	) (\r -> happyReturn (happyIn132 r))
-
-happyReduce_300 = happyMonadReduce 5# 121# happyReduction_300
-happyReduction_300 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> 
-	case happyOut88 happy_x_2 of { happy_var_2 -> 
-	case happyOut122 happy_x_3 of { happy_var_3 -> 
-	case happyOut100 happy_x_4 of { happy_var_4 -> 
-	case happyOut116 happy_x_5 of { happy_var_5 -> 
-	( do { -- (cs,c,t) <- checkDataHeader happy_var_4;
-                       let { (gs,ss,minf) = happy_var_4 } ;
-                       checkDataOrNew happy_var_1 gs;
-                       return $ InsGData (ann happy_var_1 <+?> minf <+?> fmap ann happy_var_5 <** (snd happy_var_3 ++ ss)) happy_var_1 happy_var_2 (fst happy_var_3) (reverse gs) happy_var_5 })}}}}}
-	) (\r -> happyReturn (happyIn132 r))
-
-happyReduce_301 = happyMonadReduce 4# 122# happyReduction_301
-happyReduction_301 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOut135 happy_x_2 of { happy_var_2 -> 
-	case happyOut136 happy_x_3 of { happy_var_3 -> 
-	case happyOut134 happy_x_4 of { happy_var_4 -> 
-	( checkValDef ((happy_var_1 <> happy_var_3 <+?> (fmap ann) (fst happy_var_4)) <** (snd happy_var_2 ++ snd happy_var_4)) happy_var_1 (fst happy_var_2) happy_var_3 (fst happy_var_4))}}}}
-	) (\r -> happyReturn (happyIn133 r))
-
-happyReduce_302 = happyMonadReduce 4# 122# happyReduction_302
-happyReduction_302 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	case happyOut150 happy_x_2 of { happy_var_2 -> 
-	case happyOut136 happy_x_3 of { happy_var_3 -> 
-	case happyOut134 happy_x_4 of { happy_var_4 -> 
-	( do { checkEnabled BangPatterns ;
-                                              let { l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] };
-                                              p <- checkPattern (BangPat l happy_var_2);
-                                              return $ PatBind (p <> happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** snd happy_var_4)
-                                                          p Nothing happy_var_3 (fst happy_var_4) })}}}}
-	) (\r -> happyReturn (happyIn133 r))
-
-happyReduce_303 = happySpecReduce_2  123# happyReduction_303
-happyReduction_303 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	case happyOut61 happy_x_2 of { happy_var_2 -> 
-	happyIn134
-		 ((Just happy_var_2, [happy_var_1])
-	)}}
-
-happyReduce_304 = happySpecReduce_0  123# happyReduction_304
-happyReduction_304  =  happyIn134
-		 ((Nothing, [])
-	)
-
-happyReduce_305 = happyMonadReduce 2# 124# happyReduction_305
-happyReduction_305 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> 
-	case happyOut88 happy_x_2 of { happy_var_2 -> 
-	( checkEnabled ScopedTypeVariables >> return (Just happy_var_2, [happy_var_1]))}}
-	) (\r -> happyReturn (happyIn135 r))
-
-happyReduce_306 = happySpecReduce_0  124# happyReduction_306
-happyReduction_306  =  happyIn135
-		 ((Nothing,[])
-	)
-
-happyReduce_307 = happySpecReduce_2  125# happyReduction_307
-happyReduction_307 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> 
-	case happyOut139 happy_x_2 of { happy_var_2 -> 
-	happyIn136
-		 (UnGuardedRhs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_308 = happySpecReduce_1  125# happyReduction_308
-happyReduction_308 happy_x_1
-	 =  case happyOut137 happy_x_1 of { happy_var_1 -> 
-	happyIn136
-		 (GuardedRhss (snd happy_var_1) (reverse $ fst happy_var_1)
-	)}
-
-happyReduce_309 = happySpecReduce_2  126# happyReduction_309
-happyReduction_309 happy_x_2
-	happy_x_1
-	 =  case happyOut137 happy_x_1 of { happy_var_1 -> 
-	case happyOut138 happy_x_2 of { happy_var_2 -> 
-	happyIn137
-		 ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2)
-	)}}
-
-happyReduce_310 = happySpecReduce_1  126# happyReduction_310
-happyReduction_310 happy_x_1
-	 =  case happyOut138 happy_x_1 of { happy_var_1 -> 
-	happyIn137
-		 (([happy_var_1],ann happy_var_1)
-	)}
-
-happyReduce_311 = happyMonadReduce 4# 127# happyReduction_311
-happyReduction_311 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> 
-	case happyOut173 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> 
-	case happyOut139 happy_x_4 of { happy_var_4 -> 
-	( do { checkPatternGuards (fst happy_var_2);
-                                       return $ GuardedRhs (nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])) (reverse (fst happy_var_2)) happy_var_4 })}}}}
-	) (\r -> happyReturn (happyIn138 r))
-
-happyReduce_312 = happyMonadReduce 1# 128# happyReduction_312
-happyReduction_312 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut140 happy_x_1 of { happy_var_1 -> 
-	( checkExpr happy_var_1)}
-	) (\r -> happyReturn (happyIn139 r))
-
-happyReduce_313 = happySpecReduce_3  129# happyReduction_313
-happyReduction_313 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut88 happy_x_3 of { happy_var_3 -> 
-	happyIn140
-		 (ExpTypeSig      (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_314 = happySpecReduce_1  129# happyReduction_314
-happyReduction_314 happy_x_1
-	 =  case happyOut141 happy_x_1 of { happy_var_1 -> 
-	happyIn140
-		 (happy_var_1
-	)}
-
-happyReduce_315 = happySpecReduce_2  129# happyReduction_315
-happyReduction_315 happy_x_2
-	happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOut205 happy_x_2 of { happy_var_2 -> 
-	happyIn140
-		 (PostOp          (happy_var_1 <> happy_var_2)          happy_var_1 happy_var_2
-	)}}
-
-happyReduce_316 = happySpecReduce_3  129# happyReduction_316
-happyReduction_316 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrowTail) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	happyIn140
-		 (LeftArrApp      (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_317 = happySpecReduce_3  129# happyReduction_317
-happyReduction_317 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrowTail) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	happyIn140
-		 (RightArrApp     (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_318 = happySpecReduce_3  129# happyReduction_318
-happyReduction_318 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftDblArrowTail) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	happyIn140
-		 (LeftArrHighApp  (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_319 = happySpecReduce_3  129# happyReduction_319
-happyReduction_319 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightDblArrowTail) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	happyIn140
-		 (RightArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_320 = happySpecReduce_1  130# happyReduction_320
-happyReduction_320 happy_x_1
-	 =  case happyOut142 happy_x_1 of { happy_var_1 -> 
-	happyIn141
-		 (happy_var_1
-	)}
-
-happyReduce_321 = happySpecReduce_1  130# happyReduction_321
-happyReduction_321 happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	happyIn141
-		 (happy_var_1
-	)}
-
-happyReduce_322 = happySpecReduce_3  131# happyReduction_322
-happyReduction_322 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOut205 happy_x_2 of { happy_var_2 -> 
-	case happyOut144 happy_x_3 of { happy_var_3 -> 
-	happyIn142
-		 (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_323 = happySpecReduce_1  131# happyReduction_323
-happyReduction_323 happy_x_1
-	 =  case happyOut144 happy_x_1 of { happy_var_1 -> 
-	happyIn142
-		 (happy_var_1
-	)}
-
-happyReduce_324 = happySpecReduce_3  132# happyReduction_324
-happyReduction_324 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	case happyOut205 happy_x_2 of { happy_var_2 -> 
-	case happyOut145 happy_x_3 of { happy_var_3 -> 
-	happyIn143
-		 (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_325 = happySpecReduce_1  132# happyReduction_325
-happyReduction_325 happy_x_1
-	 =  case happyOut145 happy_x_1 of { happy_var_1 -> 
-	happyIn143
-		 (happy_var_1
-	)}
-
-happyReduce_326 = happyReduce 4# 133# happyReduction_326
-happyReduction_326 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 Backslash) -> 
-	case happyOut148 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> 
-	case happyOut140 happy_x_4 of { happy_var_4 -> 
-	happyIn144
-		 (Lambda (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (reverse happy_var_2) happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_327 = happyReduce 4# 133# happyReduction_327
-happyReduction_327 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> 
-	case happyOut61 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_In) -> 
-	case happyOut140 happy_x_4 of { happy_var_4 -> 
-	happyIn144
-		 (Let    (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3])    happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_328 = happyReduce 6# 133# happyReduction_328
-happyReduction_328 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> 
-	case happyOut140 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Then) -> 
-	case happyOut140 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Else) -> 
-	case happyOut140 happy_x_6 of { happy_var_6 -> 
-	happyIn144
-		 (If     (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 happy_var_6
-	) `HappyStk` happyRest}}}}}}
-
-happyReduce_329 = happyReduce 4# 133# happyReduction_329
-happyReduction_329 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> 
-	case happyOut149 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> 
-	case happyOut140 happy_x_4 of { happy_var_4 -> 
-	happyIn144
-		 (Proc   (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3])    happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_330 = happySpecReduce_1  133# happyReduction_330
-happyReduction_330 happy_x_1
-	 =  case happyOut146 happy_x_1 of { happy_var_1 -> 
-	happyIn144
-		 (happy_var_1
-	)}
-
-happyReduce_331 = happyReduce 4# 134# happyReduction_331
-happyReduction_331 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> 
-	case happyOut140 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Of) -> 
-	case happyOut175 happy_x_4 of { happy_var_4 -> 
-	happyIn145
-		 (let (als, inf, ss) = happy_var_4 in Case (nIS happy_var_1 <++> inf <** (happy_var_1:happy_var_3:ss)) happy_var_2 als
-	) `HappyStk` happyRest}}}}
-
-happyReduce_332 = happySpecReduce_2  134# happyReduction_332
-happyReduction_332 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> 
-	case happyOut147 happy_x_2 of { happy_var_2 -> 
-	happyIn145
-		 (NegApp (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_333 = happySpecReduce_2  134# happyReduction_333
-happyReduction_333 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> 
-	case happyOut183 happy_x_2 of { happy_var_2 -> 
-	happyIn145
-		 (let (sts, inf, ss) = happy_var_2 in Do   (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts
-	)}}
-
-happyReduce_334 = happySpecReduce_2  134# happyReduction_334
-happyReduction_334 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> 
-	case happyOut183 happy_x_2 of { happy_var_2 -> 
-	happyIn145
-		 (let (sts, inf, ss) = happy_var_2 in MDo  (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts
-	)}}
-
-happyReduce_335 = happySpecReduce_1  134# happyReduction_335
-happyReduction_335 happy_x_1
-	 =  case happyOut147 happy_x_1 of { happy_var_1 -> 
-	happyIn145
-		 (happy_var_1
-	)}
-
-happyReduce_336 = happyReduce 4# 135# happyReduction_336
-happyReduction_336 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 CORE) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	case happyOut140 happy_x_4 of { happy_var_4 -> 
-	happyIn146
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in CorePragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_337 = happyReduce 4# 135# happyReduction_337
-happyReduction_337 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 SCC) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	case happyOut140 happy_x_4 of { happy_var_4 -> 
-	happyIn146
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in SCCPragma  (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_338 = happyReduce 11# 135# happyReduction_338
-happyReduction_338 (happy_x_11 `HappyStk`
-	happy_x_10 `HappyStk`
-	happy_x_9 `HappyStk`
-	happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 GENERATED) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 Colon) -> 
-	case happyOutTok happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (Loc happy_var_6 Minus) -> 
-	case happyOutTok happy_x_7 of { happy_var_7 -> 
-	case happyOutTok happy_x_8 of { (Loc happy_var_8 Colon) -> 
-	case happyOutTok happy_x_9 of { happy_var_9 -> 
-	case happyOutTok happy_x_10 of { (Loc happy_var_10 PragmaEnd) -> 
-	case happyOut140 happy_x_11 of { happy_var_11 -> 
-	happyIn146
-		 (let { Loc l0 (StringTok (s,_)) = happy_var_2;
-                                                  Loc l1 (IntTok (i1,_))   = happy_var_3;
-                                                  Loc l2 (IntTok (i2,_))   = happy_var_5;
-                                                  Loc l3 (IntTok (i3,_))   = happy_var_7;
-                                                  Loc l4 (IntTok (i4,_))   = happy_var_9}
-                                             in GenPragma (nIS happy_var_1 <++> ann happy_var_11 <** [happy_var_1,l0,l1,happy_var_4,l2,happy_var_6,l3,happy_var_8,l4,happy_var_10])
-                                                      s (fromInteger i1, fromInteger i2)
-                                                        (fromInteger i3, fromInteger i4) happy_var_11
-	) `HappyStk` happyRest}}}}}}}}}}}
-
-happyReduce_339 = happySpecReduce_2  136# happyReduction_339
-happyReduction_339 happy_x_2
-	happy_x_1
-	 =  case happyOut147 happy_x_1 of { happy_var_1 -> 
-	case happyOut150 happy_x_2 of { happy_var_2 -> 
-	happyIn147
-		 (App (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2
-	)}}
-
-happyReduce_340 = happySpecReduce_1  136# happyReduction_340
-happyReduction_340 happy_x_1
-	 =  case happyOut150 happy_x_1 of { happy_var_1 -> 
-	happyIn147
-		 (happy_var_1
-	)}
-
-happyReduce_341 = happySpecReduce_2  137# happyReduction_341
-happyReduction_341 happy_x_2
-	happy_x_1
-	 =  case happyOut148 happy_x_1 of { happy_var_1 -> 
-	case happyOut149 happy_x_2 of { happy_var_2 -> 
-	happyIn148
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_342 = happySpecReduce_1  137# happyReduction_342
-happyReduction_342 happy_x_1
-	 =  case happyOut149 happy_x_1 of { happy_var_1 -> 
-	happyIn148
-		 ([happy_var_1]
-	)}
-
-happyReduce_343 = happyMonadReduce 1# 138# happyReduction_343
-happyReduction_343 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut150 happy_x_1 of { happy_var_1 -> 
-	( checkPattern happy_var_1)}
-	) (\r -> happyReturn (happyIn149 r))
-
-happyReduce_344 = happyMonadReduce 2# 138# happyReduction_344
-happyReduction_344 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	case happyOut150 happy_x_2 of { happy_var_2 -> 
-	( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}}
-	) (\r -> happyReturn (happyIn149 r))
-
-happyReduce_345 = happyMonadReduce 3# 139# happyReduction_345
-happyReduction_345 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 At) -> 
-	case happyOut150 happy_x_3 of { happy_var_3 -> 
-	( do { n <- checkUnQual happy_var_1;
-                                              return (AsPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}}
-	) (\r -> happyReturn (happyIn150 r))
-
-happyReduce_346 = happyMonadReduce 3# 139# happyReduction_346
-happyReduction_346 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RPCAt) -> 
-	case happyOut150 happy_x_3 of { happy_var_3 -> 
-	( do { n <- checkUnQual happy_var_1;
-                                              return (CAsRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}}
-	) (\r -> happyReturn (happyIn150 r))
-
-happyReduce_347 = happySpecReduce_2  139# happyReduction_347
-happyReduction_347 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Tilde) -> 
-	case happyOut150 happy_x_2 of { happy_var_2 -> 
-	happyIn150
-		 (IrrPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_348 = happySpecReduce_1  139# happyReduction_348
-happyReduction_348 happy_x_1
-	 =  case happyOut151 happy_x_1 of { happy_var_1 -> 
-	happyIn150
-		 (happy_var_1
-	)}
-
-happyReduce_349 = happyMonadReduce 3# 140# happyReduction_349
-happyReduction_349 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut151 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]))) $ mkRecConstrOrUpdate happy_var_1 [])}}}
-	) (\r -> happyReturn (happyIn151 r))
-
-happyReduce_350 = happyMonadReduce 4# 140# happyReduction_350
-happyReduction_350 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut151 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut187 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4]))))
-                                              $ mkRecConstrOrUpdate happy_var_1 (reverse (fst happy_var_3)))}}}}
-	) (\r -> happyReturn (happyIn151 r))
-
-happyReduce_351 = happyReduce 4# 140# happyReduction_351
-happyReduction_351 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut195 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurlyBar) -> 
-	case happyOut79 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurlyBar) -> 
-	happyIn151
-		 (ExplTypeArg (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_352 = happySpecReduce_1  140# happyReduction_352
-happyReduction_352 happy_x_1
-	 =  case happyOut152 happy_x_1 of { happy_var_1 -> 
-	happyIn151
-		 (happy_var_1
-	)}
-
-happyReduce_353 = happySpecReduce_1  141# happyReduction_353
-happyReduction_353 happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	happyIn152
-		 (IPVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_354 = happySpecReduce_1  141# happyReduction_354
-happyReduction_354 happy_x_1
-	 =  case happyOut195 happy_x_1 of { happy_var_1 -> 
-	happyIn152
-		 (Var (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_355 = happySpecReduce_1  141# happyReduction_355
-happyReduction_355 happy_x_1
-	 =  case happyOut192 happy_x_1 of { happy_var_1 -> 
-	happyIn152
-		 (happy_var_1
-	)}
-
-happyReduce_356 = happySpecReduce_1  141# happyReduction_356
-happyReduction_356 happy_x_1
-	 =  case happyOut221 happy_x_1 of { happy_var_1 -> 
-	happyIn152
-		 (Lit (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_357 = happySpecReduce_3  141# happyReduction_357
-happyReduction_357 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut154 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn152
-		 (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_358 = happySpecReduce_3  141# happyReduction_358
-happyReduction_358 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut154 happy_x_2 of { happy_var_2 -> 
-	case happyOut155 happy_x_3 of { happy_var_3 -> 
-	happyIn152
-		 (TupleSection (happy_var_1 <^^> head (snd happy_var_3) <** happy_var_1:reverse (snd happy_var_3)) (Just happy_var_2 : fst happy_var_3)
-	)}}}
-
-happyReduce_359 = happyReduce 4# 141# happyReduction_359
-happyReduction_359 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut153 happy_x_2 of { happy_var_2 -> 
-	case happyOut154 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn152
-		 (TupleSection (happy_var_1 <^^> happy_var_4 <** happy_var_1:reverse (happy_var_4:happy_var_2))
-                                                      (replicate (length happy_var_2 - 1) Nothing ++ [Just happy_var_3])
-	) `HappyStk` happyRest}}}}
-
-happyReduce_360 = happyReduce 4# 141# happyReduction_360
-happyReduction_360 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut153 happy_x_2 of { happy_var_2 -> 
-	case happyOut154 happy_x_3 of { happy_var_3 -> 
-	case happyOut155 happy_x_4 of { happy_var_4 -> 
-	happyIn152
-		 (TupleSection (happy_var_1 <^^> head (snd happy_var_4) <** happy_var_1:reverse (snd happy_var_4 ++ happy_var_2))
-                                                      (replicate (length happy_var_2 - 1) Nothing ++ Just happy_var_3 : fst happy_var_4)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_361 = happySpecReduce_3  141# happyReduction_361
-happyReduction_361 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOut167 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> 
-	happyIn152
-		 (amap (\l -> l <** [happy_var_3]) $ happy_var_2 (happy_var_1 <^^> happy_var_3 <** [happy_var_1])
-	)}}}
-
-happyReduce_362 = happySpecReduce_1  141# happyReduction_362
-happyReduction_362 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Underscore) -> 
-	happyIn152
-		 (WildCard (nIS happy_var_1)
-	)}
-
-happyReduce_363 = happyMonadReduce 3# 141# happyReduction_363
-happyReduction_363 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut157 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	( checkEnabled RegularPatterns >> return (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2))}}}
-	) (\r -> happyReturn (happyIn152 r))
-
-happyReduce_364 = happySpecReduce_3  141# happyReduction_364
-happyReduction_364 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> 
-	case happyOut156 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RPGuardClose) -> 
-	happyIn152
-		 (SeqRP (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (snd happy_var_2) ++ [happy_var_3])) $ reverse (fst happy_var_2)
-	)}}}
-
-happyReduce_365 = happyReduce 5# 141# happyReduction_365
-happyReduction_365 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> 
-	case happyOut140 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Bar) -> 
-	case happyOut173 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RPGuardClose) -> 
-	happyIn152
-		 (GuardRP (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 $ (reverse $ fst happy_var_4)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_366 = happySpecReduce_1  141# happyReduction_366
-happyReduction_366 happy_x_1
-	 =  case happyOut158 happy_x_1 of { happy_var_1 -> 
-	happyIn152
-		 (happy_var_1
-	)}
-
-happyReduce_367 = happySpecReduce_1  141# happyReduction_367
-happyReduction_367 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn152
-		 (let Loc l (THIdEscape s) = happy_var_1 in SpliceExp (nIS l) $ IdSplice (nIS l) s
-	)}
-
-happyReduce_368 = happySpecReduce_3  141# happyReduction_368
-happyReduction_368 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THParenEscape) -> 
-	case happyOut139 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn152
-		 (SpliceExp  (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ParenSplice (ann happy_var_2) happy_var_2
-	)}}}
-
-happyReduce_369 = happySpecReduce_3  141# happyReduction_369
-happyReduction_369 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THExpQuote) -> 
-	case happyOut139 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> 
-	happyIn152
-		 (BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ExpBracket  (ann happy_var_2) happy_var_2
-	)}}}
-
-happyReduce_370 = happyMonadReduce 3# 141# happyReduction_370
-happyReduction_370 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 THPatQuote) -> 
-	case happyOut141 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> 
-	( do { p <- checkPattern happy_var_2;
-                                              return $ BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ PatBracket (ann p) p })}}}
-	) (\r -> happyReturn (happyIn152 r))
-
-happyReduce_371 = happySpecReduce_3  141# happyReduction_371
-happyReduction_371 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THTypQuote) -> 
-	case happyOut88 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> 
-	happyIn152
-		 (let l = happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3] in BracketExp l $ TypeBracket l happy_var_2
-	)}}}
-
-happyReduce_372 = happyReduce 5# 141# happyReduction_372
-happyReduction_372 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 THDecQuote) -> 
-	case happyOut48 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 THCloseQuote) -> 
-	happyIn152
-		 (let l = happy_var_1 <^^> happy_var_5 <** (happy_var_1:snd happy_var_3 ++ [happy_var_5]) in BracketExp l $ DeclBracket l (fst happy_var_3)
-	) `HappyStk` happyRest}}}
-
-happyReduce_373 = happySpecReduce_2  141# happyReduction_373
-happyReduction_373 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> 
-	case happyOut195 happy_x_2 of { happy_var_2 -> 
-	happyIn152
-		 (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_374 = happySpecReduce_2  141# happyReduction_374
-happyReduction_374 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> 
-	case happyOut198 happy_x_2 of { happy_var_2 -> 
-	happyIn152
-		 (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_375 = happySpecReduce_2  141# happyReduction_375
-happyReduction_375 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> 
-	case happyOut227 happy_x_2 of { happy_var_2 -> 
-	happyIn152
-		 (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) (UnQual (ann happy_var_2) happy_var_2)
-	)}}
-
-happyReduce_376 = happySpecReduce_2  141# happyReduction_376
-happyReduction_376 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> 
-	case happyOut85 happy_x_2 of { happy_var_2 -> 
-	happyIn152
-		 (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_377 = happySpecReduce_1  141# happyReduction_377
-happyReduction_377 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn152
-		 (let Loc l (THQuasiQuote (n,q)) = happy_var_1 in QuasiQuote (nIS l) n q
-	)}
-
-happyReduce_378 = happySpecReduce_2  142# happyReduction_378
-happyReduction_378 happy_x_2
-	happy_x_1
-	 =  case happyOut153 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	happyIn153
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_379 = happySpecReduce_1  142# happyReduction_379
-happyReduction_379 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> 
-	happyIn153
-		 ([happy_var_1]
-	)}
-
-happyReduce_380 = happySpecReduce_1  143# happyReduction_380
-happyReduction_380 happy_x_1
-	 =  case happyOut140 happy_x_1 of { happy_var_1 -> 
-	happyIn154
-		 (happy_var_1
-	)}
-
-happyReduce_381 = happySpecReduce_2  143# happyReduction_381
-happyReduction_381 happy_x_2
-	happy_x_1
-	 =  case happyOut206 happy_x_1 of { happy_var_1 -> 
-	case happyOut141 happy_x_2 of { happy_var_2 -> 
-	happyIn154
-		 (PreOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2
-	)}}
-
-happyReduce_382 = happyMonadReduce 3# 143# happyReduction_382
-happyReduction_382 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut140 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	( do {checkEnabled ViewPatterns;
-                                             return $ ViewPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3})}}}
-	) (\r -> happyReturn (happyIn154 r))
-
-happyReduce_383 = happySpecReduce_3  144# happyReduction_383
-happyReduction_383 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut153 happy_x_1 of { happy_var_1 -> 
-	case happyOut154 happy_x_2 of { happy_var_2 -> 
-	case happyOut155 happy_x_3 of { happy_var_3 -> 
-	happyIn155
-		 (let (mes, ss) = happy_var_3 in (replicate (length happy_var_1 - 1) Nothing ++ Just happy_var_2 : mes, ss ++ happy_var_1)
-	)}}}
-
-happyReduce_384 = happySpecReduce_3  144# happyReduction_384
-happyReduction_384 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut153 happy_x_1 of { happy_var_1 -> 
-	case happyOut154 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn155
-		 ((replicate (length happy_var_1 - 1) Nothing ++ [Just happy_var_2], happy_var_3 : happy_var_1)
-	)}}}
-
-happyReduce_385 = happySpecReduce_2  144# happyReduction_385
-happyReduction_385 happy_x_2
-	happy_x_1
-	 =  case happyOut153 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> 
-	happyIn155
-		 ((replicate (length happy_var_1) Nothing, happy_var_2 : happy_var_1)
-	)}}
-
-happyReduce_386 = happySpecReduce_3  145# happyReduction_386
-happyReduction_386 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut156 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	happyIn156
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_387 = happySpecReduce_1  145# happyReduction_387
-happyReduction_387 happy_x_1
-	 =  case happyOut140 happy_x_1 of { happy_var_1 -> 
-	happyIn156
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_388 = happySpecReduce_3  146# happyReduction_388
-happyReduction_388 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut140 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut157 happy_x_3 of { happy_var_3 -> 
-	happyIn157
-		 (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_389 = happySpecReduce_3  146# happyReduction_389
-happyReduction_389 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut140 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	happyIn157
-		 (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_390 = happyMonadReduce 9# 147# happyReduction_390
-happyReduction_390 (happy_x_9 `HappyStk`
-	happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> 
-	case happyOut161 happy_x_2 of { happy_var_2 -> 
-	case happyOut164 happy_x_3 of { happy_var_3 -> 
-	case happyOut166 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> 
-	case happyOut159 happy_x_6 of { happy_var_6 -> 
-	case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> 
-	case happyOut161 happy_x_8 of { happy_var_8 -> 
-	case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> 
-	( do { n <- checkEqNames happy_var_2 happy_var_8;
-                                                                       let { cn = reverse happy_var_6;
-                                                                             as = reverse happy_var_3;
-                                                                             l  = happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,srcInfoSpan (ann happy_var_8),happy_var_9] };
-                                                                       return $ XTag l n as happy_var_4 cn })}}}}}}}}}
-	) (\r -> happyReturn (happyIn158 r))
-
-happyReduce_391 = happyReduce 5# 147# happyReduction_391
-happyReduction_391 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> 
-	case happyOut161 happy_x_2 of { happy_var_2 -> 
-	case happyOut164 happy_x_3 of { happy_var_3 -> 
-	case happyOut166 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> 
-	happyIn158
-		 (XETag   (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_392 = happySpecReduce_3  147# happyReduction_392
-happyReduction_392 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 XCodeTagOpen) -> 
-	case happyOut140 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 XCodeTagClose) -> 
-	happyIn158
-		 (XExpTag (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_393 = happySpecReduce_2  148# happyReduction_393
-happyReduction_393 happy_x_2
-	happy_x_1
-	 =  case happyOut159 happy_x_1 of { happy_var_1 -> 
-	case happyOut160 happy_x_2 of { happy_var_2 -> 
-	happyIn159
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_394 = happySpecReduce_0  148# happyReduction_394
-happyReduction_394  =  happyIn159
-		 ([]
-	)
-
-happyReduce_395 = happySpecReduce_1  149# happyReduction_395
-happyReduction_395 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn160
-		 (let Loc l (XPCDATA pcd) = happy_var_1 in XPcdata (nIS l) pcd
-	)}
-
-happyReduce_396 = happySpecReduce_3  149# happyReduction_396
-happyReduction_396 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 XRPatOpen) -> 
-	case happyOut156 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 XRPatClose) -> 
-	happyIn160
-		 (XRPats (happy_var_1 <^^> happy_var_3 <** (snd happy_var_2 ++ [happy_var_1,happy_var_3])) $ reverse (fst happy_var_2)
-	)}}}
-
-happyReduce_397 = happySpecReduce_1  149# happyReduction_397
-happyReduction_397 happy_x_1
-	 =  case happyOut158 happy_x_1 of { happy_var_1 -> 
-	happyIn160
-		 (happy_var_1
-	)}
-
-happyReduce_398 = happySpecReduce_3  150# happyReduction_398
-happyReduction_398 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut162 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Colon) -> 
-	case happyOut162 happy_x_3 of { happy_var_3 -> 
-	happyIn161
-		 (let {Loc l1 s1 = happy_var_1; Loc l2 s2 = happy_var_3}
-                                         in XDomName (nIS l1 <++> nIS l2 <** [l1,happy_var_2,l2]) s1 s2
-	)}}}
-
-happyReduce_399 = happySpecReduce_1  150# happyReduction_399
-happyReduction_399 happy_x_1
-	 =  case happyOut162 happy_x_1 of { happy_var_1 -> 
-	happyIn161
-		 (let Loc l str = happy_var_1 in XName (nIS l) str
-	)}
-
-happyReduce_400 = happySpecReduce_1  151# happyReduction_400
-happyReduction_400 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn162
-		 (let Loc l (VarId  s) = happy_var_1 in Loc l s
-	)}
-
-happyReduce_401 = happySpecReduce_1  151# happyReduction_401
-happyReduction_401 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn162
-		 (let Loc l (ConId  s) = happy_var_1 in Loc l s
-	)}
-
-happyReduce_402 = happySpecReduce_1  151# happyReduction_402
-happyReduction_402 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn162
-		 (let Loc l (DVarId s) = happy_var_1 in Loc l $ mkDVar s
-	)}
-
-happyReduce_403 = happySpecReduce_1  151# happyReduction_403
-happyReduction_403 happy_x_1
-	 =  case happyOut163 happy_x_1 of { happy_var_1 -> 
-	happyIn162
-		 (happy_var_1
-	)}
-
-happyReduce_404 = happySpecReduce_1  152# happyReduction_404
-happyReduction_404 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	happyIn163
-		 (Loc happy_var_1 "type"
-	)}
-
-happyReduce_405 = happySpecReduce_1  152# happyReduction_405
-happyReduction_405 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> 
-	happyIn163
-		 (Loc happy_var_1 "class"
-	)}
-
-happyReduce_406 = happySpecReduce_1  152# happyReduction_406
-happyReduction_406 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> 
-	happyIn163
-		 (Loc happy_var_1 "data"
-	)}
-
-happyReduce_407 = happySpecReduce_1  152# happyReduction_407
-happyReduction_407 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> 
-	happyIn163
-		 (Loc happy_var_1 "foreign"
-	)}
-
-happyReduce_408 = happySpecReduce_1  152# happyReduction_408
-happyReduction_408 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> 
-	happyIn163
-		 (Loc happy_var_1 "export"
-	)}
-
-happyReduce_409 = happySpecReduce_1  152# happyReduction_409
-happyReduction_409 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> 
-	happyIn163
-		 (Loc happy_var_1 "safe"
-	)}
-
-happyReduce_410 = happySpecReduce_1  152# happyReduction_410
-happyReduction_410 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> 
-	happyIn163
-		 (Loc happy_var_1 "unsafe"
-	)}
-
-happyReduce_411 = happySpecReduce_1  152# happyReduction_411
-happyReduction_411 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> 
-	happyIn163
-		 (Loc happy_var_1 "threadsafe"
-	)}
-
-happyReduce_412 = happySpecReduce_1  152# happyReduction_412
-happyReduction_412 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> 
-	happyIn163
-		 (Loc happy_var_1 "stdcall"
-	)}
-
-happyReduce_413 = happySpecReduce_1  152# happyReduction_413
-happyReduction_413 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> 
-	happyIn163
-		 (Loc happy_var_1 "ccall"
-	)}
-
-happyReduce_414 = happySpecReduce_1  152# happyReduction_414
-happyReduction_414 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> 
-	happyIn163
-		 (Loc happy_var_1 "as"
-	)}
-
-happyReduce_415 = happySpecReduce_1  152# happyReduction_415
-happyReduction_415 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_By) -> 
-	happyIn163
-		 (Loc happy_var_1 "by"
-	)}
-
-happyReduce_416 = happySpecReduce_1  152# happyReduction_416
-happyReduction_416 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> 
-	happyIn163
-		 (Loc happy_var_1 "case"
-	)}
-
-happyReduce_417 = happySpecReduce_1  152# happyReduction_417
-happyReduction_417 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> 
-	happyIn163
-		 (Loc happy_var_1 "default"
-	)}
-
-happyReduce_418 = happySpecReduce_1  152# happyReduction_418
-happyReduction_418 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> 
-	happyIn163
-		 (Loc happy_var_1 "deriving"
-	)}
-
-happyReduce_419 = happySpecReduce_1  152# happyReduction_419
-happyReduction_419 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> 
-	happyIn163
-		 (Loc happy_var_1 "do"
-	)}
-
-happyReduce_420 = happySpecReduce_1  152# happyReduction_420
-happyReduction_420 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Else) -> 
-	happyIn163
-		 (Loc happy_var_1 "else"
-	)}
-
-happyReduce_421 = happySpecReduce_1  152# happyReduction_421
-happyReduction_421 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Family) -> 
-	happyIn163
-		 (Loc happy_var_1 "family"
-	)}
-
-happyReduce_422 = happySpecReduce_1  152# happyReduction_422
-happyReduction_422 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	happyIn163
-		 (Loc happy_var_1 "forall"
-	)}
-
-happyReduce_423 = happySpecReduce_1  152# happyReduction_423
-happyReduction_423 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Group) -> 
-	happyIn163
-		 (Loc happy_var_1 "group"
-	)}
-
-happyReduce_424 = happySpecReduce_1  152# happyReduction_424
-happyReduction_424 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> 
-	happyIn163
-		 (Loc happy_var_1 "hiding"
-	)}
-
-happyReduce_425 = happySpecReduce_1  152# happyReduction_425
-happyReduction_425 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> 
-	happyIn163
-		 (Loc happy_var_1 "if"
-	)}
-
-happyReduce_426 = happySpecReduce_1  152# happyReduction_426
-happyReduction_426 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> 
-	happyIn163
-		 (Loc happy_var_1 "import"
-	)}
-
-happyReduce_427 = happySpecReduce_1  152# happyReduction_427
-happyReduction_427 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_In) -> 
-	happyIn163
-		 (Loc happy_var_1 "in"
-	)}
-
-happyReduce_428 = happySpecReduce_1  152# happyReduction_428
-happyReduction_428 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> 
-	happyIn163
-		 (Loc happy_var_1 "infix"
-	)}
-
-happyReduce_429 = happySpecReduce_1  152# happyReduction_429
-happyReduction_429 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> 
-	happyIn163
-		 (Loc happy_var_1 "infixl"
-	)}
-
-happyReduce_430 = happySpecReduce_1  152# happyReduction_430
-happyReduction_430 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> 
-	happyIn163
-		 (Loc happy_var_1 "infixr"
-	)}
-
-happyReduce_431 = happySpecReduce_1  152# happyReduction_431
-happyReduction_431 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> 
-	happyIn163
-		 (Loc happy_var_1 "instance"
-	)}
-
-happyReduce_432 = happySpecReduce_1  152# happyReduction_432
-happyReduction_432 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> 
-	happyIn163
-		 (Loc happy_var_1 "let"
-	)}
-
-happyReduce_433 = happySpecReduce_1  152# happyReduction_433
-happyReduction_433 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> 
-	happyIn163
-		 (Loc happy_var_1 "mdo"
-	)}
-
-happyReduce_434 = happySpecReduce_1  152# happyReduction_434
-happyReduction_434 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> 
-	happyIn163
-		 (Loc happy_var_1 "module"
-	)}
-
-happyReduce_435 = happySpecReduce_1  152# happyReduction_435
-happyReduction_435 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> 
-	happyIn163
-		 (Loc happy_var_1 "newtype"
-	)}
-
-happyReduce_436 = happySpecReduce_1  152# happyReduction_436
-happyReduction_436 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Of) -> 
-	happyIn163
-		 (Loc happy_var_1 "of"
-	)}
-
-happyReduce_437 = happySpecReduce_1  152# happyReduction_437
-happyReduction_437 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> 
-	happyIn163
-		 (Loc happy_var_1 "proc"
-	)}
-
-happyReduce_438 = happySpecReduce_1  152# happyReduction_438
-happyReduction_438 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> 
-	happyIn163
-		 (Loc happy_var_1 "rec"
-	)}
-
-happyReduce_439 = happySpecReduce_1  152# happyReduction_439
-happyReduction_439 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	happyIn163
-		 (Loc happy_var_1 "then"
-	)}
-
-happyReduce_440 = happySpecReduce_1  152# happyReduction_440
-happyReduction_440 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Using) -> 
-	happyIn163
-		 (Loc happy_var_1 "using"
-	)}
-
-happyReduce_441 = happySpecReduce_1  152# happyReduction_441
-happyReduction_441 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	happyIn163
-		 (Loc happy_var_1 "where"
-	)}
-
-happyReduce_442 = happySpecReduce_1  152# happyReduction_442
-happyReduction_442 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> 
-	happyIn163
-		 (Loc happy_var_1 "qualified"
-	)}
-
-happyReduce_443 = happySpecReduce_2  153# happyReduction_443
-happyReduction_443 happy_x_2
-	happy_x_1
-	 =  case happyOut164 happy_x_1 of { happy_var_1 -> 
-	case happyOut165 happy_x_2 of { happy_var_2 -> 
-	happyIn164
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_444 = happySpecReduce_0  153# happyReduction_444
-happyReduction_444  =  happyIn164
-		 ([]
-	)
-
-happyReduce_445 = happySpecReduce_3  154# happyReduction_445
-happyReduction_445 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut161 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> 
-	case happyOut150 happy_x_3 of { happy_var_3 -> 
-	happyIn165
-		 (XAttr (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_446 = happySpecReduce_1  155# happyReduction_446
-happyReduction_446 happy_x_1
-	 =  case happyOut150 happy_x_1 of { happy_var_1 -> 
-	happyIn166
-		 (Just happy_var_1
-	)}
-
-happyReduce_447 = happySpecReduce_0  155# happyReduction_447
-happyReduction_447  =  happyIn166
-		 (Nothing
-	)
-
-happyReduce_448 = happySpecReduce_1  156# happyReduction_448
-happyReduction_448 happy_x_1
-	 =  case happyOut154 happy_x_1 of { happy_var_1 -> 
-	happyIn167
-		 (\l -> List l [happy_var_1]
-	)}
-
-happyReduce_449 = happySpecReduce_1  156# happyReduction_449
-happyReduction_449 happy_x_1
-	 =  case happyOut168 happy_x_1 of { happy_var_1 -> 
-	happyIn167
-		 (\l -> let (ps,ss) = happy_var_1 in List (l <** reverse ss) (reverse ps)
-	)}
-
-happyReduce_450 = happySpecReduce_2  156# happyReduction_450
-happyReduction_450 happy_x_2
-	happy_x_1
-	 =  case happyOut154 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> 
-	happyIn167
-		 (\l -> EnumFrom       (l <** [happy_var_2]) happy_var_1
-	)}}
-
-happyReduce_451 = happyReduce 4# 156# happyReduction_451
-happyReduction_451 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut154 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> 
-	happyIn167
-		 (\l -> EnumFromThen   (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_452 = happySpecReduce_3  156# happyReduction_452
-happyReduction_452 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut154 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	happyIn167
-		 (\l -> EnumFromTo     (l <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_453 = happyReduce 5# 156# happyReduction_453
-happyReduction_453 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut154 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> 
-	case happyOut140 happy_x_5 of { happy_var_5 -> 
-	happyIn167
-		 (\l -> EnumFromThenTo (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 happy_var_5
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_454 = happySpecReduce_3  156# happyReduction_454
-happyReduction_454 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut154 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut169 happy_x_3 of { happy_var_3 -> 
-	happyIn167
-		 (\l -> let (stss, ss) = happy_var_3 in ParComp (l <** (happy_var_2:ss)) happy_var_1 (reverse stss)
-	)}}}
-
-happyReduce_455 = happySpecReduce_3  157# happyReduction_455
-happyReduction_455 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut168 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut154 happy_x_3 of { happy_var_3 -> 
-	happyIn168
-		 (let (es, ss) = happy_var_1 in (happy_var_3 : es, happy_var_2 : ss)
-	)}}}
-
-happyReduce_456 = happySpecReduce_3  157# happyReduction_456
-happyReduction_456 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut154 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut154 happy_x_3 of { happy_var_3 -> 
-	happyIn168
-		 (([happy_var_3,happy_var_1], [happy_var_2])
-	)}}}
-
-happyReduce_457 = happySpecReduce_3  158# happyReduction_457
-happyReduction_457 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut169 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut170 happy_x_3 of { happy_var_3 -> 
-	happyIn169
-		 (let { (stss, ss1) = happy_var_1;
-                                              (sts, ss2) = happy_var_3 }
-                                         in (reverse sts : stss, ss1 ++ [happy_var_2] ++ reverse ss2)
-	)}}}
-
-happyReduce_458 = happySpecReduce_1  158# happyReduction_458
-happyReduction_458 happy_x_1
-	 =  case happyOut170 happy_x_1 of { happy_var_1 -> 
-	happyIn169
-		 (let (sts, ss) = happy_var_1 in ([reverse sts], reverse ss)
-	)}
-
-happyReduce_459 = happySpecReduce_3  159# happyReduction_459
-happyReduction_459 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut170 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut171 happy_x_3 of { happy_var_3 -> 
-	happyIn170
-		 (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss)
-	)}}}
-
-happyReduce_460 = happySpecReduce_1  159# happyReduction_460
-happyReduction_460 happy_x_1
-	 =  case happyOut171 happy_x_1 of { happy_var_1 -> 
-	happyIn170
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_461 = happySpecReduce_1  160# happyReduction_461
-happyReduction_461 happy_x_1
-	 =  case happyOut172 happy_x_1 of { happy_var_1 -> 
-	happyIn171
-		 (happy_var_1
-	)}
-
-happyReduce_462 = happySpecReduce_1  160# happyReduction_462
-happyReduction_462 happy_x_1
-	 =  case happyOut174 happy_x_1 of { happy_var_1 -> 
-	happyIn171
-		 (QualStmt (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_463 = happySpecReduce_2  161# happyReduction_463
-happyReduction_463 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	case happyOut139 happy_x_2 of { happy_var_2 -> 
-	happyIn172
-		 (ThenTrans    (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_464 = happyReduce 4# 161# happyReduction_464
-happyReduction_464 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	case happyOut139 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> 
-	case happyOut139 happy_x_4 of { happy_var_4 -> 
-	happyIn172
-		 (ThenBy       (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_465 = happyReduce 4# 161# happyReduction_465
-happyReduction_465 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> 
-	case happyOut139 happy_x_4 of { happy_var_4 -> 
-	happyIn172
-		 (GroupBy      (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_466 = happyReduce 4# 161# happyReduction_466
-happyReduction_466 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Using) -> 
-	case happyOut139 happy_x_4 of { happy_var_4 -> 
-	happyIn172
-		 (GroupUsing   (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_467 = happyReduce 6# 161# happyReduction_467
-happyReduction_467 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> 
-	case happyOut139 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Using) -> 
-	case happyOut139 happy_x_6 of { happy_var_6 -> 
-	happyIn172
-		 (GroupByUsing (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_2,happy_var_3,happy_var_5]) happy_var_4 happy_var_6
-	) `HappyStk` happyRest}}}}}}
-
-happyReduce_468 = happySpecReduce_3  162# happyReduction_468
-happyReduction_468 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut173 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut174 happy_x_3 of { happy_var_3 -> 
-	happyIn173
-		 (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss)
-	)}}}
-
-happyReduce_469 = happySpecReduce_1  162# happyReduction_469
-happyReduction_469 happy_x_1
-	 =  case happyOut174 happy_x_1 of { happy_var_1 -> 
-	happyIn173
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_470 = happySpecReduce_3  163# happyReduction_470
-happyReduction_470 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut182 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> 
-	case happyOut139 happy_x_3 of { happy_var_3 -> 
-	happyIn174
-		 (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_471 = happySpecReduce_1  163# happyReduction_471
-happyReduction_471 happy_x_1
-	 =  case happyOut139 happy_x_1 of { happy_var_1 -> 
-	happyIn174
-		 (Qualifier (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_472 = happySpecReduce_2  163# happyReduction_472
-happyReduction_472 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> 
-	case happyOut61 happy_x_2 of { happy_var_2 -> 
-	happyIn174
-		 (LetStmt   (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_473 = happySpecReduce_3  164# happyReduction_473
-happyReduction_473 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut176 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn175
-		 ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_474 = happySpecReduce_3  164# happyReduction_474
-happyReduction_474 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut222 happy_x_1 of { happy_var_1 -> 
-	case happyOut176 happy_x_2 of { happy_var_2 -> 
-	case happyOut223 happy_x_3 of { happy_var_3 -> 
-	happyIn175
-		 ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_475 = happySpecReduce_3  165# happyReduction_475
-happyReduction_475 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut177 happy_x_2 of { happy_var_2 -> 
-	case happyOut25 happy_x_3 of { happy_var_3 -> 
-	happyIn176
-		 ((reverse $ fst happy_var_2, happy_var_1 ++ snd happy_var_2 ++ happy_var_3)
-	)}}}
-
-happyReduce_476 = happySpecReduce_3  166# happyReduction_476
-happyReduction_476 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut177 happy_x_1 of { happy_var_1 -> 
-	case happyOut24 happy_x_2 of { happy_var_2 -> 
-	case happyOut178 happy_x_3 of { happy_var_3 -> 
-	happyIn177
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ happy_var_2)
-	)}}}
-
-happyReduce_477 = happySpecReduce_1  166# happyReduction_477
-happyReduction_477 happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	happyIn177
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_478 = happySpecReduce_3  167# happyReduction_478
-happyReduction_478 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut182 happy_x_1 of { happy_var_1 -> 
-	case happyOut179 happy_x_2 of { happy_var_2 -> 
-	case happyOut134 happy_x_3 of { happy_var_3 -> 
-	happyIn178
-		 (Alt (happy_var_1 <> happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** snd happy_var_3) happy_var_1 happy_var_2 (fst happy_var_3)
-	)}}}
-
-happyReduce_479 = happySpecReduce_2  168# happyReduction_479
-happyReduction_479 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 RightArrow) -> 
-	case happyOut139 happy_x_2 of { happy_var_2 -> 
-	happyIn179
-		 (UnGuardedAlt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_480 = happySpecReduce_1  168# happyReduction_480
-happyReduction_480 happy_x_1
-	 =  case happyOut180 happy_x_1 of { happy_var_1 -> 
-	happyIn179
-		 (GuardedAlts  (snd happy_var_1) (reverse $ fst happy_var_1)
-	)}
-
-happyReduce_481 = happySpecReduce_2  169# happyReduction_481
-happyReduction_481 happy_x_2
-	happy_x_1
-	 =  case happyOut180 happy_x_1 of { happy_var_1 -> 
-	case happyOut181 happy_x_2 of { happy_var_2 -> 
-	happyIn180
-		 ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2)
-	)}}
-
-happyReduce_482 = happySpecReduce_1  169# happyReduction_482
-happyReduction_482 happy_x_1
-	 =  case happyOut181 happy_x_1 of { happy_var_1 -> 
-	happyIn180
-		 (([happy_var_1], ann happy_var_1)
-	)}
-
-happyReduce_483 = happyMonadReduce 4# 170# happyReduction_483
-happyReduction_483 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> 
-	case happyOut173 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> 
-	case happyOut139 happy_x_4 of { happy_var_4 -> 
-	( do { checkPatternGuards (fst happy_var_2);
-                                       let {l = nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])};
-                                       return (GuardedAlt l (reverse (fst happy_var_2)) happy_var_4) })}}}}
-	) (\r -> happyReturn (happyIn181 r))
-
-happyReduce_484 = happyMonadReduce 1# 171# happyReduction_484
-happyReduction_484 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut140 happy_x_1 of { happy_var_1 -> 
-	( checkPattern happy_var_1)}
-	) (\r -> happyReturn (happyIn182 r))
-
-happyReduce_485 = happyMonadReduce 2# 171# happyReduction_485
-happyReduction_485 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	case happyOut150 happy_x_2 of { happy_var_2 -> 
-	( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}}
-	) (\r -> happyReturn (happyIn182 r))
-
-happyReduce_486 = happySpecReduce_3  172# happyReduction_486
-happyReduction_486 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut184 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn183
-		 ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_487 = happySpecReduce_3  172# happyReduction_487
-happyReduction_487 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut222 happy_x_1 of { happy_var_1 -> 
-	case happyOut184 happy_x_2 of { happy_var_2 -> 
-	case happyOut223 happy_x_3 of { happy_var_3 -> 
-	happyIn183
-		 ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_488 = happySpecReduce_2  173# happyReduction_488
-happyReduction_488 happy_x_2
-	happy_x_1
-	 =  case happyOut186 happy_x_1 of { happy_var_1 -> 
-	case happyOut185 happy_x_2 of { happy_var_2 -> 
-	happyIn184
-		 ((happy_var_1 : fst happy_var_2, snd happy_var_2)
-	)}}
-
-happyReduce_489 = happySpecReduce_2  173# happyReduction_489
-happyReduction_489 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> 
-	case happyOut184 happy_x_2 of { happy_var_2 -> 
-	happyIn184
-		 ((fst happy_var_2, happy_var_1 : snd happy_var_2)
-	)}}
-
-happyReduce_490 = happySpecReduce_0  173# happyReduction_490
-happyReduction_490  =  happyIn184
-		 (([],[])
-	)
-
-happyReduce_491 = happySpecReduce_2  174# happyReduction_491
-happyReduction_491 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> 
-	case happyOut184 happy_x_2 of { happy_var_2 -> 
-	happyIn185
-		 ((fst happy_var_2, happy_var_1 : snd happy_var_2)
-	)}}
-
-happyReduce_492 = happySpecReduce_0  174# happyReduction_492
-happyReduction_492  =  happyIn185
-		 (([],[])
-	)
-
-happyReduce_493 = happySpecReduce_2  175# happyReduction_493
-happyReduction_493 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> 
-	case happyOut61 happy_x_2 of { happy_var_2 -> 
-	happyIn186
-		 (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_494 = happySpecReduce_3  175# happyReduction_494
-happyReduction_494 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut182 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> 
-	case happyOut139 happy_x_3 of { happy_var_3 -> 
-	happyIn186
-		 (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_495 = happySpecReduce_1  175# happyReduction_495
-happyReduction_495 happy_x_1
-	 =  case happyOut139 happy_x_1 of { happy_var_1 -> 
-	happyIn186
-		 (Qualifier (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_496 = happySpecReduce_2  175# happyReduction_496
-happyReduction_496 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> 
-	case happyOut183 happy_x_2 of { happy_var_2 -> 
-	happyIn186
-		 (let (stms,inf,ss) = happy_var_2 in RecStmt (nIS happy_var_1 <++> inf <** happy_var_1:ss) stms
-	)}}
-
-happyReduce_497 = happySpecReduce_3  176# happyReduction_497
-happyReduction_497 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut187 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut188 happy_x_3 of { happy_var_3 -> 
-	happyIn187
-		 (let (fbs, ss) = happy_var_1 in (happy_var_3 : fbs, happy_var_2 : ss)
-	)}}}
-
-happyReduce_498 = happySpecReduce_1  176# happyReduction_498
-happyReduction_498 happy_x_1
-	 =  case happyOut188 happy_x_1 of { happy_var_1 -> 
-	happyIn187
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_499 = happySpecReduce_3  177# happyReduction_499
-happyReduction_499 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut195 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	happyIn188
-		 (FieldUpdate (happy_var_1 <>happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_500 = happyMonadReduce 1# 177# happyReduction_500
-happyReduction_500 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled NamedFieldPuns >> checkUnQual happy_var_1 >>= return . FieldPun (ann happy_var_1))}
-	) (\r -> happyReturn (happyIn188 r))
-
-happyReduce_501 = happyMonadReduce 1# 177# happyReduction_501
-happyReduction_501 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DotDot) -> 
-	( checkEnabled RecordWildCards >> return (FieldWildcard (nIS happy_var_1)))}
-	) (\r -> happyReturn (happyIn188 r))
-
-happyReduce_502 = happySpecReduce_3  178# happyReduction_502
-happyReduction_502 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut190 happy_x_2 of { happy_var_2 -> 
-	case happyOut25 happy_x_3 of { happy_var_3 -> 
-	happyIn189
-		 ((reverse (fst happy_var_2), reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3)
-	)}}}
-
-happyReduce_503 = happySpecReduce_3  179# happyReduction_503
-happyReduction_503 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut190 happy_x_1 of { happy_var_1 -> 
-	case happyOut24 happy_x_2 of { happy_var_2 -> 
-	case happyOut191 happy_x_3 of { happy_var_3 -> 
-	happyIn190
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_504 = happySpecReduce_1  179# happyReduction_504
-happyReduction_504 happy_x_1
-	 =  case happyOut191 happy_x_1 of { happy_var_1 -> 
-	happyIn190
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_505 = happySpecReduce_3  180# happyReduction_505
-happyReduction_505 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> 
-	case happyOut139 happy_x_3 of { happy_var_3 -> 
-	happyIn191
-		 (IPBind (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_506 = happySpecReduce_2  181# happyReduction_506
-happyReduction_506 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> 
-	happyIn192
-		 (p_unit_con              (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_507 = happySpecReduce_2  181# happyReduction_507
-happyReduction_507 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> 
-	happyIn192
-		 (List                    (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) []
-	)}}
-
-happyReduce_508 = happySpecReduce_3  181# happyReduction_508
-happyReduction_508 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut153 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn192
-		 (p_tuple_con             (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Boxed (length happy_var_2)
-	)}}}
-
-happyReduce_509 = happySpecReduce_2  181# happyReduction_509
-happyReduction_509 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> 
-	happyIn192
-		 (p_unboxed_singleton_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_510 = happySpecReduce_3  181# happyReduction_510
-happyReduction_510 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOut153 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> 
-	happyIn192
-		 (p_tuple_con             (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Unboxed (length happy_var_2)
-	)}}}
-
-happyReduce_511 = happySpecReduce_1  181# happyReduction_511
-happyReduction_511 happy_x_1
-	 =  case happyOut198 happy_x_1 of { happy_var_1 -> 
-	happyIn192
-		 (Con (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_512 = happySpecReduce_1  182# happyReduction_512
-happyReduction_512 happy_x_1
-	 =  case happyOut210 happy_x_1 of { happy_var_1 -> 
-	happyIn193
-		 (happy_var_1
-	)}
-
-happyReduce_513 = happySpecReduce_3  182# happyReduction_513
-happyReduction_513 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut218 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn193
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_514 = happySpecReduce_1  183# happyReduction_514
-happyReduction_514 happy_x_1
-	 =  case happyOut209 happy_x_1 of { happy_var_1 -> 
-	happyIn194
-		 (happy_var_1
-	)}
-
-happyReduce_515 = happySpecReduce_3  183# happyReduction_515
-happyReduction_515 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut218 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn194
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_516 = happySpecReduce_1  184# happyReduction_516
-happyReduction_516 happy_x_1
-	 =  case happyOut208 happy_x_1 of { happy_var_1 -> 
-	happyIn195
-		 (happy_var_1
-	)}
-
-happyReduce_517 = happySpecReduce_3  184# happyReduction_517
-happyReduction_517 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut216 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn195
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_518 = happySpecReduce_1  185# happyReduction_518
-happyReduction_518 happy_x_1
-	 =  case happyOut211 happy_x_1 of { happy_var_1 -> 
-	happyIn196
-		 (happy_var_1
-	)}
-
-happyReduce_519 = happySpecReduce_1  186# happyReduction_519
-happyReduction_519 happy_x_1
-	 =  case happyOut213 happy_x_1 of { happy_var_1 -> 
-	happyIn197
-		 (happy_var_1
-	)}
-
-happyReduce_520 = happySpecReduce_3  186# happyReduction_520
-happyReduction_520 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut215 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn197
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_521 = happySpecReduce_1  187# happyReduction_521
-happyReduction_521 happy_x_1
-	 =  case happyOut212 happy_x_1 of { happy_var_1 -> 
-	happyIn198
-		 (happy_var_1
-	)}
-
-happyReduce_522 = happySpecReduce_3  187# happyReduction_522
-happyReduction_522 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut207 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn198
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_523 = happySpecReduce_1  188# happyReduction_523
-happyReduction_523 happy_x_1
-	 =  case happyOut218 happy_x_1 of { happy_var_1 -> 
-	happyIn199
-		 (happy_var_1
-	)}
-
-happyReduce_524 = happySpecReduce_3  188# happyReduction_524
-happyReduction_524 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut210 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn199
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_525 = happySpecReduce_1  189# happyReduction_525
-happyReduction_525 happy_x_1
-	 =  case happyOut216 happy_x_1 of { happy_var_1 -> 
-	happyIn200
-		 (happy_var_1
-	)}
-
-happyReduce_526 = happySpecReduce_3  189# happyReduction_526
-happyReduction_526 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut208 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn200
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_527 = happySpecReduce_1  190# happyReduction_527
-happyReduction_527 happy_x_1
-	 =  case happyOut217 happy_x_1 of { happy_var_1 -> 
-	happyIn201
-		 (happy_var_1
-	)}
-
-happyReduce_528 = happySpecReduce_3  190# happyReduction_528
-happyReduction_528 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut208 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn201
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_529 = happySpecReduce_1  191# happyReduction_529
-happyReduction_529 happy_x_1
-	 =  case happyOut215 happy_x_1 of { happy_var_1 -> 
-	happyIn202
-		 (happy_var_1
-	)}
-
-happyReduce_530 = happySpecReduce_3  191# happyReduction_530
-happyReduction_530 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut213 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn202
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_531 = happySpecReduce_1  192# happyReduction_531
-happyReduction_531 happy_x_1
-	 =  case happyOut207 happy_x_1 of { happy_var_1 -> 
-	happyIn203
-		 (happy_var_1
-	)}
-
-happyReduce_532 = happySpecReduce_3  192# happyReduction_532
-happyReduction_532 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut212 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn203
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_533 = happySpecReduce_1  193# happyReduction_533
-happyReduction_533 happy_x_1
-	 =  case happyOut199 happy_x_1 of { happy_var_1 -> 
-	happyIn204
-		 (VarOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_534 = happySpecReduce_1  193# happyReduction_534
-happyReduction_534 happy_x_1
-	 =  case happyOut202 happy_x_1 of { happy_var_1 -> 
-	happyIn204
-		 (ConOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_535 = happySpecReduce_1  194# happyReduction_535
-happyReduction_535 happy_x_1
-	 =  case happyOut200 happy_x_1 of { happy_var_1 -> 
-	happyIn205
-		 (QVarOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_536 = happySpecReduce_1  194# happyReduction_536
-happyReduction_536 happy_x_1
-	 =  case happyOut203 happy_x_1 of { happy_var_1 -> 
-	happyIn205
-		 (QConOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_537 = happySpecReduce_1  195# happyReduction_537
-happyReduction_537 happy_x_1
-	 =  case happyOut201 happy_x_1 of { happy_var_1 -> 
-	happyIn206
-		 (QVarOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_538 = happySpecReduce_1  195# happyReduction_538
-happyReduction_538 happy_x_1
-	 =  case happyOut203 happy_x_1 of { happy_var_1 -> 
-	happyIn206
-		 (QConOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_539 = happySpecReduce_1  196# happyReduction_539
-happyReduction_539 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Colon) -> 
-	happyIn207
-		 (list_cons_name (nIS happy_var_1)
-	)}
-
-happyReduce_540 = happySpecReduce_1  196# happyReduction_540
-happyReduction_540 happy_x_1
-	 =  case happyOut214 happy_x_1 of { happy_var_1 -> 
-	happyIn207
-		 (happy_var_1
-	)}
-
-happyReduce_541 = happySpecReduce_1  197# happyReduction_541
-happyReduction_541 happy_x_1
-	 =  case happyOut210 happy_x_1 of { happy_var_1 -> 
-	happyIn208
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_542 = happySpecReduce_1  197# happyReduction_542
-happyReduction_542 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn208
-		 (let {Loc l (QVarId q) = happy_var_1; nis = nIS l}
-                                 in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q))
-	)}
-
-happyReduce_543 = happySpecReduce_1  198# happyReduction_543
-happyReduction_543 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn209
-		 (let Loc l (VarId v) = happy_var_1 in Ident (nIS l) v
-	)}
-
-happyReduce_544 = happySpecReduce_1  198# happyReduction_544
-happyReduction_544 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> 
-	happyIn209
-		 (as_name        (nIS happy_var_1)
-	)}
-
-happyReduce_545 = happySpecReduce_1  198# happyReduction_545
-happyReduction_545 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> 
-	happyIn209
-		 (qualified_name (nIS happy_var_1)
-	)}
-
-happyReduce_546 = happySpecReduce_1  198# happyReduction_546
-happyReduction_546 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> 
-	happyIn209
-		 (hiding_name    (nIS happy_var_1)
-	)}
-
-happyReduce_547 = happySpecReduce_1  198# happyReduction_547
-happyReduction_547 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> 
-	happyIn209
-		 (export_name    (nIS happy_var_1)
-	)}
-
-happyReduce_548 = happySpecReduce_1  198# happyReduction_548
-happyReduction_548 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> 
-	happyIn209
-		 (stdcall_name   (nIS happy_var_1)
-	)}
-
-happyReduce_549 = happySpecReduce_1  198# happyReduction_549
-happyReduction_549 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> 
-	happyIn209
-		 (ccall_name     (nIS happy_var_1)
-	)}
-
-happyReduce_550 = happySpecReduce_1  199# happyReduction_550
-happyReduction_550 happy_x_1
-	 =  case happyOut209 happy_x_1 of { happy_var_1 -> 
-	happyIn210
-		 (happy_var_1
-	)}
-
-happyReduce_551 = happySpecReduce_1  199# happyReduction_551
-happyReduction_551 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> 
-	happyIn210
-		 (safe_name       (nIS happy_var_1)
-	)}
-
-happyReduce_552 = happySpecReduce_1  199# happyReduction_552
-happyReduction_552 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> 
-	happyIn210
-		 (unsafe_name     (nIS happy_var_1)
-	)}
-
-happyReduce_553 = happySpecReduce_1  199# happyReduction_553
-happyReduction_553 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> 
-	happyIn210
-		 (threadsafe_name (nIS happy_var_1)
-	)}
-
-happyReduce_554 = happySpecReduce_1  200# happyReduction_554
-happyReduction_554 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn211
-		 (let Loc l (IDupVarId i) = happy_var_1 in IPDup (nIS l) i
-	)}
-
-happyReduce_555 = happySpecReduce_1  200# happyReduction_555
-happyReduction_555 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn211
-		 (let Loc l (ILinVarId i) = happy_var_1 in IPLin (nIS l) i
-	)}
-
-happyReduce_556 = happySpecReduce_1  201# happyReduction_556
-happyReduction_556 happy_x_1
-	 =  case happyOut213 happy_x_1 of { happy_var_1 -> 
-	happyIn212
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_557 = happySpecReduce_1  201# happyReduction_557
-happyReduction_557 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn212
-		 (let {Loc l (QConId q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q))
-	)}
-
-happyReduce_558 = happySpecReduce_1  202# happyReduction_558
-happyReduction_558 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn213
-		 (let Loc l (ConId c) = happy_var_1 in Ident (nIS l) c
-	)}
-
-happyReduce_559 = happySpecReduce_1  203# happyReduction_559
-happyReduction_559 happy_x_1
-	 =  case happyOut215 happy_x_1 of { happy_var_1 -> 
-	happyIn214
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_560 = happySpecReduce_1  203# happyReduction_560
-happyReduction_560 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn214
-		 (let {Loc l (QConSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q))
-	)}
-
-happyReduce_561 = happySpecReduce_1  204# happyReduction_561
-happyReduction_561 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn215
-		 (let Loc l (ConSym c) = happy_var_1 in Symbol (nIS l) c
-	)}
-
-happyReduce_562 = happySpecReduce_1  205# happyReduction_562
-happyReduction_562 happy_x_1
-	 =  case happyOut218 happy_x_1 of { happy_var_1 -> 
-	happyIn216
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_563 = happySpecReduce_1  205# happyReduction_563
-happyReduction_563 happy_x_1
-	 =  case happyOut220 happy_x_1 of { happy_var_1 -> 
-	happyIn216
-		 (happy_var_1
-	)}
-
-happyReduce_564 = happySpecReduce_1  206# happyReduction_564
-happyReduction_564 happy_x_1
-	 =  case happyOut219 happy_x_1 of { happy_var_1 -> 
-	happyIn217
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_565 = happySpecReduce_1  206# happyReduction_565
-happyReduction_565 happy_x_1
-	 =  case happyOut220 happy_x_1 of { happy_var_1 -> 
-	happyIn217
-		 (happy_var_1
-	)}
-
-happyReduce_566 = happySpecReduce_1  207# happyReduction_566
-happyReduction_566 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn218
-		 (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v
-	)}
-
-happyReduce_567 = happySpecReduce_1  207# happyReduction_567
-happyReduction_567 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> 
-	happyIn218
-		 (minus_name (nIS happy_var_1)
-	)}
-
-happyReduce_568 = happySpecReduce_1  207# happyReduction_568
-happyReduction_568 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	happyIn218
-		 (bang_name  (nIS happy_var_1)
-	)}
-
-happyReduce_569 = happySpecReduce_1  207# happyReduction_569
-happyReduction_569 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> 
-	happyIn218
-		 (dot_name   (nIS happy_var_1)
-	)}
-
-happyReduce_570 = happySpecReduce_1  207# happyReduction_570
-happyReduction_570 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> 
-	happyIn218
-		 (star_name  (nIS happy_var_1)
-	)}
-
-happyReduce_571 = happySpecReduce_1  208# happyReduction_571
-happyReduction_571 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn219
-		 (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v
-	)}
-
-happyReduce_572 = happySpecReduce_1  208# happyReduction_572
-happyReduction_572 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	happyIn219
-		 (bang_name (nIS happy_var_1)
-	)}
-
-happyReduce_573 = happySpecReduce_1  208# happyReduction_573
-happyReduction_573 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> 
-	happyIn219
-		 (dot_name  (nIS happy_var_1)
-	)}
-
-happyReduce_574 = happySpecReduce_1  208# happyReduction_574
-happyReduction_574 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> 
-	happyIn219
-		 (star_name (nIS happy_var_1)
-	)}
-
-happyReduce_575 = happySpecReduce_1  209# happyReduction_575
-happyReduction_575 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn220
-		 (let {Loc l (QVarSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q))
-	)}
-
-happyReduce_576 = happySpecReduce_1  210# happyReduction_576
-happyReduction_576 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (IntTok        (i,raw)) = happy_var_1 in Int        (nIS l) i raw
-	)}
-
-happyReduce_577 = happySpecReduce_1  210# happyReduction_577
-happyReduction_577 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (Character     (c,raw)) = happy_var_1 in Char       (nIS l) c raw
-	)}
-
-happyReduce_578 = happySpecReduce_1  210# happyReduction_578
-happyReduction_578 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (FloatTok      (r,raw)) = happy_var_1 in Frac       (nIS l) r raw
-	)}
-
-happyReduce_579 = happySpecReduce_1  210# happyReduction_579
-happyReduction_579 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (StringTok     (s,raw)) = happy_var_1 in String     (nIS l) s raw
-	)}
-
-happyReduce_580 = happySpecReduce_1  210# happyReduction_580
-happyReduction_580 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (IntTokHash    (i,raw)) = happy_var_1 in PrimInt    (nIS l) i raw
-	)}
-
-happyReduce_581 = happySpecReduce_1  210# happyReduction_581
-happyReduction_581 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (WordTokHash   (w,raw)) = happy_var_1 in PrimWord   (nIS l) w raw
-	)}
-
-happyReduce_582 = happySpecReduce_1  210# happyReduction_582
-happyReduction_582 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (FloatTokHash  (f,raw)) = happy_var_1 in PrimFloat  (nIS l) f raw
-	)}
-
-happyReduce_583 = happySpecReduce_1  210# happyReduction_583
-happyReduction_583 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (DoubleTokHash (d,raw)) = happy_var_1 in PrimDouble (nIS l) d raw
-	)}
-
-happyReduce_584 = happySpecReduce_1  210# happyReduction_584
-happyReduction_584 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (CharacterHash (c,raw)) = happy_var_1 in PrimChar   (nIS l) c raw
-	)}
-
-happyReduce_585 = happySpecReduce_1  210# happyReduction_585
-happyReduction_585 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (let Loc l (StringHash    (s,raw)) = happy_var_1 in PrimString (nIS l) s raw
-	)}
-
-happyReduce_586 = happyMonadReduce 0# 211# happyReduction_586
-happyReduction_586 (happyRest) tk
-	 = happyThen (( pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -})
-	) (\r -> happyReturn (happyIn222 r))
-
-happyReduce_587 = happySpecReduce_1  212# happyReduction_587
-happyReduction_587 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 VRightCurly) -> 
-	happyIn223
-		 (happy_var_1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -}
-	)}
-
-happyReduce_588 = happyMonadReduce 1# 212# happyReduction_588
-happyReduction_588 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (( popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -})
-	) (\r -> happyReturn (happyIn223 r))
-
-happyReduce_589 = happySpecReduce_1  213# happyReduction_589
-happyReduction_589 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn224
-		 (let Loc l (ConId  n) = happy_var_1 in ModuleName (nIS l) n
-	)}
-
-happyReduce_590 = happySpecReduce_1  213# happyReduction_590
-happyReduction_590 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn224
-		 (let Loc l (QConId n) = happy_var_1 in ModuleName (nIS l) (fst n ++ '.':snd n)
-	)}
-
-happyReduce_591 = happySpecReduce_1  214# happyReduction_591
-happyReduction_591 happy_x_1
-	 =  case happyOut197 happy_x_1 of { happy_var_1 -> 
-	happyIn225
-		 (happy_var_1
-	)}
-
-happyReduce_592 = happySpecReduce_1  215# happyReduction_592
-happyReduction_592 happy_x_1
-	 =  case happyOut198 happy_x_1 of { happy_var_1 -> 
-	happyIn226
-		 (happy_var_1
-	)}
-
-happyReduce_593 = happySpecReduce_1  216# happyReduction_593
-happyReduction_593 happy_x_1
-	 =  case happyOut210 happy_x_1 of { happy_var_1 -> 
-	happyIn227
-		 (happy_var_1
-	)}
-
-happyReduce_594 = happySpecReduce_3  217# happyReduction_594
-happyReduction_594 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut227 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn228
-		 (UnQual (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_595 = happySpecReduce_1  217# happyReduction_595
-happyReduction_595 happy_x_1
-	 =  case happyOut229 happy_x_1 of { happy_var_1 -> 
-	happyIn228
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_596 = happySpecReduce_1  218# happyReduction_596
-happyReduction_596 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn229
-		 (let Loc l (VarSym x) = happy_var_1 in Symbol (nIS l) x
-	)}
-
-happyNewToken action sts stk
-	= lexer(\tk -> 
-	let cont i = happyDoAction i tk action sts stk in
-	case tk of {
-	Loc _ EOF -> happyDoAction 133# tk action sts stk;
-	Loc _ (VarId _) -> cont 1#;
-	Loc _ (QVarId _) -> cont 2#;
-	Loc _ (IDupVarId _) -> cont 3#;
-	Loc _ (ILinVarId _) -> cont 4#;
-	Loc _ (ConId _) -> cont 5#;
-	Loc _ (QConId _) -> cont 6#;
-	Loc _ (DVarId _) -> cont 7#;
-	Loc _ (VarSym _) -> cont 8#;
-	Loc _ (ConSym _) -> cont 9#;
-	Loc _ (QVarSym _) -> cont 10#;
-	Loc _ (QConSym _) -> cont 11#;
-	Loc _ (IntTok _) -> cont 12#;
-	Loc _ (FloatTok _) -> cont 13#;
-	Loc _ (Character _) -> cont 14#;
-	Loc _ (StringTok _) -> cont 15#;
-	Loc _ (IntTokHash _) -> cont 16#;
-	Loc _ (WordTokHash _) -> cont 17#;
-	Loc _ (FloatTokHash _) -> cont 18#;
-	Loc _ (DoubleTokHash _) -> cont 19#;
-	Loc _ (CharacterHash _) -> cont 20#;
-	Loc _ (StringHash _) -> cont 21#;
-	Loc happy_dollar_dollar LeftParen -> cont 22#;
-	Loc happy_dollar_dollar RightParen -> cont 23#;
-	Loc happy_dollar_dollar LeftHashParen -> cont 24#;
-	Loc happy_dollar_dollar RightHashParen -> cont 25#;
-	Loc happy_dollar_dollar LeftCurlyBar -> cont 26#;
-	Loc happy_dollar_dollar RightCurlyBar -> cont 27#;
-	Loc happy_dollar_dollar SemiColon -> cont 28#;
-	Loc happy_dollar_dollar LeftCurly -> cont 29#;
-	Loc happy_dollar_dollar RightCurly -> cont 30#;
-	Loc happy_dollar_dollar VRightCurly -> cont 31#;
-	Loc happy_dollar_dollar LeftSquare -> cont 32#;
-	Loc happy_dollar_dollar RightSquare -> cont 33#;
-	Loc happy_dollar_dollar Comma -> cont 34#;
-	Loc happy_dollar_dollar Underscore -> cont 35#;
-	Loc happy_dollar_dollar BackQuote -> cont 36#;
-	Loc happy_dollar_dollar Dot -> cont 37#;
-	Loc happy_dollar_dollar DotDot -> cont 38#;
-	Loc happy_dollar_dollar Colon -> cont 39#;
-	Loc happy_dollar_dollar DoubleColon -> cont 40#;
-	Loc happy_dollar_dollar Equals -> cont 41#;
-	Loc happy_dollar_dollar Backslash -> cont 42#;
-	Loc happy_dollar_dollar Bar -> cont 43#;
-	Loc happy_dollar_dollar LeftArrow -> cont 44#;
-	Loc happy_dollar_dollar RightArrow -> cont 45#;
-	Loc happy_dollar_dollar At -> cont 46#;
-	Loc happy_dollar_dollar Tilde -> cont 47#;
-	Loc happy_dollar_dollar DoubleArrow -> cont 48#;
-	Loc happy_dollar_dollar Minus -> cont 49#;
-	Loc happy_dollar_dollar Exclamation -> cont 50#;
-	Loc happy_dollar_dollar Star -> cont 51#;
-	Loc happy_dollar_dollar LeftArrowTail -> cont 52#;
-	Loc happy_dollar_dollar RightArrowTail -> cont 53#;
-	Loc happy_dollar_dollar LeftDblArrowTail -> cont 54#;
-	Loc happy_dollar_dollar RightDblArrowTail -> cont 55#;
-	Loc happy_dollar_dollar RPGuardOpen -> cont 56#;
-	Loc happy_dollar_dollar RPGuardClose -> cont 57#;
-	Loc happy_dollar_dollar RPCAt -> cont 58#;
-	Loc _ (THIdEscape _) -> cont 59#;
-	Loc happy_dollar_dollar THParenEscape -> cont 60#;
-	Loc happy_dollar_dollar THExpQuote -> cont 61#;
-	Loc happy_dollar_dollar THPatQuote -> cont 62#;
-	Loc happy_dollar_dollar THTypQuote -> cont 63#;
-	Loc happy_dollar_dollar THDecQuote -> cont 64#;
-	Loc happy_dollar_dollar THCloseQuote -> cont 65#;
-	Loc happy_dollar_dollar THVarQuote -> cont 66#;
-	Loc happy_dollar_dollar THTyQuote -> cont 67#;
-	Loc _ (THQuasiQuote _) -> cont 68#;
-	Loc _ (XPCDATA _) -> cont 69#;
-	Loc happy_dollar_dollar XStdTagOpen -> cont 70#;
-	Loc happy_dollar_dollar XCloseTagOpen -> cont 71#;
-	Loc happy_dollar_dollar XCodeTagOpen -> cont 72#;
-	Loc happy_dollar_dollar XStdTagClose -> cont 73#;
-	Loc happy_dollar_dollar XEmptyTagClose -> cont 74#;
-	Loc happy_dollar_dollar XCodeTagClose -> cont 75#;
-	Loc happy_dollar_dollar XRPatOpen -> cont 76#;
-	Loc happy_dollar_dollar XRPatClose -> cont 77#;
-	Loc happy_dollar_dollar KW_Foreign -> cont 78#;
-	Loc happy_dollar_dollar KW_Export -> cont 79#;
-	Loc happy_dollar_dollar KW_Safe -> cont 80#;
-	Loc happy_dollar_dollar KW_Unsafe -> cont 81#;
-	Loc happy_dollar_dollar KW_Threadsafe -> cont 82#;
-	Loc happy_dollar_dollar KW_StdCall -> cont 83#;
-	Loc happy_dollar_dollar KW_CCall -> cont 84#;
-	Loc happy_dollar_dollar KW_As -> cont 85#;
-	Loc happy_dollar_dollar KW_By -> cont 86#;
-	Loc happy_dollar_dollar KW_Case -> cont 87#;
-	Loc happy_dollar_dollar KW_Class -> cont 88#;
-	Loc happy_dollar_dollar KW_Data -> cont 89#;
-	Loc happy_dollar_dollar KW_Default -> cont 90#;
-	Loc happy_dollar_dollar KW_Deriving -> cont 91#;
-	Loc happy_dollar_dollar KW_Do -> cont 92#;
-	Loc happy_dollar_dollar KW_Else -> cont 93#;
-	Loc happy_dollar_dollar KW_Family -> cont 94#;
-	Loc happy_dollar_dollar KW_Forall -> cont 95#;
-	Loc happy_dollar_dollar KW_Group -> cont 96#;
-	Loc happy_dollar_dollar KW_Hiding -> cont 97#;
-	Loc happy_dollar_dollar KW_If -> cont 98#;
-	Loc happy_dollar_dollar KW_Import -> cont 99#;
-	Loc happy_dollar_dollar KW_In -> cont 100#;
-	Loc happy_dollar_dollar KW_Infix -> cont 101#;
-	Loc happy_dollar_dollar KW_InfixL -> cont 102#;
-	Loc happy_dollar_dollar KW_InfixR -> cont 103#;
-	Loc happy_dollar_dollar KW_Instance -> cont 104#;
-	Loc happy_dollar_dollar KW_Let -> cont 105#;
-	Loc happy_dollar_dollar KW_MDo -> cont 106#;
-	Loc happy_dollar_dollar KW_Module -> cont 107#;
-	Loc happy_dollar_dollar KW_NewType -> cont 108#;
-	Loc happy_dollar_dollar KW_Of -> cont 109#;
-	Loc happy_dollar_dollar KW_Proc -> cont 110#;
-	Loc happy_dollar_dollar KW_Rec -> cont 111#;
-	Loc happy_dollar_dollar KW_Then -> cont 112#;
-	Loc happy_dollar_dollar KW_Type -> cont 113#;
-	Loc happy_dollar_dollar KW_Using -> cont 114#;
-	Loc happy_dollar_dollar KW_Where -> cont 115#;
-	Loc happy_dollar_dollar KW_Qualified -> cont 116#;
-	Loc _ (INLINE _) -> cont 117#;
-	Loc happy_dollar_dollar INLINE_CONLIKE -> cont 118#;
-	Loc happy_dollar_dollar SPECIALISE -> cont 119#;
-	Loc _ (SPECIALISE_INLINE _) -> cont 120#;
-	Loc happy_dollar_dollar SOURCE -> cont 121#;
-	Loc happy_dollar_dollar RULES -> cont 122#;
-	Loc happy_dollar_dollar CORE -> cont 123#;
-	Loc happy_dollar_dollar SCC -> cont 124#;
-	Loc happy_dollar_dollar GENERATED -> cont 125#;
-	Loc happy_dollar_dollar DEPRECATED -> cont 126#;
-	Loc happy_dollar_dollar WARNING -> cont 127#;
-	Loc happy_dollar_dollar UNPACK -> cont 128#;
-	Loc _ (OPTIONS _) -> cont 129#;
-	Loc happy_dollar_dollar LANGUAGE -> cont 130#;
-	Loc happy_dollar_dollar ANN -> cont 131#;
-	Loc happy_dollar_dollar PragmaEnd -> cont 132#;
-	_ -> happyError' tk
-	})
-
-happyError_ tk = happyError' tk
-
-happyThen :: () => P a -> (a -> P b) -> P b
-happyThen = (>>=)
-happyReturn :: () => a -> P a
-happyReturn = (return)
-happyThen1 = happyThen
-happyReturn1 :: () => a -> P a
-happyReturn1 = happyReturn
-happyError' :: () => (Loc Token) -> P a
-happyError' tk = parseError tk
-
-mparseModule = happySomeParser where
-  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut13 x))
-
-mparseExp = happySomeParser where
-  happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut139 x))
-
-mparsePat = happySomeParser where
-  happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut182 x))
-
-mparseDecl = happySomeParser where
-  happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut50 x))
-
-mparseType = happySomeParser where
-  happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut88 x))
-
-mparseStmt = happySomeParser where
-  happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut186 x))
-
-mparseModules = happySomeParser where
-  happySomeParser = happyThen (happyParse 6#) (\x -> happyReturn (happyOut11 x))
-
-mfindOptPragmas = happySomeParser where
-  happySomeParser = happyThen (happyParse 7#) (\x -> happyReturn (happyOut15 x))
-
-happySeq = happyDontSeq
-
-
-type L = SrcSpanInfo -- just for convenience
-type S = SrcSpan
-
-parseError :: Loc Token -> P a
-parseError t = fail $ "Parse error: " ++ showToken (unLoc t)
-
-(<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo
-a <> b = ann a <++> ann b
-infixl 6 <>
-
-nIS = noInfoSpan
-iS = infoSpan
-
-
--- | Parse of a string, which should contain a complete Haskell module.
-parseModule :: String -> ParseResult (Module SrcSpanInfo)
-parseModule = simpleParse mparseModule
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode.
-parseModuleWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)
-parseModuleWithMode = modeParse mparseModule
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseModuleWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])
-parseModuleWithComments = commentParse mparseModule
-
--- | Parse of a string containing a Haskell expression.
-parseExp :: String -> ParseResult (Exp SrcSpanInfo)
-parseExp = simpleParse mparseExp
-
--- | Parse of a string containing a Haskell expression, using an explicit mode.
-parseExpWithMode :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo)
-parseExpWithMode = modeParse mparseExp
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseExpWithComments :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo, [Comment])
-parseExpWithComments = commentParse mparseExp
-
--- | Parse of a string containing a Haskell pattern.
-parsePat :: String -> ParseResult (Pat SrcSpanInfo)
-parsePat = simpleParse mparsePat
-
--- | Parse of a string containing a Haskell pattern, using an explicit mode.
-parsePatWithMode :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo)
-parsePatWithMode = modeParse mparsePat
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parsePatWithComments :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo, [Comment])
-parsePatWithComments = commentParse mparsePat
-
--- | Parse of a string containing a Haskell top-level declaration.
-parseDecl :: String -> ParseResult (Decl SrcSpanInfo)
-parseDecl = simpleParse mparseDecl
-
--- | Parse of a string containing a Haskell top-level declaration, using an explicit mode.
-parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo)
-parseDeclWithMode = modeParse mparseDecl
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo, [Comment])
-parseDeclWithComments = commentParse mparseDecl
-
--- | Parse of a string containing a Haskell type.
-parseType :: String -> ParseResult (Type SrcSpanInfo)
-parseType = runParser mparseType
-
--- | Parse of a string containing a Haskell type, using an explicit mode.
-parseTypeWithMode :: ParseMode -> String -> ParseResult (Type SrcSpanInfo)
-parseTypeWithMode mode = runParserWithMode mode mparseType
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseTypeWithComments :: ParseMode -> String -> ParseResult (Type SrcSpanInfo, [Comment])
-parseTypeWithComments mode str = runParserWithModeComments mode mparseType str
-
--- | Parse of a string containing a Haskell statement.
-parseStmt :: String -> ParseResult (Stmt SrcSpanInfo)
-parseStmt = runParser mparseStmt
-
--- | Parse of a string containing a Haskell type, using an explicit mode.
-parseStmtWithMode :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo)
-parseStmtWithMode mode = runParserWithMode mode mparseStmt
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseStmtWithComments :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo, [Comment])
-parseStmtWithComments mode str = runParserWithModeComments mode mparseStmt str
-
-
-simpleParse :: AppFixity a => P (a L) -> String -> ParseResult (a L)
-simpleParse p = applyFixities preludeFixities <=< runParser p
-
-modeParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L)
-modeParse p mode = applyFixities (fixities mode) <=< runParserWithMode mode p
-
-commentParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L, [Comment])
-commentParse p mode str = do (ast, cs) <- runParserWithModeComments mode p str
-                             ast' <- applyFixities (fixities mode) ast
-                             return (ast', cs)
-
--- | Partial parse of a string starting with a series of top-level option pragmas.
-getTopPragmas :: String -> ParseResult [ModulePragma SrcSpanInfo]
-getTopPragmas = runParser (mfindOptPragmas >>= \(ps,_,_) -> return ps)
-
--- | Parse of a string, which should contain a complete Haskell module.
-parseModules :: String -> ParseResult [Module SrcSpanInfo]
-parseModules = mapM (applyFixities preludeFixities) <=< runParser mparseModules
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode.
-parseModulesWithMode :: ParseMode -> String -> ParseResult [Module SrcSpanInfo]
-parseModulesWithMode mode = mapM (applyFixities (fixities mode)) <=< runParserWithMode mode mparseModules
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseModulesWithComments :: ParseMode -> String -> ParseResult ([Module SrcSpanInfo], [Comment])
-parseModulesWithComments mode str = do (ast,cs) <- runParserWithModeComments mode mparseModules str
-                                       ast' <- mapM (applyFixities (fixities mode)) ast
-                                       return (ast', cs)
-{-# LINE 1 "templates\GenericTemplate.hs" #-}
-{-# LINE 1 "templates\\GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command line>" #-}
-{-# LINE 1 "templates\\GenericTemplate.hs" #-}
--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
-
-{-# LINE 28 "templates\\GenericTemplate.hs" #-}
-
-
-data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
-
-
-
-
-
-{-# LINE 49 "templates\\GenericTemplate.hs" #-}
-
-{-# LINE 59 "templates\\GenericTemplate.hs" #-}
-
-{-# LINE 68 "templates\\GenericTemplate.hs" #-}
-
-infixr 9 `HappyStk`
-data HappyStk a = HappyStk a (HappyStk a)
-
------------------------------------------------------------------------------
--- starting the parse
-
-happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
-
------------------------------------------------------------------------------
--- Accepting the parse
-
--- If the current token is 0#, it means we've just accepted a partial
--- parse (a %partial parser).  We must ignore the saved token on the top of
--- the stack in this case.
-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
-	happyReturn1 ans
-happyAccept j tk st sts (HappyStk ans _) = 
-	(happyTcHack j (happyTcHack st)) (happyReturn1 ans)
-
------------------------------------------------------------------------------
--- Arrays only: do the next action
-
-
-
-happyDoAction i tk st
-	= {- nothing -}
-
-
-	  case action of
-		0#		  -> {- nothing -}
-				     happyFail i tk st
-		-1# 	  -> {- nothing -}
-				     happyAccept i tk st
-		n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
-
-				     (happyReduceArr Happy_Data_Array.! rule) i tk st
-				     where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
-		n		  -> {- nothing -}
-
-
-				     happyShift new_state i tk st
-				     where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
-   where off    = indexShortOffAddr happyActOffsets st
-	 off_i  = (off Happy_GHC_Exts.+# i)
-	 check  = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#))
-			then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==#  i)
-			else False
- 	 action | check     = indexShortOffAddr happyTable off_i
-		| otherwise = indexShortOffAddr happyDefActions st
-
-{-# LINE 127 "templates\\GenericTemplate.hs" #-}
-
-
-indexShortOffAddr (HappyA# arr) off =
-#if __GLASGOW_HASKELL__ > 500
-	Happy_GHC_Exts.narrow16Int# i
-#elif __GLASGOW_HASKELL__ == 500
-	Happy_GHC_Exts.intToInt16# i
-#else
-	Happy_GHC_Exts.iShiftRA# (Happy_GHC_Exts.iShiftL# i 16#) 16#
-#endif
-  where
-#if __GLASGOW_HASKELL__ >= 503
-	i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
-#else
-	i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.shiftL# high 8#) low)
-#endif
-	high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
-	low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
-	off' = off Happy_GHC_Exts.*# 2#
-
-
-
-
-
-data HappyAddr = HappyA# Happy_GHC_Exts.Addr#
-
-
-
-
------------------------------------------------------------------------------
--- HappyState data type (not arrays)
-
-{-# LINE 170 "templates\\GenericTemplate.hs" #-}
-
------------------------------------------------------------------------------
--- Shifting a token
-
-happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
-     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
---     trace "shifting the error token" $
-     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
-
-happyShift new_state i tk st sts stk =
-     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)
-
--- happyReduce is specialised for the common cases.
-
-happySpecReduce_0 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_0 nt fn j tk st@((action)) sts stk
-     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)
-
-happySpecReduce_1 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
-     = let r = fn v1 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_2 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
-     = let r = fn v1 v2 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_3 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
-     = let r = fn v1 v2 v3 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happyReduce k i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happyReduce k nt fn j tk st sts stk
-     = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
-	 sts1@((HappyCons (st1@(action)) (_))) ->
-        	let r = fn stk in  -- it doesn't hurt to always seq here...
-       		happyDoSeq r (happyGoto nt j tk st1 sts1 r)
-
-happyMonadReduce k nt fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happyMonadReduce k nt fn j tk st sts stk =
-        happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
-       where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))
-             drop_stk = happyDropStk k stk
-
-happyMonad2Reduce k nt fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happyMonad2Reduce k nt fn j tk st sts stk =
-       happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
-       where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))
-             drop_stk = happyDropStk k stk
-
-             off    = indexShortOffAddr happyGotoOffsets st1
-             off_i  = (off Happy_GHC_Exts.+# nt)
-             new_state = indexShortOffAddr happyTable off_i
-
-
-
-
-happyDrop 0# l = l
-happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t
-
-happyDropStk 0# l = l
-happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs
-
------------------------------------------------------------------------------
--- Moving to a new state after a reduction
-
-
-happyGoto nt j tk st = 
-   {- nothing -}
-   happyDoAction j tk new_state
-   where off    = indexShortOffAddr happyGotoOffsets st
-	 off_i  = (off Happy_GHC_Exts.+# nt)
- 	 new_state = indexShortOffAddr happyTable off_i
-
-
-
-
------------------------------------------------------------------------------
--- Error recovery (0# is the error token)
-
--- parse error if we are in recovery and we fail again
-happyFail  0# tk old_st _ stk =
---	trace "failing" $ 
-    	happyError_ tk
-
-{-  We don't need state discarding for our restricted implementation of
-    "error".  In fact, it can cause some bogus parses, so I've disabled it
-    for now --SDM
-
--- discard a state
-happyFail  0# tk old_st (HappyCons ((action)) (sts)) 
-						(saved_tok `HappyStk` _ `HappyStk` stk) =
---	trace ("discarding state, depth " ++ show (length stk))  $
-	happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
--}
-
--- Enter error recovery: generate an error token,
---                       save the old token and carry on.
-happyFail  i tk (action) sts stk =
---      trace "entering error recovery" $
-	happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
-
--- Internal happy errors:
-
-notHappyAtAll = error "Internal Happy error\n"
-
------------------------------------------------------------------------------
--- Hack to get the typechecker to accept our action functions
-
-
-happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
-happyTcHack x y = y
-{-# INLINE happyTcHack #-}
-
-
------------------------------------------------------------------------------
--- Seq-ing.  If the --strict flag is given, then Happy emits 
---	happySeq = happyDoSeq
--- otherwise it emits
--- 	happySeq = happyDontSeq
-
-happyDoSeq, happyDontSeq :: a -> b -> b
-happyDoSeq   a b = a `seq` b
-happyDontSeq a b = b
-
------------------------------------------------------------------------------
--- Don't inline any functions from the template.  GHC has a nasty habit
--- of deciding to inline happyGoto everywhere, which increases the size of
--- the generated parser quite a bit.
-
-
-{-# NOINLINE happyDoAction #-}
-{-# NOINLINE happyTable #-}
-{-# NOINLINE happyCheck #-}
-{-# NOINLINE happyActOffsets #-}
-{-# NOINLINE happyGotoOffsets #-}
-{-# NOINLINE happyDefActions #-}
-
-{-# NOINLINE happyShift #-}
-{-# NOINLINE happySpecReduce_0 #-}
-{-# NOINLINE happySpecReduce_1 #-}
-{-# NOINLINE happySpecReduce_2 #-}
-{-# NOINLINE happySpecReduce_3 #-}
-{-# NOINLINE happyReduce #-}
-{-# NOINLINE happyMonadReduce #-}
-{-# NOINLINE happyGoto #-}
-{-# NOINLINE happyFail #-}
-
--- end of Happy Template.
haskell-src-exts.cabal view
@@ -1,71 +1,99 @@ Name:                   haskell-src-exts-Version:                1.9.0+Version:                1.24.0 License:                BSD3 License-File:           LICENSE+Build-Type:             Simple Author:                 Niklas Broberg-Maintainer:             Niklas Broberg <d00nibro@chalmers.se>+Maintainer:             Dan Burton <danburton.email@gmail.com> Category:               Language Synopsis:               Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer Description:            Haskell-Source with Extensions (HSE, haskell-src-exts)-                        is an extension of the standard haskell-src package,-                        and handles most registered syntactic extensions to Haskell, including:-                        .-                        * Multi-parameter type classes with functional dependencies-                        .-                        * Indexed type families (including associated types)-                        .-                        * Empty data declarations-                        .-                        * GADTs-                        .-                        * Implicit parameters-                        .-                        * Template Haskell+                        is a standalone parser for Haskell. In addition to+                        standard Haskell, all extensions implemented in GHC are supported.                         .-                        and a few more. All extensions implemented in GHC are supported.                         Apart from these standard extensions,                         it also handles regular patterns as per the HaRP extension                         as well as HSX-style embedded XML syntax.-Homepage:               http://code.haskell.org/haskell-src-exts+Homepage:               https://github.com/haskell-suite/haskell-src-exts+Bug-Reports:            https://github.com/haskell-suite/haskell-src-exts/issues Stability:              Stable-Tested-with:            GHC==6.10.2, GHC==6.10.4-Build-Type:             Custom-Cabal-Version:          >= 1.2+Cabal-Version:          >= 1.10+Tested-With:            GHC == 9.14.1 -Flag base4+Extra-Source-Files:+                        README.md+                        CHANGELOG+                        RELEASENOTES-1.17.0+                        tests/examples/*.hs+                        tests/examples/*.lhs+                        tests/examples/*.hs.parser.golden+                        tests/examples/*.lhs.parser.golden+                        tests/examples/*.hs.exactprinter.golden+                        tests/examples/*.lhs.exactprinter.golden+                        tests/examples/*.hs.prettyprinter.golden+                        tests/examples/*.lhs.prettyprinter.golden+                        tests/examples/*.hs.prettyparser.golden+                        tests/examples/*.lhs.prettyparser.golden+                        tests/Runner.hs+                        tests/Extensions.hs  Library-  Build-Tools:          happy >= 1.17-  Build-Depends:        array >= 0.1, pretty >= 1.0, cpphs >= 1.3-  if flag(base4)-    Build-depends:      base >= 4 && < 5-    cpp-options:        -DBASE4-  else-    Build-depends:      base >= 3 && < 4-+  Default-language:     Haskell98+  Build-Tools:          happy >= 1.19+  Build-Depends:        array >= 0.1 && < 0.6,+                        pretty >= 1.0 && < 1.2,+                        base >= 4.5 && < 5,+                        -- this is needed to access GHC.Generics on GHC 7.4+                        ghc-prim < 0.14+  -- this is needed to access Data.Semigroup and Control.Monad.Fail on GHCs+  -- before 8.0+  if !impl(ghc >= 8.0)+    Build-Depends:+                        semigroups >= 0.18.3 && < 0.21,+                        fail == 4.9.*    Exposed-modules:      Language.Haskell.Exts,-                        Language.Haskell.Exts.Parser,+                        Language.Haskell.Exts.Lexer,                         Language.Haskell.Exts.Pretty,-                        Language.Haskell.Exts.Syntax,                         Language.Haskell.Exts.Extension,                         Language.Haskell.Exts.Build,-                        Language.Haskell.Exts.Fixity,-                        Language.Haskell.Exts.Comments,                         Language.Haskell.Exts.SrcLoc,-                        -                        Language.Haskell.Exts.Annotated,-                        Language.Haskell.Exts.Annotated.Syntax,-                        Language.Haskell.Exts.Annotated.Fixity,-                        Language.Haskell.Exts.Annotated.Build,-                        Language.Haskell.Exts.Annotated.ExactPrint,-                        Language.Haskell.Exts.Annotated.Simplify +                        Language.Haskell.Exts.Syntax,+                        Language.Haskell.Exts.Fixity,+                        Language.Haskell.Exts.ExactPrint,+                        Language.Haskell.Exts.Parser,+                        Language.Haskell.Exts.Comments+   Other-modules:        Language.Haskell.Exts.ExtScheme,-                                                 Language.Haskell.Exts.ParseMonad,                         Language.Haskell.Exts.ParseSyntax,-                        Language.Haskell.Exts.Lexer,+                        Language.Haskell.Exts.InternalLexer,                         Language.Haskell.Exts.ParseUtils,                         Language.Haskell.Exts.InternalParser+                        Language.Preprocessor.Unlit   Hs-source-dirs:       src+  Ghc-options:          -Wall++Source-Repository head+        Type:           git+        Location:       https://github.com/haskell-suite/haskell-src-exts.git++Test-Suite test+  type:                exitcode-stdio-1.0+  hs-source-dirs:      tests+  main-is:             Runner.hs+  other-modules:       Extensions+  GHC-Options:         -threaded -Wall+  Default-language:    Haskell2010+  Build-depends:       base,+                       mtl,+                       containers,+                       haskell-src-exts,+                       smallcheck >= 1.0,+                       tasty >= 0.3,+                       tasty-smallcheck,+                       tasty-golden >= 2.2.2,+                       filepath,+                       directory,+                       pretty-show >= 1.6.16
src/Language/Haskell/Exts.hs view
@@ -17,92 +17,137 @@     -- * Re-exported modules       module Language.Haskell.Exts.Syntax     , module Language.Haskell.Exts.Build-    , module Language.Haskell.Exts.Parser+    , module Language.Haskell.Exts.Lexer     , module Language.Haskell.Exts.Pretty-    , module Language.Haskell.Exts.Extension     , module Language.Haskell.Exts.Fixity+    , module Language.Haskell.Exts.ExactPrint+    , module Language.Haskell.Exts.SrcLoc     , module Language.Haskell.Exts.Comments+    , module Language.Haskell.Exts.Extension+    , module Language.Haskell.Exts.Parser     -- * Parsing of Haskell source files     , parseFile     , parseFileWithMode     , parseFileWithExts     , parseFileWithComments+    , parseFileWithCommentsAndPragmas     , parseFileContents     , parseFileContentsWithMode+    , parseFileContentsWithExts     , parseFileContentsWithComments     -- * Read extensions declared in LANGUAGE pragmas     , readExtensions     ) where  import Language.Haskell.Exts.Build-import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.Comments import Language.Haskell.Exts.Parser+import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.Lexer ( lexTokenStream, lexTokenStreamWithMode, Token(..) ) import Language.Haskell.Exts.Pretty-import Language.Haskell.Exts.Extension import Language.Haskell.Exts.Fixity-import Language.Haskell.Exts.Comments+import Language.Haskell.Exts.ExactPrint+import Language.Haskell.Exts.SrcLoc+import Language.Haskell.Exts.Extension  import Data.List+import Data.Maybe (fromMaybe) import Language.Preprocessor.Unlit+import System.IO  -- | Parse a source file on disk, using the default parse mode.-parseFile :: FilePath -> IO (ParseResult Module)+parseFile :: FilePath -> IO (ParseResult (Module SrcSpanInfo)) parseFile fp = parseFileWithMode (defaultParseMode { parseFilename = fp }) fp  -- | Parse a source file on disk, with an extra set of extensions to know about --   on top of what the file itself declares.-parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult Module)-parseFileWithExts exts fp = parseFileWithMode (defaultParseMode { extensions = exts, parseFilename = fp }) fp+parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult (Module SrcSpanInfo))+parseFileWithExts exts fp =+    parseFileWithMode (defaultParseMode {+                         extensions = exts,+                         parseFilename = fp }) fp  -- | Parse a source file on disk, supplying a custom parse mode.-parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult Module)-parseFileWithMode p fp = readFile fp >>= (return . parseFileContentsWithMode p)+parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo))+parseFileWithMode p fp = readUTF8File fp >>= return . parseFileContentsWithMode p --- | Parse a source file on disk, supplying a custom parse mode, and retaining comments.-parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module, [Comment]))-parseFileWithComments p fp = readFile fp >>= (return . parseFileContentsWithComments p)+parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment]))+parseFileWithComments p fp = readUTF8File fp >>= return . parseFileContentsWithComments p +-- | Parse a source file on disk, supplying a custom parse mode, and retaining comments+--  as well as unknown pragmas.+parseFileWithCommentsAndPragmas+  :: ParseMode -> FilePath+  -> IO (ParseResult (Module SrcSpanInfo, [Comment], [UnknownPragma]))+parseFileWithCommentsAndPragmas p fp =+    readUTF8File fp >>= return . parseFileContentsWithCommentsAndPragmas p++-- | Parse a source file from a string using a custom parse mode retaining comments+--   as well as unknown pragmas.+parseFileContentsWithCommentsAndPragmas+  :: ParseMode -> String+  -> ParseResult (Module SrcSpanInfo, [Comment], [UnknownPragma])+parseFileContentsWithCommentsAndPragmas pmode str = separatePragmas parseResult+    where parseResult = parseFileContentsWithComments pmode str+ -- | Parse a source file from a string using the default parse mode.-parseFileContents :: String -> ParseResult Module+parseFileContents :: String -> ParseResult (Module SrcSpanInfo) parseFileContents = parseFileContentsWithMode defaultParseMode  -- | Parse a source file from a string, with an extra set of extensions to know about --   on top of what the file itself declares.-parseFileContentsWithExts :: [Extension] -> String -> ParseResult Module-parseFileContentsWithExts exts = parseFileContentsWithMode (defaultParseMode { extensions = exts })+parseFileContentsWithExts :: [Extension] -> String -> ParseResult (Module SrcSpanInfo)+parseFileContentsWithExts exts =+    parseFileContentsWithMode (defaultParseMode { extensions = exts })  -- | Parse a source file from a string using a custom parse mode.-parseFileContentsWithMode :: ParseMode -> String -> ParseResult Module-parseFileContentsWithMode p@(ParseMode fn exts ign _ _) rawStr =+parseFileContentsWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)+parseFileContentsWithMode p@(ParseMode fn oldLang exts ign _ _ _) rawStr =         let md = delit fn $ ppContents rawStr-            allExts = impliesExts $ case (ign, readExtensions md) of-                                     (False,Just es) -> exts ++ es-                                     _               -> exts-         in parseWithMode (p { extensions = allExts }) md+            (bLang, extraExts) =+                case (ign, readExtensions md) of+                  (False, Just (mLang, es)) ->+                       (fromMaybe oldLang mLang, es)+                  _ -> (oldLang, [])+         in -- trace (fn ++ ": " ++ show extraExts) $+              parseModuleWithMode (p { baseLanguage = bLang, extensions = exts ++ extraExts }) md --- | Parse a source file from a string using a custom parse mode and retaining comments.-parseFileContentsWithComments :: ParseMode -> String -> ParseResult (Module, [Comment])-parseFileContentsWithComments p@(ParseMode fn exts ign _ _) rawStr =+parseFileContentsWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])+parseFileContentsWithComments p@(ParseMode fn oldLang exts ign _ _ _) rawStr =         let md = delit fn $ ppContents rawStr-            allExts = impliesExts $ case (ign, readExtensions md) of-                                     (False,Just es) -> exts ++ es-                                     _               -> exts-         in parseWithComments (p { extensions = allExts }) md-+            (bLang, extraExts) =+                case (ign, readExtensions md) of+                  (False, Just (mLang, es)) ->+                       (fromMaybe oldLang mLang, es)+                  _ -> (oldLang, [])+         in parseModuleWithComments (p { baseLanguage = bLang, extensions = exts ++ extraExts }) md  -- | Gather the extensions declared in LANGUAGE pragmas --   at the top of the file. Returns 'Nothing' if the --   parse of the pragmas fails.-readExtensions :: String -> Maybe [Extension]+readExtensions :: String -> Maybe (Maybe Language, [Extension]) readExtensions str = case getTopPragmas str of-        ParseOk pgms -> Just (concatMap getExts pgms)+        ParseOk pgms -> extractLang $ concatMap getExts pgms         _            -> Nothing-  where getExts :: ModulePragma -> [Extension]+  where getExts :: ModulePragma l -> [Either Language Extension]         getExts (LanguagePragma _ ns) = map readExt ns         getExts _ = [] -        readExt (Ident e) = classifyExtension e+        readExt (Ident _ e) =+            case classifyLanguage e of+              UnknownLanguage _ -> Right $ classifyExtension e+              lang -> Left lang+        readExt Symbol {} = error "readExt: Symbol" +        extractLang = extractLang' Nothing []++        extractLang' lacc eacc [] = Just (lacc, eacc)+        extractLang' Nothing eacc (Left l : rest) = extractLang' (Just l) eacc rest+        extractLang' (Just l1) eacc (Left l2:rest)+            | l1 == l2  = extractLang' (Just l1) eacc rest+            | otherwise = Nothing+        extractLang' lacc eacc (Right ext : rest) = extractLang' lacc (ext:eacc) rest+ ppContents :: String -> String ppContents = unlines . f . lines   where f (('#':_):rest) = rest@@ -110,3 +155,26 @@  delit :: String -> String -> String delit fn = if ".lhs" `isSuffixOf` fn then unlit fn else id++readUTF8File :: FilePath -> IO String+readUTF8File fp = do+  h <- openFile fp ReadMode+  hSetEncoding h utf8+  c <- hGetContents h >>= \s -> length s `seq` return s+  hClose h+  return c++-- | Converts a parse result with comments to a parse result with comments and+--   unknown pragmas.+separatePragmas :: ParseResult (Module SrcSpanInfo, [Comment])+                -> ParseResult (Module SrcSpanInfo, [Comment], [UnknownPragma])+separatePragmas r =+    case r of+        ParseOk (m, comments) ->+            let (pragmas, comments') = partition pragLike comments+              in  ParseOk (m, comments', map commentToPragma pragmas)+                where commentToPragma (Comment _ l s) =+                            UnknownPragma l $ init $ drop 1 s+                      pragLike (Comment b _ s) = b && pcond s+                      pcond s = length s > 1 && take 1 s == "#" && last s == '#'+        ParseFailed l s ->  ParseFailed l s
− src/Language/Haskell/Exts/Annotated.hs
@@ -1,123 +0,0 @@--------------------------------------------------------------------------------- |--- Module      :  Language.Haskell.Exts--- Copyright   :  (c) Niklas Broberg 2004-2009--- License     :  BSD-style (see the file LICENSE.txt)------ Maintainer  :  Niklas Broberg, d00nibro@chalmers.se--- Stability   :  stable--- Portability :  portable------ An umbrella module for the various functionality--- of the package. Also provides some convenient--- functionality for dealing directly with source files.----------------------------------------------------------------------------------module Language.Haskell.Exts.Annotated (-    -- * Re-exported modules-      module Language.Haskell.Exts.Annotated.Syntax-    , module Language.Haskell.Exts.Annotated.Build-    , module Language.Haskell.Exts.Parser-    , module Language.Haskell.Exts.Pretty-    , module Language.Haskell.Exts.Annotated.Fixity-    , module Language.Haskell.Exts.Annotated.ExactPrint-    , module Language.Haskell.Exts.SrcLoc-    , module Language.Haskell.Exts.Comments-    , module Language.Haskell.Exts.Extension-    -- * Parsing of Haskell source files-    , parseFile-    , parseFileWithMode-    , parseFileWithExts-    , parseFileWithComments-    , parseFileContents-    , parseFileContentsWithMode-    , parseFileContentsWithExts-    , parseFileContentsWithComments-    -- * Parsing of Haskell source elements,-    , parseModule, parseModuleWithMode, parseModuleWithComments-    , parseExp, parseExpWithMode, parseExpWithComments-    , parseStmt, parseStmtWithMode, parseStmtWithComments-    , parsePat, parsePatWithMode, parsePatWithComments-    , parseDecl, parseDeclWithMode, parseDeclWithComments-    , parseType, parseTypeWithMode, parseTypeWithComments-    -- * Read extensions declared in LANGUAGE pragmas-    , readExtensions-    ) where--import Language.Haskell.Exts.Annotated.Build-import Language.Haskell.Exts.Annotated.Syntax-import Language.Haskell.Exts.Parser ( Parseable(..), ParseResult(..), fromParseResult, ParseMode(..), defaultParseMode )-import Language.Haskell.Exts.Pretty-import Language.Haskell.Exts.Annotated.Fixity-import Language.Haskell.Exts.Annotated.ExactPrint-import Language.Haskell.Exts.SrcLoc-import Language.Haskell.Exts.Extension-import Language.Haskell.Exts.Comments--import Language.Haskell.Exts.InternalParser--import Data.List-import Language.Preprocessor.Unlit---- | Parse a source file on disk, using the default parse mode.-parseFile :: FilePath -> IO (ParseResult (Module SrcSpanInfo))-parseFile fp = parseFileWithMode (defaultParseMode { parseFilename = fp }) fp---- | Parse a source file on disk, with an extra set of extensions to know about---   on top of what the file itself declares.-parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult (Module SrcSpanInfo))-parseFileWithExts exts fp = parseFileWithMode (defaultParseMode { extensions = exts, parseFilename = fp }) fp---- | Parse a source file on disk, supplying a custom parse mode.-parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo))-parseFileWithMode p fp = readFile fp >>= (return . parseFileContentsWithMode p)--parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment]))-parseFileWithComments p fp = readFile fp >>= (return . parseFileContentsWithComments p)---- | Parse a source file from a string using the default parse mode.-parseFileContents :: String -> ParseResult (Module SrcSpanInfo)-parseFileContents = parseFileContentsWithMode defaultParseMode---- | Parse a source file from a string, with an extra set of extensions to know about---   on top of what the file itself declares.-parseFileContentsWithExts :: [Extension] -> String -> ParseResult (Module SrcSpanInfo)-parseFileContentsWithExts exts = parseFileContentsWithMode (defaultParseMode { extensions = exts })---- | Parse a source file from a string using a custom parse mode.-parseFileContentsWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)-parseFileContentsWithMode p@(ParseMode fn exts ign _ _) rawStr =-        let md = delit fn $ ppContents rawStr-            allExts = impliesExts $ case (ign, readExtensions md) of-                                     (False,Just es) -> exts ++ es-                                     _               -> exts-         in parseModuleWithMode (p { extensions = allExts }) md--parseFileContentsWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])-parseFileContentsWithComments p@(ParseMode fn exts ign _ _) rawStr =-        let md = delit fn $ ppContents rawStr-            allExts = impliesExts $ case (ign, readExtensions md) of-                                     (False,Just es) -> exts ++ es-                                     _               -> exts-         in parseModuleWithComments (p { extensions = allExts }) md---- | Gather the extensions declared in LANGUAGE pragmas---   at the top of the file. Returns 'Nothing' if the---   parse of the pragmas fails.-readExtensions :: String -> Maybe [Extension]-readExtensions str = case getTopPragmas str of-        ParseOk pgms -> Just (concatMap getExts pgms)-        _            -> Nothing-  where getExts :: ModulePragma l -> [Extension]-        getExts (LanguagePragma _ ns) = map readExt ns-        getExts _ = []--        readExt (Ident _ e) = classifyExtension e--ppContents :: String -> String-ppContents = unlines . f . lines-  where f (('#':_):rest) = rest-        f x = x--delit :: String -> String -> String-delit fn = if ".lhs" `isSuffixOf` fn then unlit fn else id
− src/Language/Haskell/Exts/Annotated/Build.hs
@@ -1,290 +0,0 @@--------------------------------------------------------------------------------- |--- Module      :  Language.Haskell.Exts.Annotated.Build--- Copyright   :  (c) The GHC Team, 1997-2000,---                (c) Niklas Broberg 2004--- License     :  BSD-style (see the file LICENSE.txt)------ Maintainer  :  Niklas Broberg, d00nibro@chalmers.se--- Stability   :  experimental--- Portability :  portable------ This module contains combinators to use when building--- Haskell source trees programmatically, as opposed to--- parsing them from a string. The contents here are quite--- experimental and will likely receive a lot of attention--- when the rest has stabilised.-----------------------------------------------------------------------------------module Language.Haskell.Exts.Annotated.Build (--    -- * Syntax building functions-    name,       -- :: String -> Name-    sym,        -- :: String -> Name-    var,        -- :: Name -> Exp-    op,         -- :: Name -> QOp-    qvar,       -- :: Module -> Name -> Exp-    pvar,       -- :: Name -> Pat-    app,        -- :: Exp -> Exp -> Exp-    infixApp,   -- :: Exp -> QOp -> Exp -> Exp-    appFun,     -- :: Exp -> [Exp] -> Exp-    pApp,       -- :: Name -> [Pat] -> Pat-    tuple,      -- :: [Exp] -> Exp-    pTuple,     -- :: [Pat] -> Pat-    varTuple,   -- :: [Name] -> Exp-    pvarTuple,  -- :: [Name] -> Pat-    function,   -- :: String -> Exp-    strE,       -- :: String -> Exp-    charE,      -- :: Char -> Exp-    intE,       -- :: Integer -> Exp-    strP,       -- :: String -> Pat-    charP,      -- :: Char -> Pat-    intP,       -- :: Integer -> Pat-    doE,        -- :: [Stmt] -> Exp-    lamE,       -- :: SrcLoc -> [Pat] -> Exp -> Exp-    letE,       -- :: [Decl] -> Exp -> Exp-    caseE,      -- :: Exp -> [Alt] -> Exp-    alt,        -- :: SrcLoc -> Pat -> Exp -> Alt-    altGW,      -- :: SrcLoc -> Pat -> [Stmt] -> Exp -> Binds -> Alt-    listE,      -- :: [Exp] -> Exp-    eList,      -- :: Exp-    peList,     -- :: Pat-    paren,      -- :: Exp -> Exp-    pParen,     -- :: Pat -> Pat-    qualStmt,   -- :: Exp -> Stmt-    genStmt,    -- :: SrcLoc -> Pat -> Exp -> Stmt-    letStmt,    -- :: [Decl] -> Stmt-    binds,      -- :: [Decl] -> Binds-    noBinds,    -- :: Binds-    wildcard,   -- :: Pat-    genNames,   -- :: String -> Int -> [Name]--    -- * More advanced building-    sfun,           -- :: SrcLoc -> Name -> [Name] -> Rhs -> Binds -> Decl-    simpleFun,      -- :: SrcLoc -> Name -> Name -> Exp -> Decl-    patBind,        -- :: SrcLoc -> Pat -> Exp -> Decl-    patBindWhere,   -- :: SrcLoc -> Pat -> Exp -> [Decl] -> Decl-    nameBind,       -- :: SrcLoc -> Name -> Exp -> Decl-    metaFunction,   -- :: String -> [Exp] -> Exp-    metaConPat      -- :: String -> [Pat] -> Pat-  ) where--import Language.Haskell.Exts.Annotated.Syntax---------------------------------------------------------------------------------- Help functions for Abstract syntax---- | An identifier with the given string as its name.---   The string should be a valid Haskell identifier.-name :: l -> String -> Name l-name = Ident---- | A symbol identifier. The string should be a valid---   Haskell symbol identifier.-sym :: l -> String -> Name l-sym = Symbol---- | A local variable as expression.-var :: l -> Name l -> Exp l-var l = Var l . UnQual l---- | Use the given identifier as an operator.-op :: l -> Name l -> QOp l-op l = QVarOp l . UnQual l---- | A qualified variable as expression.-qvar :: l -> ModuleName l -> Name l -> Exp l-qvar l m = Var l . Qual l m---- | A pattern variable.-pvar :: l -> Name l -> Pat l-pvar = PVar---- | Application of expressions by juxtaposition.-app :: l -> Exp l -> Exp l -> Exp l-app = App---- | Apply an operator infix.-infixApp :: l -> Exp l -> QOp l -> Exp l -> Exp l-infixApp = InfixApp---- | Apply a function to a list of arguments.-appFun :: [l] -> Exp l -> [Exp l] -> Exp l-appFun _ f [] = f-appFun (l:ls) f (a:as) = appFun ls (app l f a) as---- | A constructor pattern, with argument patterns.-pApp :: l -> Name l -> [Pat l] -> Pat l-pApp l n = PApp l (UnQual l n)---- | A tuple expression.-tuple :: l -> [Exp l] -> Exp l-tuple = Tuple---- | A tuple pattern.-pTuple :: l -> [Pat l] -> Pat l-pTuple = PTuple---- | A tuple expression consisting of variables only.-varTuple :: l -> [Name l] -> Exp l-varTuple l ns = tuple l $ map (var l) ns---- | A tuple pattern consisting of variables only.-pvarTuple :: l -> [Name l] -> Pat l-pvarTuple l ns = pTuple l $ map (pvar l) ns---- | A function with a given name.-function :: l -> String -> Exp l-function l = var l . Ident l---- | A literal string expression.-strE :: l -> String -> Exp l-strE l s = Lit l $ String l s s---- | A literal character expression.-charE :: l -> Char -> Exp l-charE l c = Lit l $ Char l c [c]---- | A literal integer expression.-intE :: l -> Integer -> Exp l-intE l i = Lit l $ Int l i (show i)---- | A literal string pattern.-strP :: l -> String -> Pat l-strP l s = PLit l $ String l s s---- | A literal character pattern.-charP :: l -> Char -> Pat l-charP l c = PLit l $ Char l c [c]---- | A literal integer pattern.-intP :: l -> Integer -> Pat l-intP l i = PLit l $ Int l i (show i)---- | A do block formed by the given statements.---   The last statement in the list should be---   a 'Qualifier' expression.-doE :: l -> [Stmt l] -> Exp l-doE = Do---- | Lambda abstraction, given a list of argument---   patterns and an expression body.-lamE :: l -> [Pat l] -> Exp l -> Exp l-lamE = Lambda---- | A @let@ ... @in@ block.-letE :: l -> [Decl l] -> Exp l -> Exp l-letE l ds e = Let l (binds l ds) e---- | A @case@ expression.-caseE :: l -> Exp l -> [Alt l] -> Exp l-caseE = Case---- | An unguarded alternative in a @case@ expression.-alt :: l -> Pat l -> Exp l -> Alt l-alt l p e = Alt l p (unGAlt l e) Nothing---- | An alternative with a single guard in a @case@ expression.-altGW :: l -> Pat l -> [Stmt l] -> Exp l -> Binds l -> Alt l-altGW l p gs e w = Alt l p (gAlt l gs e) (Just w)---- | An unguarded righthand side of a @case@ alternative.-unGAlt :: l -> Exp l -> GuardedAlts l-unGAlt = UnGuardedAlt---- | An list of guarded righthand sides for a @case@ alternative.-gAlts :: l -> [([Stmt l], Exp l)] -> GuardedAlts l-gAlts l as = GuardedAlts l $ map (\(gs,e) -> GuardedAlt l gs e) as---- | A single guarded righthand side for a @case@ alternative.-gAlt :: l -> [Stmt l] -> Exp l -> GuardedAlts l-gAlt l gs e = gAlts l [(gs,e)]---- | A list expression.-listE :: l -> [Exp l] -> Exp l-listE = List---- | The empty list expression.-eList :: l -> Exp l-eList l = List l []---- | The empty list pattern.-peList :: l -> Pat l-peList l = PList l []---- | Put parentheses around an expression.-paren :: l -> Exp l -> Exp l-paren = Paren---- | Put parentheses around a pattern.-pParen :: l -> Pat l -> Pat l-pParen = PParen---- | A qualifier expression statement.-qualStmt :: l -> Exp l -> Stmt l-qualStmt = Qualifier---- | A generator statement: /pat/ @<-@ /exp/-genStmt :: l -> Pat l -> Exp l -> Stmt l-genStmt = Generator---- | A @let@ binding group as a statement.-letStmt :: l -> [Decl l] -> Stmt l-letStmt l ds = LetStmt l $ binds l ds---- | Hoist a set of declarations to a binding group.-binds :: l -> [Decl l] -> Binds l-binds = BDecls---- | An empty binding group.-noBinds :: l -> Binds l-noBinds l = binds l []---- | The wildcard pattern: @_@-wildcard :: l -> Pat l-wildcard = PWildCard---- | Generate k names by appending numbers 1 through k to a given string.-genNames :: l -> String -> Int -> [Name l]-genNames l s k = [ Ident l $ s ++ show i | i <- [1..k] ]------------------------------------------------------------------------------------ Some more specialised help functions---- | A function with a single clause-sfun :: l -> Name l -> [Name l] -> Rhs l -> Maybe (Binds l) -> Decl l-sfun l f pvs rhs mbs = FunBind l [Match l f (map (pvar l) pvs) rhs mbs]---- | A function with a single clause, a single argument, no guards--- and no where declarations-simpleFun :: l -> Name l -> Name l -> Exp l -> Decl l-simpleFun l f a e = let rhs = UnGuardedRhs l e-             in sfun l f [a] rhs Nothing---- | A pattern bind where the pattern is a variable, and where--- there are no guards and no 'where' clause.-patBind :: l -> Pat l -> Exp l -> Decl l-patBind l p e = let rhs = UnGuardedRhs l e-         in PatBind l p Nothing rhs Nothing---- | A pattern bind where the pattern is a variable, and where--- there are no guards, but with a 'where' clause.-patBindWhere :: l -> Pat l -> Exp l -> [Decl l] -> Decl l-patBindWhere l p e ds = let rhs = UnGuardedRhs l e-             in PatBind l p Nothing rhs (Just $ binds l ds)---- | Bind an identifier to an expression.-nameBind :: l -> Name l -> Exp l -> Decl l-nameBind l n e = patBind l (pvar l n) e---- | Apply function of a given name to a list of arguments.-metaFunction :: l -> String -> [Exp l] -> Exp l-metaFunction l s es = mf l s (reverse es)-  where mf l s []     = var l $ name l s-        mf l s (e:es) = app l (mf l s es) e---- | Apply a constructor of a given name to a list of pattern---   arguments, forming a constructor pattern.-metaConPat :: l -> String -> [Pat l] -> Pat l-metaConPat l s ps = pApp l (name l s) ps
− src/Language/Haskell/Exts/Annotated/ExactPrint.hs
@@ -1,1724 +0,0 @@------------------------------------------------------------------------------
--- |
--- Module      :  Language.Haskell.Exts.Annotated.ExactPrint
--- Copyright   :  (c) Niklas Broberg 2009
--- License     :  BSD-style (see the file LICENSE.txt)
---
--- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se
--- Stability   :  stable
--- Portability :  portable
---
--- Exact-printer for Haskell abstract syntax. The input is a (semi-concrete)
--- abstract syntax tree, annotated with exact source information to enable
--- printing the tree exactly as it was parsed.
---
------------------------------------------------------------------------------
-module Language.Haskell.Exts.Annotated.ExactPrint
-        ( exactPrint
-        , ExactP
-        ) where
-
-import Language.Haskell.Exts.Annotated.Syntax
-import Language.Haskell.Exts.SrcLoc
-import Language.Haskell.Exts.Comments
-
-import Control.Monad (when)
-import Control.Arrow ((***), (&&&))
-import Data.List (intersperse)
-
--- import Debug.Trace (trace)
-
-------------------------------------------------------
--- The EP monad and basic combinators
-
-type Pos = (Int,Int)
-
-pos :: (SrcInfo loc) => loc -> Pos
-pos ss = (startLine ss, startColumn ss)
-
-newtype EP x = EP (Pos -> [Comment] -> (x, Pos, [Comment], ShowS))
-
-instance Monad EP where
-  return x = EP $ \l cs -> (x, l, cs, id)
-
-  EP m >>= k = EP $ \l0 c0 -> let
-        (a, l1, c1, s1) = m l0 c0
-        EP f = k a
-        (b, l2, c2, s2) = f l1 c1
-    in (b, l2, c2, s1 . s2)
-
-runEP :: EP () -> [Comment] -> String
-runEP (EP f) cs = let (_,_,_,s) = f (1,1) cs in s ""
-
-getPos :: EP Pos
-getPos = EP (\l cs -> (l,l,cs,id))
-
-setPos :: Pos -> EP ()
-setPos l = EP (\_ cs -> ((),l,cs,id))
-
-printString :: String -> EP ()
-printString str = EP (\(l,c) cs -> ((), (l,c+length str), cs, showString str))
-
-getComment :: EP (Maybe Comment)
-getComment = EP $ \l cs ->
-    let x = case cs of
-             c:_ -> Just c
-             _   -> Nothing
-     in (x, l, cs, id)
-
-dropComment :: EP ()
-dropComment = EP $ \l cs ->
-    let cs' = case cs of
-               (_:cs) -> cs
-               _      -> cs
-     in ((), l, cs', id)
-
-newLine :: EP ()
-newLine = do
-    (l,_) <- getPos
-    printString "\n"
-    setPos (l+1,1)
-
-padUntil :: Pos -> EP ()
-padUntil (l,c) = do
-    (l1,c1) <- getPos
-    case  {- trace (show ((l,c), (l1,c1))) -} () of
-     _ {-()-} | l1 >= l && c1 <= c -> printString $ replicate (c - c1) ' '
-              | l1 < l             -> newLine >> padUntil (l,c)
-              | otherwise          -> return ()
-
-
-mPrintComments :: Pos -> EP ()
-mPrintComments p = do
-    mc <- getComment
-    case mc of
-     Nothing -> return ()
-     Just (Comment multi s str) ->
-        when (pos s < p) $ do
-            dropComment
-            padUntil (pos s)
-            printComment multi str
-            setPos (srcSpanEndLine s, srcSpanEndColumn s)
-            mPrintComments p
-
-printComment :: Bool -> String -> EP ()
-printComment b str
-    | b         = printString $ "{-" ++ str ++ "-}"
-    | otherwise = printString $ "--" ++ str
-
-printWhitespace :: Pos -> EP ()
-printWhitespace p = mPrintComments p >> padUntil p
-
-printStringAt :: Pos -> String -> EP ()
-printStringAt p str = printWhitespace p >> printString str
-
-errorEP :: String -> EP a
-errorEP = fail
-
-------------------------------------------------------------------------------
--- Printing of source elements
-
--- | Print an AST exactly as specified by the annotations on the nodes in the tree.
-exactPrint :: (ExactP ast) => ast SrcSpanInfo -> [Comment] -> String
-exactPrint ast cs = runEP (exactPC ast) cs
-
-exactPC :: (ExactP ast) => ast SrcSpanInfo -> EP ()
-exactPC ast = let p = pos (ann ast) in mPrintComments p >> padUntil p >> exactP ast
-
-printSeq :: [(Pos, EP ())] -> EP ()
-printSeq [] = return ()
-printSeq ((p,pr):xs) = printWhitespace p >> pr >> printSeq xs
-
-printStrs :: SrcInfo loc => [(loc, String)] -> EP ()
-printStrs = printSeq . map (pos *** printString)
-
-printPoints :: SrcSpanInfo -> [String] -> EP ()
-printPoints l = printStrs . zip (srcInfoPoints l)
-
-printInterleaved, printInterleaved' :: (Annotated ast, ExactP ast, SrcInfo loc) => [(loc, String)] -> [ast SrcSpanInfo] -> EP ()
-printInterleaved sistrs asts = printSeq $
-    interleave (map (pos *** printString ) sistrs)
-               (map (pos . ann &&& exactP) asts)
-
-printInterleaved' sistrs (a:asts) = exactPC a >> printInterleaved sistrs asts
-
-printStreams :: [(Pos, EP ())] -> [(Pos, EP ())] -> EP ()
-printStreams [] ys = printSeq ys
-printStreams xs [] = printSeq xs
-printStreams (x@(p1,ep1):xs) (y@(p2,ep2):ys)
-    | p1 <= p2 = printWhitespace p1 >> ep1 >> printStreams xs (y:ys)
-    | otherwise = printWhitespace p2 >> ep2 >> printStreams (x:xs) ys
-
-
-interleave :: [a] -> [a] -> [a]
-interleave [] ys = ys
-interleave xs [] = xs
-interleave (x:xs) (y:ys) = x:y: interleave xs ys
-
-maybeEP :: (a -> EP ()) -> Maybe a -> EP ()
-maybeEP = maybe (return ())
-
-bracketList :: (Annotated ast, ExactP ast) => (String, String, String) -> [SrcSpan] -> [ast SrcSpanInfo] -> EP ()
-bracketList (a,b,c) poss asts = printInterleaved (pList poss (a,b,c)) asts
-
-pList (p:ps) (a,b,c) = (p,a) : pList' ps (b,c)
-pList' [] _ = []
-pList' [p] (_,c) = [(p,c)]
-pList' (p:ps) (b,c) = (p, b) : pList' ps (b,c)
-
-parenList, squareList, curlyList :: (Annotated ast, ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP ()
-parenList = bracketList ("(",",",")")
-squareList = bracketList ("[",",","]")
-curlyList = bracketList ("{",",","}")
-
-layoutList :: (Functor ast, Show (ast ()), Annotated ast, ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP ()
-layoutList poss asts = printStreams 
-        (map (pos *** printString) $ lList poss) 
-        (map (pos . ann &&& exactP) asts)
-
-lList (p:ps) = (if isNullSpan p then (p,"") else (p,"{")) : lList' ps
-lList' [] = []
-lList' [p] = [if isNullSpan p then (p,"") else (p,"}")]
-lList' (p:ps) = (if isNullSpan p then (p,"") else (p,";")) : lList' ps
-
-
---------------------------------------------------
--- Exact printing
-
-class Annotated ast => ExactP ast where
-  exactP :: ast SrcSpanInfo -> EP ()
-
-instance ExactP Literal where
-  exactP lit = case lit of
-    Char       _ _ rw -> printString ('\'':rw ++ "\'")
-    String     _ _ rw -> printString ('\"':rw ++ "\"")
-    Int        _ _ rw -> printString (rw)
-    Frac       _ _ rw -> printString (rw)
-    PrimInt    _ _ rw -> printString (rw ++ "#" )
-    PrimWord   _ _ rw -> printString (rw ++ "##")
-    PrimFloat  _ _ rw -> printString (rw ++ "#" )
-    PrimDouble _ _ rw -> printString (rw ++ "##")
-    PrimChar   _ _ rw -> printString ('\'':rw ++ "\'#" )
-    PrimString _ _ rw -> printString ('\"':rw ++ "\"#" )
-
-instance ExactP ModuleName where
-  exactP (ModuleName l str) = printString str
-
-instance ExactP SpecialCon where
-  exactP sc = case sc of
-    UnitCon l   -> printPoints l ["(",")"]
-    ListCon l   -> printPoints l ["[","]"]
-    FunCon  l   -> printPoints l ["(","->",")"]
-    TupleCon l b n -> printPoints l $
-        case b of
-         Unboxed -> "(#": replicate (n-1) "," ++ ["#)"]
-         _       -> "(" : replicate (n-1) "," ++ [")"]
-    Cons l      -> printString ":"
-    UnboxedSingleCon l -> printPoints l ["(#","#)"]
-
-isSymbol :: Name l -> Bool
-isSymbol (Symbol _ _) = True
-isSymbol _ = False
-
-getName :: QName l -> Name l
-getName (UnQual _ s) = s
-getName (Qual _ _ s) = s
-getName (Special l (Cons _)) = Symbol l ":"
-getName (Special l (FunCon _)) = Symbol l "->"
-getName (Special l s) = Ident l (specialName s)
-
-specialName :: SpecialCon l -> String
-specialName (UnitCon _) = "()"
-specialName (ListCon _) = "[]"
-specialName (FunCon  _) = "->"
-specialName (TupleCon _ b n) = "(" ++ hash ++ replicate (n-1) ',' ++ hash ++ ")"
-    where hash = case b of
-                   Unboxed -> "#"
-                   _       -> ""
-specialName (Cons _) = ":"
-
-instance ExactP QName where
-  exactP qn
-    | isSymbol (getName qn) = do
-        case srcInfoPoints (ann qn) of
-         [a,b,c] -> do
-            printString "("
-            printWhitespace (pos b)
-            epQName qn
-            printStringAt (pos c) ")"
-         _ -> errorEP "ExactP: QName is given wrong number of srcInfoPoints"
-    | otherwise = epQName qn
-
-epQName :: QName SrcSpanInfo -> EP ()
-epQName qn = case qn of
-    Qual    l mn n  -> exactP mn >> printString "." >> epName n
-    UnQual  l    n  -> epName n
-    Special l sc    -> exactP sc
-
-epInfixQName :: QName SrcSpanInfo -> EP ()
-epInfixQName qn
-    | isSymbol (getName qn) = printWhitespace (pos (ann qn)) >> epQName qn
-    | otherwise = do
-        case srcInfoPoints (ann qn) of
-         [a,b,c] -> do
-            printStringAt (pos a) "`"
-            printWhitespace (pos b)
-            epQName qn
-            printStringAt (pos c) "`"
-         _ -> errorEP "ExactP: QName (epInfixName) is given wrong number of srcInfoPoints"
-
-instance ExactP Name where
-  exactP n = case n of
-    Ident  l str    -> printString str
-    Symbol l str    -> do
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString "("
-            printWhitespace (pos b)
-            printString str
-            printStringAt (pos c) ")"
-         _ -> errorEP "ExactP: Name is given wrong number of srcInfoPoints"
-
-epName :: Name SrcSpanInfo -> EP ()
-epName (Ident  _ str) = printString str
-epName (Symbol _ str) = printString str
-
-epInfixName :: Name SrcSpanInfo -> EP ()
-epInfixName n
-    | isSymbol n = printWhitespace (pos (ann n)) >> epName n
-    | otherwise = do
-        case srcInfoPoints (ann n) of
-         [a,b,c] -> do
-            printStringAt (pos a) "`"
-            printWhitespace (pos b)
-            epName n
-            printStringAt (pos c) "`"
-         _ -> errorEP "ExactP: Name (epInfixName) is given wrong number of srcInfoPoints"
-
-instance ExactP IPName where
-  exactP ipn = case ipn of
-    IPDup l str -> printString $ '?':str
-    IPLin l str -> printString $ '%':str
-
-instance ExactP QOp where
-  exactP qop = case qop of
-    QVarOp l qn -> epInfixQName qn
-    QConOp l qn -> epInfixQName qn
-
-instance ExactP Op where
-  exactP op = case op of
-    VarOp l n -> epInfixName n
-    ConOp l n -> epInfixName n
-
-
-
-instance ExactP CName where
-  exactP cn = case cn of
-    VarName l n -> exactP n
-    ConName l n -> exactP n
-
-instance ExactP ExportSpec where
-  exactP espec = case espec of
-     EVar l qn      -> exactP qn
-     EAbs l qn      -> exactP qn
-     EThingAll l qn -> exactP qn >> printPoints l ["(","..",")"]
-     EThingWith l qn cns    ->
-        let k = length (srcInfoPoints l)
-         in exactP qn >> printInterleaved (zip (srcInfoPoints l) $ "(":replicate (k-2) "," ++ [")"]) cns
-     EModuleContents l mn -> printString "module" >> exactPC mn
-
-instance ExactP ExportSpecList where
-  exactP (ExportSpecList l ess) =
-    let k = length (srcInfoPoints l)
-     in printInterleaved (zip (srcInfoPoints l) $ "(": replicate (k-2) "," ++ [")"]) ess
-
-instance ExactP ImportSpecList where
-  exactP (ImportSpecList l hid ispecs) = do
-    let pts = srcInfoPoints l
-    pts <- if hid then do
-             let (x:pts') = pts
-             printStringAt (pos x) "hiding"
-             return pts'
-            else return pts
-    let k = length pts
-    printInterleaved (zip pts $ "(": replicate (k-2) "," ++ [")"]) ispecs
-
-instance ExactP ImportSpec where
-  exactP ispec = case ispec of
-    IVar l n    -> exactP n
-    IAbs l n    -> exactP n
-    IThingAll l n   -> exactP n >> printPoints l ["(","..",")"]
-    IThingWith l n cns    ->
-        let k = length (srcInfoPoints l)
-         in exactP n >> printInterleaved (zip (srcInfoPoints l) $ "(":replicate (k-2) "," ++ [")"]) cns
-
-instance ExactP ImportDecl where
-  exactP (ImportDecl l mn qf src mpkg mas mispecs) = do
-    printString "import"
-    case srcInfoPoints l of
-     (a:pts) -> do
-        pts <- if src then
-                 case pts of
-                  x:y:pts' -> do
-                     printStringAt (pos x) "{-# SOURCE"
-                     printStringAt (pos y) "#-}"
-                     return pts'
-                  _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
-                else return pts
-        pts <- if qf then
-                 case pts of
-                  x:pts' -> do
-                     printStringAt (pos x) "qualified"
-                     return pts'
-                  _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
-                else return pts
-        pts <- case mpkg of
-                Just pkg ->
-                  case pts of
-                   x:pts' -> do
-                      printStringAt (pos x) $ show pkg
-                      return pts'
-                   _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
-                _ -> return pts
-        exactPC mn
-        pts <- case mas of
-                Just as ->
-                 case pts of
-                  x:pts' -> do
-                     printStringAt (pos x) "as"
-                     exactPC as
-                     return pts'
-                  _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
-                _ -> return pts
-        case mispecs of
-         Nothing -> return ()
-         Just ispecs -> exactPC ispecs
-     _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
-
-instance ExactP Module where
-  exactP mdl = case mdl of
-    Module l mmh oss ids decls -> do
-        let (oPts, pts) = splitAt (max (length oss + 1) 2) (srcInfoPoints l)
-        layoutList oPts oss
-        maybeEP exactPC mmh
-        printStreams (map (pos *** printString) $ lList pts)
-                     (map (pos . ann &&& exactPC) ids ++ map (pos . ann &&& exactPC) (sepFunBinds decls))
-    XmlPage l _mn oss xn attrs mat es  -> do
-        let (oPts, pPts) = splitAt (max (length oss + 1) 2) $ srcInfoPoints l
-        case pPts of
-         [a,b,c,d,e] -> do
-            layoutList oPts oss
-            printStringAt (pos a) "<"
-            exactPC xn
-            mapM_ exactPC attrs
-            maybeEP exactPC mat
-            printStringAt (pos b) ">"
-            mapM_ exactPC es
-            printStringAt (pos c) "</"
-            printWhitespace (pos d)
-            exactP xn
-            printStringAt (pos e) ">"
-         _ -> errorEP "ExactP: Module: XmlPage is given wrong number of srcInfoPoints"
-    XmlHybrid l mmh oss ids decls xn attrs mat es -> do
-        let (oPts, pts) = splitAt (max (length oss + 1) 2) (srcInfoPoints l)
-        layoutList oPts oss
-        maybeEP exactPC mmh
-        let (dPts, pPts) = splitAt (length pts - 5) pts
-        case pPts of
-         [a,b,c,d,e] -> do
-            printStreams (map (\(p,s) -> (pos p, printString s)) $ lList dPts)
-                         (map (\i -> (pos $ ann i, exactPC i)) ids ++ map (\d -> (pos $ ann d, exactPC d)) (sepFunBinds decls))
-    
-            printStringAt (pos a) "<"
-            exactPC xn
-            mapM_ exactPC attrs
-            maybeEP exactPC mat
-            printStringAt (pos b) ">"
-            mapM_ exactPC es
-            printStringAt (pos c) "</"
-            printWhitespace (pos d)
-            exactP xn
-            printStringAt (pos e) ">"
-         _ -> errorEP "ExactP: Module: XmlHybrid is given wrong number of srcInfoPoints"
-
-instance ExactP ModuleHead where
-  exactP (ModuleHead l mn mwt mess) = do
-    case srcInfoPoints l of
-     [a,b] -> do
-        printStringAt (pos a) "module"
-        exactPC mn
-        maybeEP exactPC mwt
-        maybeEP exactPC mess
-        printStringAt (pos b) "where"
-     _ -> errorEP "ExactP: ModuleHead is given wrong number of srcInfoPoints"
-
-instance ExactP ModulePragma where
-  exactP op = case op of
-    LanguagePragma   l ns       ->
-        let pts = srcInfoPoints l
-            k = length ns - 1 -- number of commas
-            m = length pts - k - 2 -- number of virtual semis, likely 0
-         in printInterleaved (zip pts ("{-# LANGUAGE":replicate k "," ++ replicate m "" ++ ["#-}"])) ns
-    OptionsPragma    l mt str   ->
-        let k = length (srcInfoPoints l)
-            opstr = "{-# OPTIONS" ++ case mt of { Just t -> "_" ++ show t ; _ -> "" } ++ " " ++ str
-         in printPoints l $ opstr : replicate (k-2) "" ++ ["#-}"]
-    AnnModulePragma  l ann       ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString $ "{-# ANN"
-            exactPC ann
-            printStringAt (pos b) "#-}"
-         _ -> errorEP "ExactP: ModulePragma: AnnPragma is given wrong number of srcInfoPoints"
-
-instance ExactP WarningText where
-    exactP (DeprText l str) = printPoints l ["{-# DEPRECATED", str, "#-}"]
-    exactP (WarnText l str) = printPoints l ["{-# WARNING",    str, "#-}"]
-
-instance ExactP Assoc where
-  exactP a = case a of
-    AssocNone  l -> printString "infix"
-    AssocLeft  l -> printString "infixl"
-    AssocRight l -> printString "infixr"
-
-instance ExactP DataOrNew where
-  exactP (DataType l) = printString "data"
-  exactP (NewType  l) = printString "newtype"
-
-instance ExactP Decl where
-  exactP decl = case decl of
-    TypeDecl     l dh t      ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printStringAt (pos a) "type"
-            exactPC dh
-            printStringAt (pos b) "="
-            exactPC t
-         _ -> errorEP "ExactP: Decl: TypeDecl is given wrong number of srcInfoPoints"
-    TypeFamDecl  l dh mk     ->
-        case srcInfoPoints l of
-         a:b:ps -> do
-            printStringAt (pos a) "type"
-            printStringAt (pos b) "family"
-            exactPC dh
-            maybeEP (\k -> printStringAt (pos (head ps)) "::" >> exactPC k) mk
-         _ -> errorEP "ExactP: Decl: TypeFamDecl is given wrong number of srcInfoPoints"
-    DataDecl     l dn mctxt dh constrs mder -> do
-        exactP dn
-        maybeEP exactPC mctxt
-        exactPC dh
-        -- the next line works for empty data types since the srcInfoPoints will be empty then
-        printInterleaved (zip (srcInfoPoints l) ("=": repeat "|")) constrs
-        maybeEP exactPC mder
-    GDataDecl    l dn mctxt dh mk gds mder -> do
-        let pts = srcInfoPoints l
-        exactP dn
-        maybeEP exactPC mctxt
-        exactPC dh
-        pts <- case mk of
-                Nothing -> return pts
-                Just kd -> case pts of 
-                            p:pts' -> do
-                               printStringAt (pos p) "::"
-                               exactPC kd
-                               return pts'
-                            _ -> errorEP "ExactP: Decl: GDataDecl is given too few srcInfoPoints"
-        case pts of
-         x:pts -> do
-            printStringAt (pos x) "where"
-            layoutList pts gds
-            maybeEP exactPC mder
-         _ -> errorEP "ExactP: Decl: GDataDecl is given too few srcInfoPoints"
-    DataFamDecl  l mctxt dh mk -> do
-        printString "data"
-        maybeEP exactPC mctxt
-        exactPC dh
-        maybeEP (\kd -> printStringAt (pos (head (srcInfoPoints l))) "::" >> exactPC kd) mk
-    TypeInsDecl  l t1 t2 ->
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString "type"
-            printStringAt (pos b) "instance"
-            exactPC t1
-            printStringAt (pos c) "="
-            exactPC t2
-         _ -> errorEP "ExactP: Decl: TypeInsDecl is given wrong number of srcInfoPoints"
-    DataInsDecl  l dn t constrs mder    ->
-        case srcInfoPoints l of
-         p:pts -> do
-            exactP dn
-            printStringAt (pos p) "instance"
-            exactPC t
-            printInterleaved (zip pts ("=": repeat "|")) constrs
-            maybeEP exactPC mder
-         _ -> errorEP "ExactP: Decl: DataInsDecl is given too few srcInfoPoints"
-    GDataInsDecl l dn t mk gds mder     ->
-        case srcInfoPoints l of
-         p:pts -> do
-            exactP dn
-            printStringAt (pos p) "instance"
-            exactPC t
-            pts <- case mk of
-                    Nothing -> return pts
-                    Just kd -> case pts of
-                                p:pts' -> do
-                                    printStringAt (pos p) "::"
-                                    exactPC kd
-                                    return pts'
-                                _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints"
-            case pts of
-             x:pts -> do
-                printStringAt (pos x) "where"
-                layoutList pts gds
-                maybeEP exactPC mder
-             _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints" 
-         _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints"
-    ClassDecl    l mctxt dh fds mcds    ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "class"
-            maybeEP exactPC mctxt
-            exactPC dh
-            pts <- case fds of
-                    [] -> return pts
-                    _  -> do
-                      let (pts1, pts2) = splitAt (length fds) pts
-                      printInterleaved (zip pts1 ("|":repeat ",")) fds
-                      return pts2
-            maybeEP (\cds ->
-                case pts of
-                 p:pts' -> do
-                    printStringAt (pos p) "where"
-                    layoutList pts' $ sepClassFunBinds cds
-                 _ -> errorEP "ExactP: Decl: ClassDecl is given too few srcInfoPoints"
-                ) mcds                
-         _ -> errorEP "ExactP: Decl: ClassDecl is given too few srcInfoPoints"
-    InstDecl     l mctxt ih mids        ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "instance"
-            maybeEP exactPC mctxt
-            exactPC ih
-            maybeEP (\ids -> do
-                let (p:pts') = pts
-                printStringAt (pos p) "where"
-                layoutList pts' $ sepInstFunBinds ids
-                ) mids
-         _ -> errorEP "ExactP: Decl: InstDecl is given too few srcInfoPoints"
-    DerivDecl    l mctxt ih             ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "deriving"
-            printStringAt (pos b) "instance"
-            maybeEP exactPC mctxt
-            exactPC ih
-         _ -> errorEP "ExactP: Decl: DerivDecl is given wrong number of srcInfoPoints"
-    InfixDecl    l assoc mprec ops      -> do
-        let pts = srcInfoPoints l
-        exactP assoc
-        pts <- case mprec of
-                Nothing -> return pts
-                Just prec ->
-                    case pts of
-                     p:pts' -> do
-                        printStringAt (pos p) (show prec)
-                        return pts'
-                     _ -> errorEP "ExactP: Decl: InfixDecl is given too few srcInfoPoints"
-        printInterleaved' (zip pts (repeat ",")) ops
-    DefaultDecl  l ts   ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "default"
-            printInterleaved (zip (init pts) ("(":repeat ",")) ts
-            printStringAt (pos (last pts)) ")"
-         _ -> errorEP "ExactP: Decl: DefaultDecl is given too few srcInfoPoints"
-    SpliceDecl   l spl  -> exactP spl
-    TypeSig      l ns t -> do
-        let pts = srcInfoPoints l
-        printInterleaved' (zip pts (replicate (length pts - 1) "," ++ ["::"])) ns
-        exactPC t
-    FunBind      l ms   -> mapM_ exactPC ms
-    PatBind      l p mt rhs mbs -> do
-        let pts = srcInfoPoints l
-        exactP p
-        pts <- case mt of
-                Nothing -> return pts
-                Just t  -> case pts of
-                            x:pts'-> do
-                                printStringAt (pos x) "::"
-                                exactPC t
-                                return pts'
-                            _ -> errorEP "ExactP: Decl: PatBind is given too few srcInfoPoints"
-        exactPC rhs
-        maybeEP (\bs -> printStringAt (pos (head pts)) "where" >> exactPC bs) mbs
-    ForImp       l cc msf mstr n t   ->
-        case srcInfoPoints l of
-         a:b:pts -> do
-            printString "foreign"
-            printStringAt (pos b) "import"
-            exactPC cc
-            maybeEP exactPC msf
-            pts <- case mstr of
-                      Nothing -> return pts
-                      Just str -> case pts of 
-                                   x:pts' -> do
-                                      printStringAt (pos x) (show str)
-                                      return pts'
-                                   _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints"
-            case pts of
-             y:_ -> do
-                exactPC n
-                printStringAt (pos y) "::"
-                exactPC t
-             _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints"
-         _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints"
-    ForExp       l cc mstr n t      ->
-        case srcInfoPoints l of
-         a:b:pts -> do
-            printString "foreign"
-            printStringAt (pos b) "export"
-            exactPC cc
-            pts <- case mstr of
-                      Nothing -> return pts
-                      Just str -> case pts of
-                                   x:pts' -> do
-                                      printStringAt (pos x) (show str)
-                                      return pts'
-                                   _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints"
-            case pts of
-             y:_ -> do
-                exactPC n
-                printStringAt (pos y) "::"
-                exactPC t
-             _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints"
-         _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints"
-    RulePragmaDecl   l rs   ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "{-# RULES"
-            mapM_ exactPC rs
-            printStringAt (pos b) "#-}"
-         _ -> errorEP "ExactP: Decl: RulePragmaDecl is given too few srcInfoPoints"
-    DeprPragmaDecl   l nstrs ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "{-# DEPRECATED"
-            printWarndeprs (map pos (init pts)) nstrs
-            printStringAt (pos (last pts)) "#-}"
-         _ -> errorEP "ExactP: Decl: DeprPragmaDecl is given too few srcInfoPoints"
-    WarnPragmaDecl   l nstrs ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "{-# WARNING"
-            printWarndeprs (map pos (init pts)) nstrs
-            printStringAt (pos (last pts)) "#-}"
-         _ -> errorEP "ExactP: Decl: WarnPragmaDecl is given too few srcInfoPoints"
-    InlineSig        l inl mact qn    ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString $ if inl then "{-# INLINE" else "{-# NOINLINE"
-            maybeEP exactPC mact
-            exactPC qn
-            printStringAt (pos b) "#-}"
-         _ -> errorEP "ExactP: Decl: InlineSig is given wrong number of srcInfoPoints"
-    InlineConlikeSig l mact qn    ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "{-# INLINE_CONLIKE"
-            maybeEP exactPC mact
-            exactPC qn
-            printStringAt (pos b) "#-}"
-         _ -> errorEP "ExactP: Decl: InlineConlikeSig is given wrong number of srcInfoPoints"
-    SpecSig          l qn ts        ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "{-# SPECIALISE"
-            exactPC qn
-            printInterleaved (zip pts ("::" : repeat "," ++ ["#-}"])) ts
-         _ -> errorEP "ExactP: Decl: SpecSig is given too few srcInfoPoints"
-    SpecInlineSig    l b mact qn ts ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString $ "{-# SPECIALISE " ++ if b then "INLINE" else "NOINLINE"
-            maybeEP exactPC mact
-            exactPC qn
-            printInterleaved (zip pts ("::" : repeat "," ++ ["#-}"])) ts
-         _ -> errorEP "ExactP: Decl: SpecInlineSig is given too few srcInfoPoints"
-    InstSig          l mctxt ih     ->
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString $ "{-# SPECIALISE"
-            printStringAt (pos b) "instance"
-            maybeEP exactPC mctxt
-            exactPC ih
-            printStringAt (pos c) "#-}"
-         _ -> errorEP "ExactP: Decl: InstSig is given wrong number of srcInfoPoints"
-    AnnPragma       l ann       ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString $ "{-# ANN"
-            exactPC ann
-            printStringAt (pos b) "#-}"
-         _ -> errorEP "ExactP: Decl: AnnPragma is given wrong number of srcInfoPoints"
-
-
-instance ExactP Annotation where
-    exactP ann = case ann of
-        Ann     l n e   -> do
-            exactP n
-            exactPC e
-        TypeAnn l n e   -> do
-            printString "type"
-            exactPC n
-            exactPC e
-        ModuleAnn l e   -> do
-            printString "module"
-            exactPC e
-
-printWarndeprs :: [Pos] -> [([Name SrcSpanInfo], String)] -> EP ()
-printWarndeprs _ [] = return ()
-printWarndeprs ps ((ns,str):nsts) = printWd ps ns str nsts
-  where printWd :: [Pos] -> [Name SrcSpanInfo] -> String -> [([Name SrcSpanInfo], String)] -> EP ()
-        printWd (p:ps) []  str nsts = printStringAt p (show str) >> printWarndeprs ps nsts
-        printWd ps     [n] str nsts = exactPC n >> printWd ps [] str nsts
-        printWd (p:ps) (n:ns) str nsts = exactPC n >> printStringAt p "," >> printWd ps ns str nsts
-
-
-sepFunBinds :: [Decl SrcSpanInfo] -> [Decl SrcSpanInfo]
-sepFunBinds [] = []
-sepFunBinds (FunBind _ ms:ds) = map (\m -> FunBind (ann m) [m]) ms ++ sepFunBinds ds
-sepFunBinds (d:ds) = d : sepFunBinds ds
-
-sepClassFunBinds :: [ClassDecl SrcSpanInfo] -> [ClassDecl SrcSpanInfo]
-sepClassFunBinds [] = []
-sepClassFunBinds (ClsDecl _ (FunBind _ ms):ds) = map (\m -> ClsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepClassFunBinds ds
-sepClassFunBinds (d:ds) = d : sepClassFunBinds ds
-
-sepInstFunBinds :: [InstDecl SrcSpanInfo] -> [InstDecl SrcSpanInfo]
-sepInstFunBinds [] = []
-sepInstFunBinds (InsDecl _ (FunBind _ ms):ds) = map (\m -> InsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepInstFunBinds ds
-sepInstFunBinds (d:ds) = d : sepInstFunBinds ds
-
-instance ExactP DeclHead where
-  exactP dh = case dh of
-    DHead l n tvs       -> exactP n >> mapM_ exactPC tvs
-    DHInfix l tva n tvb -> exactP tva >> epInfixName n >> exactPC tvb
-    DHParen l dh        ->
-        case srcInfoPoints l of
-         [_,b] -> printString "(" >> exactPC dh >> printStringAt (pos b) ")"
-         _ -> errorEP "ExactP: DeclHead: DeclParen is given wrong number of srcInfoPoints"
-
-instance ExactP InstHead where
-  exactP ih = case ih of
-    IHead l qn ts       -> exactP qn >> mapM_ exactPC ts
-    IHInfix l ta qn tb  -> exactP ta >> epInfixQName qn >> exactPC tb
-    IHParen l ih        ->
-        case srcInfoPoints l of
-         [_,b] -> printString "(" >> exactPC ih >> printStringAt (pos b) ")"
-         _ -> errorEP "ExactP: InstHead: IHParen is given wrong number of srcInfoPoints"
-
-instance ExactP TyVarBind where
-  exactP (KindedVar   l n k) =
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString "("
-            exactPC n
-            printStringAt (pos b) "::"
-            exactPC k
-            printStringAt (pos c) ")"
-         _ -> errorEP "ExactP: TyVarBind: KindedVar is given wrong number of srcInfoPoints"
-  exactP (UnkindedVar l n) = exactP n
-
-instance ExactP Kind where
-  exactP kd = case kd of
-    KindStar  l     -> printString "*"
-    KindBang  l     -> printString "!"
-    KindFn    l k1 k2 ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP k1
-            printStringAt (pos a) "->"
-            exactPC k2
-         _ -> errorEP "ExactP: Kind: KindFn is given wrong number of srcInfoPoints"
-    KindParen l kd  -> do
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "("
-            exactPC kd
-            printStringAt (pos b) ")"
-         _ -> errorEP "ExactP: Kind: KindParen is given wrong number of srcInfoPoints"
-    KindVar l n     -> exactP n       
-
-instance ExactP Type where
-  exactP t = case t of
-    TyForall l mtvs mctxt t -> do
-        let pts = srcInfoPoints l
-        pts <- case mtvs of
-                Nothing -> return pts
-                Just tvs ->
-                    case pts of
-                     a:b:pts' -> do
-                        printString "forall"
-                        mapM_ exactPC tvs
-                        printStringAt (pos b) "."
-                        return pts'
-                     _ -> errorEP "ExactP: Type: TyForall is given too few srcInfoPoints"
-        maybeEP exactPC mctxt
-        exactPC t
-    TyFun   l t1 t2 -> do
-        case srcInfoPoints l of
-         [a] -> do
-            exactP t1
-            printStringAt (pos a) "->"
-            exactPC t2
-         _ -> errorEP "ExactP: Type: TyFun is given wrong number of srcInfoPoints"
-    TyTuple l bx ts -> do
-        let pts = srcInfoPoints l
-            (o,e) = case bx of
-                     Boxed   -> ("(" , ")")
-                     Unboxed -> ("(#","#)")
-        printInterleaved (zip pts (o: replicate (length pts - 2) "," ++ [e])) ts
-    TyList  l t     -> do
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "["
-            exactPC t
-            printStringAt (pos b) "]"
-         _ -> errorEP "ExactP: Type: TyList is given wrong number of srcInfoPoints"
-    TyApp   l t1 t2 -> exactP t1 >> exactPC t2
-    TyVar   l n     -> exactP n
-    TyCon   l qn    -> exactP qn
-    TyParen l t     -> do
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "("
-            exactPC t
-            printStringAt (pos b) ")"
-         _ -> errorEP "ExactP: Type: TyParen is given wrong number of srcInfoPoints"
-    TyInfix l t1 qn t2 -> exactP t1 >> epInfixQName qn >> exactPC t2
-    TyKind  l t kd -> do
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString "("
-            exactPC t
-            printStringAt (pos b) "::"
-            exactPC kd
-            printStringAt (pos c) ")"
-         _ -> errorEP "ExactP: Type: TyKind is given wrong number of srcInfoPoints"
-
-instance ExactP Context where
-  exactP ctxt = do
-    printContext ctxt
-    printStringAt (pos . last . srcInfoPoints . ann $ ctxt) "=>"
-
-printContext ctxt = do
-    let l = ann ctxt
-        pts = init $ srcInfoPoints l
-    case ctxt of
-     CxParen l ctxt ->
-        case pts of
-         [a,b] -> do
-            printStringAt (pos a) "("
-            printContext ctxt
-            printStringAt (pos b) ")"
-         _ -> errorEP "ExactP: Context: CxParen is given wrong number of srcInfoPoints"
-     CxSingle l asst -> exactP asst
-     CxEmpty l ->
-        case pts of
-         [a,b] -> do
-            printStringAt (pos a) "("
-            printStringAt (pos b) ")"
-         _ -> errorEP "ExactP: Context: CxEmpty is given wrong number of srcInfoPoints"
-     CxTuple l assts -> parenList pts assts
-
-
-instance ExactP Asst where
-  exactP asst = case asst of
-    ClassA l qn ts -> exactP qn >> mapM_ exactPC ts
-    InfixA l ta qn tb -> exactP ta >> epInfixQName qn >> exactPC tb
-    IParam l ipn t    ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP ipn
-            printStringAt (pos a) "::"
-            exactPC t
-         _ -> errorEP "ExactP: Asst: IParam is given wrong number of srcInfoPoints"
-    EqualP l t1 t2  ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP t1
-            printStringAt (pos a) "~"
-            exactPC t2
-
-instance ExactP Deriving where
-  exactP (Deriving l ihs) =
-    case srcInfoPoints l of
-     x:pts -> do
-        printString "deriving"
-        case pts of
-         [] -> exactPC $ head ihs
-         _  -> parenList pts ihs
-     _ -> errorEP "ExactP: Deriving is given too few srcInfoPoints"
-
-instance ExactP ClassDecl where
-  exactP cdecl = case cdecl of
-    ClsDecl    l d -> exactP d
-    ClsDataFam l mctxt dh mk ->
-        case srcInfoPoints l of
-         x:pts -> do
-            printString "data"
-            maybeEP exactPC mctxt
-            exactPC dh
-            maybeEP (\kd -> printStringAt (pos (head pts)) "::" >> exactPC kd) mk
-         _ -> errorEP "ExactP: ClassDecl: ClsDataFam is given too few srcInfoPoints"
-    ClsTyFam   l dh mk  ->
-        case srcInfoPoints l of
-         x:pts -> do
-            printString "type"
-            exactPC dh
-            maybeEP (\kd -> printStringAt (pos (head pts)) "::" >> exactPC kd) mk
-         _ -> errorEP "ExactP: ClassDecl: ClsTyFam is given too few srcInfoPoints"
-    ClsTyDef   l t1 t2  ->
-        case srcInfoPoints l of
-         a:b:pts -> do
-            printString "type"
-            exactPC t1
-            printStringAt (pos b) "="
-            exactPC t2
-         _ -> errorEP "ExactP: ClassDecl: ClsTyDef is given too few srcInfoPoints"
-
-instance ExactP InstDecl where
-  exactP idecl = case idecl of
-    InsDecl   l d -> exactP d
-    InsType   l t1 t2 ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "type"
-            exactPC t1
-            printStringAt (pos b) "="
-            exactPC t2
-    InsData   l dn t constrs mder -> do
-        exactP dn
-        exactPC t
-        printInterleaved (zip (srcInfoPoints l) ("=": repeat "|")) constrs
-        maybeEP exactPC mder
-    InsGData  l dn t mk gds mder  -> do
-        let pts = srcInfoPoints l
-        exactP dn
-        exactPC t
-        pts <- case mk of
-                Nothing -> return pts
-                Just kd -> case pts of
-                            p:pts' -> do
-                                printStringAt (pos p) "::"
-                                exactPC kd
-                                return pts'
-                            _ -> errorEP "ExactP: InstDecl: InsGData is given too few srcInfoPoints"
-        case pts of
-         x:_ -> do
-            printStringAt (pos x) "where"
-            mapM_ exactPC gds
-            maybeEP exactPC mder
-         _ -> errorEP "ExactP: InstDecl: InsGData is given too few srcInfoPoints"
---  InsInline l inl mact qn   -> do
---        case srcInfoPoints l of
---         [a,b] -> do
---            printString $ if inl then "{-# INLINE" else "{-# NOINLINE"
---            maybeEP exactPC mact
---            exactPC qn
---            printStringAt (pos b) "#-}" 
---         _ -> errorEP "ExactP: InstDecl: InsInline is given wrong number of srcInfoPoints"
-
-instance ExactP FunDep where
-  exactP (FunDep l nxs nys) =
-    case srcInfoPoints l of
-     [a] -> do
-        mapM_ exactPC nxs
-        printStringAt (pos a) "->"
-        mapM_ exactPC nys
-     _ -> errorEP "ExactP: FunDep is given wrong number of srcInfoPoints"
-
-instance ExactP QualConDecl where
-  exactP (QualConDecl l mtvs mctxt cd) = do
-        let pts = srcInfoPoints l
-        pts <- case mtvs of
-                Nothing -> return pts
-                Just tvs ->
-                    case pts of
-                     a:b:pts' -> do
-                        printString "forall"
-                        mapM_ exactPC tvs
-                        printStringAt (pos b) "."
-                        return pts'
-                     _ -> errorEP "ExactP: QualConDecl is given wrong number of srcInfoPoints"
-        maybeEP exactPC mctxt
-        exactPC cd
-
-instance ExactP ConDecl where
-  exactP cd = case cd of
-    ConDecl l n bts -> exactP n >> mapM_ exactPC bts
-    InfixConDecl l bta n btb -> exactP bta >> epInfixName n >> exactP btb
-    RecDecl l n fds -> exactP n >> curlyList (srcInfoPoints l) fds
-
-instance ExactP GadtDecl where
-  exactP (GadtDecl l n t) =
-    case srcInfoPoints l of
-     [a] -> do
-        exactP n
-        printStringAt (pos a) "::"
-        exactPC t
-     _ -> errorEP "ExactP: GadtDecl is given wrong number of srcInfoPoints"
-
-instance ExactP BangType where
-  exactP bt = case bt of
-    UnBangedTy l t  -> exactP t
-    BangedTy   l t  -> printString "!" >> exactPC t
-    UnpackedTy l t  ->
-      case srcInfoPoints l of
-       [a,b,c] -> do
-          printString "{-# UNPACK"
-          printStringAt (pos b) "#-}"
-          printStringAt (pos c) "!"
-          exactPC t
-       _ -> errorEP "ExactP: BangType: UnpackedTy is given wrong number of srcInfoPoints"
-
-instance ExactP Splice where
-  exactP (IdSplice l str) = printString $ '$':str
-  exactP (ParenSplice l e) =
-    case srcInfoPoints l of
-     [a,b] -> do
-        printString "$("
-        exactPC e
-        printStringAt (pos b) ")"
-     _ -> errorEP "ExactP: Splice: ParenSplice is given wrong number of srcInfoPoints"
-
-instance ExactP Exp where
-  exactP exp = case exp of
-    Var l qn        -> exactP qn
-    IPVar l ipn     -> exactP ipn
-    Con l qn        -> exactP qn
-    Lit l lit       -> exactP lit
-    InfixApp l e1 op e2 -> exactP e1 >> exactPC op >> exactPC e2
-    App l e1 e2     -> exactP e1 >> exactPC e2
-    NegApp l e      -> printString "-" >> exactPC e
-    Lambda l ps e   ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "\\"
-            mapM_ exactPC ps
-            printStringAt (pos b) "->"
-            exactPC e
-         _ -> errorEP "ExactP: Exp: Lambda is given wrong number of srcInfoPoints"
-    Let l bs e      ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "let"
-            exactPC bs
-            printStringAt (pos b) "in"
-            exactPC e
-         _ -> errorEP "ExactP: Exp: Let is given wrong number of srcInfoPoints"
-    If l ec et ee   ->
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString "if"
-            exactPC ec
-            printStringAt (pos b) "then"
-            exactPC et
-            printStringAt (pos c) "else"
-            exactPC ee
-         _ -> errorEP "ExactP: Exp: If is given wrong number of srcInfoPoints"
-    Case l e alts   ->
-        case srcInfoPoints l of
-         a:b:pts -> do
-            printString "case"
-            exactPC e
-            printStringAt (pos b) "of"
-            layoutList pts alts
-         _ -> errorEP "ExactP: Exp: Case is given too few srcInfoPoints"
-    Do l stmts      ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "do"
-            layoutList pts stmts
-         _ -> errorEP "ExactP: Exp: Do is given too few srcInfoPoints"
-    MDo l stmts     ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "mdo"
-            layoutList pts stmts
-         _ -> errorEP "ExactP: Exp: Mdo is given wrong number of srcInfoPoints"
-    Tuple l es      -> parenList (srcInfoPoints l) es
-    TupleSection l mexps    -> do
-        let pts = srcInfoPoints l
-        printSeq $ interleave (zip (map pos $ init pts) (map printString ("(": repeat ",")) ++ [(pos $ last pts, printString ")")])
-                              (map (maybe (0,0) (pos . ann) &&& maybeEP exactPC) mexps)
-    List l es               -> squareList (srcInfoPoints l) es
-    Paren l p               -> parenList (srcInfoPoints l) [p]
-    LeftSection l e qop     ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "("
-            exactPC e
-            exactPC qop
-            printStringAt (pos b) ")"
-         _ -> errorEP "ExactP: Exp: LeftSection is given wrong number of srcInfoPoints"
-    RightSection l qop e    ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "("
-            exactPC qop
-            exactPC e
-            printStringAt (pos b) ")"
-         _ -> errorEP "ExactP: Exp: RightSection is given wrong number of srcInfoPoints"
-    RecConstr l qn fups     -> do
-        let pts = srcInfoPoints l
-        exactP qn
-        curlyList pts fups
-    RecUpdate l e fups      -> do
-        let pts = srcInfoPoints l
-        exactP e
-        curlyList pts fups
-    EnumFrom l e            ->
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString "["
-            exactPC e
-            printStringAt (pos b) ".."
-            printStringAt (pos c) "]"
-         _ -> errorEP "ExactP: Exp: EnumFrom is given wrong number of srcInfoPoints"
-    EnumFromTo l e1 e2      ->
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString "["
-            exactPC e1
-            printStringAt (pos b) ".."
-            exactPC e2
-            printStringAt (pos c) "]"
-         _ -> errorEP "ExactP: Exp: EnumFromTo is given wrong number of srcInfoPoints"
-    EnumFromThen l e1 e2    ->
-        case srcInfoPoints l of
-         [a,b,c,d] -> do
-            printString "["
-            exactPC e1
-            printStringAt (pos b) ","
-            exactPC e2
-            printStringAt (pos c) ".."
-            printStringAt (pos d) "]"
-         _ -> errorEP "ExactP: Exp: EnumFromThen is given wrong number of srcInfoPoints"
-    EnumFromThenTo l e1 e2 e3   ->
-        case srcInfoPoints l of
-         [a,b,c,d] -> do
-            printString "["
-            exactPC e1
-            printStringAt (pos b) ","
-            exactPC e2
-            printStringAt (pos c) ".."
-            exactPC e3
-            printStringAt (pos d) "]"
-         _ -> errorEP "ExactP: Exp: EnumFromToThen is given wrong number of srcInfoPoints"
-    ListComp l e qss            ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "["
-            exactPC e
-            bracketList ("|",",","]") pts qss
-         _ -> errorEP "ExactP: Exp: ListComp is given too few srcInfoPoints"
-    ParComp  l e qsss           ->
-        case srcInfoPoints l of
-         a:pts -> do
-            let (strs, qss) = unzip $ pairUp qsss
-            printString "["
-            exactPC e
-            printInterleaved (zip pts (strs ++ ["]"])) qss
-         _ -> errorEP "ExactP: Exp: ParComp is given wrong number of srcInfoPoints"
-      where pairUp [] = []
-            pairUp ((a:as):xs) = ("|", a) : zip (repeat ",") as ++ pairUp xs
-
-    ExpTypeSig l e t    ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP e
-            printStringAt (pos a) "::"
-            exactPC t
-         _ -> errorEP "ExactP: Exp: ExpTypeSig is given wrong number of srcInfoPoints"
-    VarQuote l qn   -> do
-      printString "'"
-      exactPC qn
-    TypQuote l qn -> do
-      printString "''"
-      exactPC qn
-    BracketExp l br -> exactP br
-    SpliceExp l sp  -> exactP sp
-    QuasiQuote l name qt    -> do
-        let qtLines = lines qt
-        printString $ "[$" ++ name ++ "|"
-        sequence_ (intersperse newLine $ map printString qtLines)
-        printString "|]"
-    XTag l xn attrs mat es  ->
-        case srcInfoPoints l of
-         [a,b,c,d,e] -> do
-            printString "<"
-            exactPC xn
-            mapM_ exactPC attrs
-            maybeEP exactPC mat
-            printStringAt (pos b) ">"
-            mapM_ exactPC es
-            printStringAt (pos c) "</"
-            printWhitespace (pos d)
-            exactP xn
-            printStringAt (pos e) ">"
-         _ -> errorEP "ExactP: Exp: XTag is given wrong number of srcInfoPoints"
-    XETag l xn attrs mat    ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "<"
-            exactPC xn
-            mapM_ exactPC attrs
-            maybeEP exactPC mat
-            printStringAt (pos b) "/>"
-         _ -> errorEP "ExactP: Exp: XETag is given wrong number of srcInfoPoints"
-    XPcdata l str   -> do
-        let strLines = lines str
-        sequence_ (intersperse newLine $ map printString strLines)
-    XExpTag l e     ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "<%"
-            exactPC e
-            printString "%>"
-         _ -> errorEP "ExactP: Exp: XExpTag is given wrong number of srcInfoPoints"
-
-    CorePragma l      str e         ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString $ "{-# CORE " ++ show str
-            printStringAt (pos b) "#-}"
-            exactPC e
-         _ -> errorEP "ExactP: Exp: CorePragma is given wrong number of srcInfoPoints"
-    SCCPragma  l      str e         ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString $ "{-# SCC " ++ show str
-            printStringAt (pos b) "#-}"
-            exactPC e
-         _ -> errorEP "ExactP: Exp: SCCPragma is given wrong number of srcInfoPoints"
-    GenPragma  l      str (i1,i2) (i3,i4) e -> do
-        printStrs $ zip (srcInfoPoints l) ["{-# GENERATED", show str, show i1, ":", show i2, "-", show i3, ":", show i4, "#-}"]
-        exactPC e
-    Proc            l p e   ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "proc"
-            exactPC p
-            printStringAt (pos b) "->"
-            exactPC e
-         _ -> errorEP "ExactP: Exp: Proc is given wrong number of srcInfoPoints"
-    LeftArrApp      l e1 e2 ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP e1
-            printStringAt (pos a) "-<"
-            exactPC e2
-         _ -> errorEP "ExactP: Exp: LeftArrApp is given wrong number of srcInfoPoints"
-    RightArrApp     l e1 e2 -> do
-        case srcInfoPoints l of
-         [a] -> do
-            exactP e1
-            printStringAt (pos a) ">-"
-            exactPC e2
-         _ -> errorEP "ExactP: Exp: RightArrApp is given wrong number of srcInfoPoints"
-    LeftArrHighApp  l e1 e2 -> do
-        case srcInfoPoints l of
-         [a] -> do
-            exactP e1
-            printStringAt (pos a) "-<<"
-            exactPC e2
-         _ -> errorEP "ExactP: Exp: LeftArrHighApp is given wrong number of srcInfoPoints"
-    RightArrHighApp l e1 e2 -> do
-        case srcInfoPoints l of
-         [a] -> do
-            exactP e1
-            printStringAt (pos a) ">>-"
-            exactPC e2
-         _ -> errorEP "ExactP: Exp: RightArrHighApp is given wrong number of srcInfoPoints"
-
-instance ExactP FieldUpdate where
-  exactP fup = case fup of
-    FieldUpdate l qn e  -> do
-      case srcInfoPoints l of
-       [a] -> do
-          exactP qn
-          printStringAt (pos a) "="
-          exactPC e
-       _ -> errorEP "ExactP: FieldUpdate is given wrong number of srcInfoPoints"
-    FieldPun l n    -> exactP n
-    FieldWildcard l -> printString ".."
-
-instance ExactP Stmt where
-  exactP stmt = case stmt of
-    Generator l p e ->
-      case srcInfoPoints l of
-       [a] -> do
-          exactP p
-          printStringAt (pos a) "<-"
-          exactPC e
-       _ -> errorEP "ExactP: Stmt: Generator is given wrong number of srcInfoPoints"
-    Qualifier l e -> exactP e
-    LetStmt l bds   -> do
-      printString "let"
-      exactPC bds
-    RecStmt l ss    ->
-      case srcInfoPoints l of
-       a:pts -> do
-          printString "rec"
-          layoutList pts ss
-       _ -> errorEP "ExactP: Stmt: RecStmt is given too few srcInfoPoints"
-
-instance ExactP QualStmt where
-  exactP qstmt = case qstmt of
-    QualStmt     l stmt -> exactP stmt
-    ThenTrans    l e    -> printString "then" >> exactPC e
-    ThenBy       l e1 e2    -> do
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "then"
-            exactPC e1
-            printStringAt (pos b) "by"
-            exactPC e2
-         _ -> errorEP "ExactP: QualStmt: ThenBy is given wrong number of srcInfoPoints"
-    GroupBy      l e        -> do
-        printStrs $ zip (srcInfoPoints l) ["then","group","by"]
-        exactPC e
-    GroupUsing   l e        -> do
-        printStrs $ zip (srcInfoPoints l) ["then","group","using"]
-        exactPC e
-    GroupByUsing l e1 e2    -> do
-        let pts = srcInfoPoints l
-        printStrs $ zip (init pts) ["then","group","by"]
-        exactPC e1
-        printStringAt (pos (last pts)) "using"
-        exactPC e2
-
-instance ExactP Bracket where
-  exactP br = case br of
-    ExpBracket l e  ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "[|"
-            exactPC e
-            printStringAt (pos b) "|]"
-         _ -> errorEP "ExactP: Bracket: ExpBracket is given wrong number of srcInfoPoints"
-    PatBracket l p  ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "[p|"
-            exactPC p
-            printStringAt (pos b) "|]"
-         _ -> errorEP "ExactP: Bracket: PatBracket is given wrong number of srcInfoPoints"
-    TypeBracket l t  -> do
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "[t|"
-            exactPC t
-            printStringAt (pos b) "|]"
-         _ -> errorEP "ExactP: Bracket: TypeBracket is given wrong number of srcInfoPoints"
-    DeclBracket l ds ->
-        case srcInfoPoints l of
-         a:pts -> do
-            printString "[d|"
-            layoutList (init pts) (sepFunBinds ds)
-            printStringAt (pos (last pts)) "|]"
-         _ -> errorEP "ExactP: Bracket: DeclBracket is given too few srcInfoPoints"
-
-instance ExactP XAttr where
-  exactP (XAttr l xn e) =
-    case srcInfoPoints l of
-     [a] -> do
-        exactP xn
-        printStringAt (pos a) "="
-        exactPC e
-     _ -> errorEP "ExactP: XAttr is given wrong number of srcInfoPoints"
-
-instance ExactP Alt where
-  exactP (Alt l p galts mbs) = do
-    exactP p
-    exactPC galts
-    maybeEP (\bs -> printStringAt (pos (head (srcInfoPoints l))) "where" >> exactPC bs) mbs
-
-instance ExactP GuardedAlts where
-  exactP (UnGuardedAlt l e) = printString "->" >> exactPC e
-  exactP (GuardedAlts  l galts) = mapM_ exactPC galts
-
-instance ExactP GuardedAlt where
-  exactP (GuardedAlt l stmts e) = do
-    bracketList ("|",",","->") (srcInfoPoints l) stmts
-    exactPC e
-
-instance ExactP Match where
-  exactP (Match l n ps rhs mbinds) = do
-    let pts = srcInfoPoints l
-        len = length pts
-        pars = len `div` 2
-        (oPars,cParsWh) = splitAt pars pts
-        (cPars,whPt) = splitAt pars cParsWh    -- whPt is either singleton or empty
-    printStrs (zip oPars (repeat "("))
-    exactPC n
-    printStreams (zip (map pos cPars) (repeat $ printString ")")) (map (pos . ann &&& exactPC) ps) 
-    exactPC rhs
-    maybeEP (\bds -> printStringAt (pos (head pts)) "where" >> exactPC bds) mbinds
-  exactP (InfixMatch l a n bs rhs mbinds) = do
-    let pts = srcInfoPoints l
-        len = length pts
-        pars = len `div` 2
-        (oPars,cParsWh) = splitAt pars pts
-        (cPars,whPt) = splitAt pars cParsWh    -- whPt is either singleton or empty
-    printStrs (zip oPars (repeat "("))
-    exactPC a
-    epInfixName n
-    printInterleaved' (zip cPars (repeat ")")) bs
-    exactPC rhs
-    maybeEP (\bds -> printStringAt (pos (head whPt)) "where" >> exactPC bds) mbinds
-
-instance ExactP Rhs where
-  exactP (UnGuardedRhs l e) = printString "=" >> exactPC e
-  exactP (GuardedRhss  l grhss) = mapM_ exactPC grhss
-
-instance ExactP GuardedRhs where
-  exactP (GuardedRhs l ss e) =
-    case srcInfoPoints l of
-     a:pts -> do
-        printString "|"
-        printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "=")]) ss
-        exactPC e
-     _ -> errorEP "ExactP: GuardedRhs is given wrong number of srcInfoPoints"
-
-instance ExactP Pat where
-  exactP pat = case pat of
-    PVar l n    -> exactP n
-    PLit l lit  -> exactP lit
-    PNeg l p    -> printString "-" >> exactPC p
-    PNPlusK l n k   ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            exactP n
-            printStringAt (pos a) "+"
-            printStringAt (pos b) (show k)
-         _ -> errorEP "ExactP: Pat: PNPlusK is given wrong number of srcInfoPoints"
-    PInfixApp l pa qn pb -> exactP pa >> epInfixQName qn >> exactPC pb
-    PApp l qn ps    -> exactP qn >> mapM_ exactPC ps
-    PTuple l ps -> parenList (srcInfoPoints l) ps
-    PList l ps  -> squareList (srcInfoPoints l) ps
-    PParen l p  -> parenList (srcInfoPoints l) [p]
-    PRec l qn pfs   -> exactP qn >> curlyList (srcInfoPoints l) pfs
-    PAsPat l n p    ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP n
-            printStringAt (pos a) "@"
-            exactPC p
-         _ -> errorEP "ExactP: Pat: PAsPat is given wrong number of srcInfoPoints"
-    PWildCard l -> printString "_"
-    PIrrPat l p -> printString "~" >> exactPC p
-    PatTypeSig l p t ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP p
-            printStringAt (pos a) "::"
-            exactPC t
-         _ -> errorEP "ExactP: Pat: PatTypeSig is given wrong number of srcInfoPoints"
-    PViewPat l e p ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP e
-            printStringAt (pos a) "->"
-            exactPC p
-         _ -> errorEP "ExactP: Pat: PViewPat is given wrong number of srcInfoPoints"
-    PRPat l rps -> squareList (srcInfoPoints l) rps
-    PXTag l xn attrs mat ps ->
-        case srcInfoPoints l of
-         [a,b,c,d,e] -> do
-            printString "<"
-            exactPC xn
-            mapM_ exactPC attrs
-            maybeEP exactPC mat
-            printStringAt (pos b) ">"
-            mapM_ exactPC ps
-            printStringAt (pos c) "</"
-            printWhitespace (pos d)
-            exactP xn
-            printStringAt (pos e) ">"
-         _ -> errorEP "ExactP: Pat: PXTag is given wrong number of srcInfoPoints"
-    PXETag l xn attrs mat ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "<"
-            exactPC xn
-            mapM_ exactPC attrs
-            maybeEP exactPC mat
-            printStringAt (pos b) "/>"
-         _ -> errorEP "ExactP: Pat: PXETag is given wrong number of srcInfoPoints"
-    PXPcdata l str -> printString str
-    PXPatTag l p   ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            printString "<%"
-            exactPC p
-            printString "%>"
-         _ -> errorEP "ExactP: Pat: PXPatTag is given wrong number of srcInfoPoints"
-    PXRPats  l rps  -> bracketList ("<[",",","]>") (srcInfoPoints l) rps
-    PExplTypeArg l qn t ->
-        case srcInfoPoints l of
-         [a,b] -> do
-            exactP qn
-            printStringAt (pos a) "{|"
-            exactPC t
-            printStringAt (pos b) "|}"
-         _ -> errorEP "ExactP: Pat: PExplTypeArg is given wrong number of srcInfoPoints"
-    PQuasiQuote l name qt   -> printString $ "[$" ++ name ++ "|" ++ qt ++ "]"
-    PBangPat l p    -> printString "!" >> exactPC p
-
-instance ExactP PatField where
-  exactP pf = case pf of
-    PFieldPat l qn p        ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP qn
-            printStringAt (pos a) "="
-            exactPC p
-         _ -> errorEP "ExactP: PatField: PFieldPat is given wrong number of srcInfoPoints"
-    PFieldPun l n   -> exactP n
-    PFieldWildcard l -> printString ".."
-
-instance ExactP RPat where
-  exactP rpat = case rpat of
-    RPOp l rp op    -> exactP rp >> exactPC op
-    RPEither l r1 r2 ->
-      case srcInfoPoints l of
-       [a] -> do
-          exactP r1
-          printStringAt (pos a) "|"
-          exactPC r2
-       _ -> errorEP "ExactP: RPat: RPEither is given wrong number of srcInfoPoints"
-    RPSeq l rps -> bracketList ("(|",",","|)") (srcInfoPoints l) rps
-    RPGuard l p stmts   ->
-      case srcInfoPoints l of
-       a:pts -> do
-          printString "(|"
-          exactPC p
-          bracketList ("|",",","|)") pts stmts
-       _ -> errorEP "ExactP: RPat: RPGuard is given wrong number of srcInfoPoints"
-    RPCAs l n rp    ->
-      case srcInfoPoints l of
-       [a] -> do
-          exactP n
-          printStringAt (pos a) "@:"
-          exactPC rp
-       _ -> errorEP "ExactP: RPat: RPCAs is given wrong number of srcInfoPoints"
-    RPAs l n rp     ->
-      case srcInfoPoints l of
-       [a] -> do
-          exactP n
-          printStringAt (pos a) "@"
-          exactPC rp
-       _ -> errorEP "ExactP: RPat: RPAs is given wrong number of srcInfoPoints"
-    RPParen l rp    -> do
-      parenList (srcInfoPoints l) [rp]
-    RPPat l p   -> exactP p
-
-instance ExactP RPatOp where
-  exactP rop = printString $ case rop of
-    RPStar  l  -> "*"
-    RPStarG l  -> "*!"
-    RPPlus  l  -> "+"
-    RPPlusG l  -> "+!"
-    RPOpt   l  -> "?"
-    RPOptG  l  -> "?!"
-
-instance ExactP PXAttr where
-  exactP (PXAttr l xn p) =
-    case srcInfoPoints l of
-     [a] -> do
-        exactP xn
-        printStringAt (pos a) "="
-        exactPC p
-     _ -> errorEP "ExactP: PXAttr is given wrong number of srcInfoPoints"
-
-instance ExactP XName where
-  exactP xn = case xn of
-    XName l name -> printString name
-    XDomName l dom name ->
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString dom
-            printStringAt (pos b) ":"
-            printStringAt (pos c) name
-         _ -> errorEP "ExactP: XName: XDomName is given wrong number of srcInfoPoints"
-
-instance ExactP Binds where
-  exactP (BDecls  l ds)  = layoutList (srcInfoPoints l) (sepFunBinds ds)
-  exactP (IPBinds l ips) = layoutList (srcInfoPoints l) ips
-
-instance ExactP CallConv where
-  exactP (StdCall _) = printString "stdcall"
-  exactP (CCall   _) = printString "ccall"
-
-instance ExactP Safety where
-  exactP (PlayRisky _) = printString "unsafe"
-  exactP (PlaySafe _ b) = printString $ if b then "threadsafe" else "safe"
-
-instance ExactP Rule where
-  exactP (Rule l str mact mrvs e1 e2) =
-    case srcInfoPoints l of
-     a:pts -> do
-        printString (show str)
-        maybeEP exactP mact
-        pts <- case mrvs of
-                Nothing -> return pts
-                Just rvs ->
-                    case pts of
-                     a:b:pts' -> do
-                        printStringAt (pos a) "forall"
-                        mapM_ exactPC rvs
-                        printStringAt (pos b) "."
-                        return pts'
-                     _ -> errorEP "ExactP: Rule is given too few srcInfoPoints"
-        case pts of
-         [x] -> do
-            exactPC e1
-            printStringAt (pos x) "="
-            exactPC e2
-         _ -> errorEP "ExactP: Rule is given wrong number of srcInfoPoints"
-     _ -> errorEP "ExactP: Rule is given too few srcInfoPoints"
-
-instance ExactP RuleVar where
-  exactP (TypedRuleVar l n t) = do
-        case srcInfoPoints l of
-         [a,b,c] -> do
-            printString "("
-            exactPC n
-            printStringAt (pos b) "::"
-            exactPC t
-            printStringAt (pos c) ")"
-         _ -> errorEP "ExactP: RuleVar: TypedRuleVar is given wrong number of srcInfoPoints"
-  exactP (RuleVar l n) = exactP n
-
-instance ExactP Activation where
-  exactP (ActiveFrom   l i) =
-    printPoints l ["[", show i, "]"]
-  exactP (ActiveUntil  l i) =
-    printPoints l ["[", "~", show i, "]"]
-
-instance ExactP FieldDecl where
-  exactP (FieldDecl l ns bt) = do
-    let pts = srcInfoPoints l
-    printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "::")]) ns
-    exactPC bt
-
-instance ExactP IPBind where
-  exactP (IPBind l ipn e) = do
-    case srcInfoPoints l of
-     [a] -> do
-        exactP ipn
-        printStringAt (pos a) "="
-        exactPC e
-     _ -> errorEP "ExactP: IPBind is given wrong number of srcInfoPoints"
− src/Language/Haskell/Exts/Annotated/Fixity.hs
@@ -1,335 +0,0 @@------------------------------------------------------------------------------
--- |
--- Module      :  Language.Haskell.Exts.Annotated.Fixity
--- Copyright   :  (c) Niklas Broberg 2009
--- License     :  BSD-style (see the file LICENSE.txt)
---
--- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se
--- Stability   :  stable
--- Portability :  portable
---
--- Fixity information to give the parser so that infix operators can
--- be parsed properly.
---
------------------------------------------------------------------------------
-module Language.Haskell.Exts.Annotated.Fixity
-    (
-    -- * Fixity representation
-      Fixity(..)
-    -- | The following three functions all create lists of
-    --   fixities from textual representations of operators.
-    --   The intended usage is e.g.
-    --
-    -- > fixs = infixr_ 0  ["$","$!","`seq`"]
-    --
-    --   Note that the operators are expected as you would
-    --   write them infix, i.e. with ` characters surrounding
-    --   /varid/ operators, and /varsym/ operators written as is.
-    , infix_, infixl_, infixr_
-    -- ** Collections of fixities
-    , preludeFixities, baseFixities
-
-    -- * Applying fixities to an AST
-    , AppFixity(..)
-    ) where
-
-import Language.Haskell.Exts.Annotated.Syntax
-import Language.Haskell.Exts.SrcLoc
-
-import Language.Haskell.Exts.Fixity ( Fixity(..), infix_, infixl_, infixr_, preludeFixities, baseFixities )
-import qualified Language.Haskell.Exts.Syntax as S ( Assoc(..), QOp(..), Op(..), QName(..), Name(..), SpecialCon(..) )
-import Language.Haskell.Exts.Annotated.Simplify ( sQOp, sOp, sAssoc, sQName )
-
-import Data.Char (isUpper)
-import Control.Monad (when, (<=<), liftM, liftM2, liftM3, liftM4)
-import Data.Traversable (mapM)
-import Prelude hiding (mapM)
-
--- | All AST elements that may include expressions which in turn may
---   need fixity tweaking will be instances of this class.
-class AppFixity ast where
-  -- | Tweak any expressions in the element to account for the
-  --   fixities given. Assumes that all operator expressions are
-  --   fully left associative chains to begin with.
-  applyFixities :: Monad m => [Fixity]      -- ^ The fixities to account for.
-                    -> ast SrcSpanInfo      -- ^ The element to tweak.
-                    -> m (ast SrcSpanInfo)  -- ^ The same element, but with operator expressions updated, or a failure.
-
-
-instance AppFixity Exp where
-  applyFixities fixs = infFix fixs <=< leafFix fixs
-    where -- This is the real meat case. We can assume a left-associative list to begin with.
-          infFix fixs (InfixApp l2 a op2 z) = do
-              e <- infFix fixs a
-              case e of
-               InfixApp l1 x op1 y -> do
-                  let (a1,p1) = askFixity fixs op1
-                      (a2,p2) = askFixity fixs op2
-                  when (p1 == p2 && (a1 /= a2 || a1 == S.AssocNone )) -- Ambiguous infix expression!
-                       $ fail "Ambiguous infix expression"
-                  if (p1 > p2 || p1 == p2 && (a1 == S.AssocLeft || a2 == S.AssocNone)) -- Already right order
-                   then return $ InfixApp l2 e op2 z
-                   else liftM (InfixApp l2 x op1) (infFix fixs $ InfixApp (ann y <++> ann z) y op2 z)
-               _  -> return $ InfixApp l2 e op2 z
-
-          infFix _ e = return e
-
-instance AppFixity Pat where
-  applyFixities fixs = infFix fixs <=< leafFixP fixs
-    where -- This is the real meat case. We can assume a left-associative list to begin with.
-          infFix fixs (PInfixApp l2 a op2 z) = do
-              p <- infFix fixs a
-              case p of
-               PInfixApp l1 x op1 y -> do
-                  let (a1,p1) = askFixityP fixs op1
-                      (a2,p2) = askFixityP fixs op2
-                  when (p1 == p2 && (a1 /= a2 || a1 == S.AssocNone )) -- Ambiguous infix expression!
-                       $ fail "Ambiguous infix expression"
-                  if (p1 > p2 || p1 == p2 && (a1 == S.AssocLeft || a2 == S.AssocNone)) -- Already right order
-                   then return $ PInfixApp l2 p op2 z
-                   else liftM (PInfixApp l2 x op1) (infFix fixs $ PInfixApp (ann y <++> ann z) y op2 z)
-               _  -> return $ PInfixApp l2 p op2 z
-
-          infFix _ p = return p
-
--- Internal: lookup associativity and precedence of an operator
-askFixity :: [Fixity] -> QOp l -> (S.Assoc, Int)
-askFixity xs k = askFix xs (f $ sQOp k) -- undefined -- \k -> askFixityP xs (f k) -- lookupWithDefault (AssocLeft, 9) (f k) mp
-    where
-        f (S.QVarOp x) = S.VarOp (g x)
-        f (S.QConOp x) = S.ConOp (g x)
-
-        g (S.Qual _ x) = x
-        g (S.UnQual x) = x
-        g (S.Special S.Cons) = S.Symbol ":"
-
--- Same using patterns
-askFixityP :: [Fixity] -> QName l -> (S.Assoc, Int)
-askFixityP xs qn = askFix xs (S.ConOp $ g $ sQName qn)
-    where
-        g (S.Qual _ x) = x
-        g (S.UnQual x) = x
-        g (S.Special S.Cons) = S.Symbol ":"
-        
-askFix :: [Fixity] -> S.Op -> (S.Assoc, Int)
-askFix xs = \k -> lookupWithDefault (S.AssocLeft, 9) k mp
-    where
-        lookupWithDefault def k mp = case lookup k mp of
-            Nothing -> def
-            Just x  -> x
-
-        mp = [(x,(a,p)) | Fixity a p x <- xs]
-
-
--------------------------------------------------------------------
--- Boilerplate - yuck!! Everything below here is internal stuff
-
-instance AppFixity Module where
-    applyFixities fixs (Module l mmh prs imp decls) =
-        liftM (Module l mmh prs imp) $ appFixDecls fixs decls
-    applyFixities fixs (XmlPage l mn os xn xas mexp cs) =
-        liftM3 (XmlPage l mn os xn) (fix xas) (fix mexp) (fix cs)
-      where fix xs = mapM (applyFixities fixs) xs
-    applyFixities fixs (XmlHybrid l mmh prs imp decls xn xas mexp cs) =
-        liftM4 (flip (XmlHybrid l mmh prs imp) xn) (appFixDecls fixs decls)
-                (fixe xas) (fixe mexp) (fixe cs)
-      where fixe xs = let extraFixs = getFixities decls
-                       in mapM (applyFixities (fixs++extraFixs)) xs
-
-instance AppFixity Decl where
-    applyFixities fixs decl = case decl of
-        ClassDecl l ctxt dh deps cdecls   -> liftM (ClassDecl l ctxt dh deps) $ mapM (mapM fix) cdecls
-        InstDecl  l ctxt ih idecls        -> liftM (InstDecl  l ctxt ih)      $ mapM (mapM fix) idecls
-        SpliceDecl l spl        -> liftM (SpliceDecl l) $ fix spl
-        FunBind l matches       -> liftM (FunBind l) $ mapM fix matches
-        PatBind l p mt rhs bs   -> liftM3 (flip (PatBind l) mt) (fix p) (fix rhs) (mapM fix bs)
-        AnnPragma l ann         -> liftM (AnnPragma l) $ fix ann
-        _                       -> return decl
-      where fix x = applyFixities fixs x
-
-appFixDecls :: Monad m => [Fixity] -> [Decl SrcSpanInfo] -> m [Decl SrcSpanInfo]
-appFixDecls fixs decls =
-    let extraFixs = getFixities decls
-     in mapM (applyFixities (fixs++extraFixs)) decls
-
-getFixities = concatMap getFixity
-getFixity (InfixDecl _ a mp ops) = let p = maybe 9 id mp in map (Fixity (sAssoc a) p) (map sOp ops)
-getFixity _ = []
-
-instance AppFixity Annotation where
-    applyFixities fixs ann = case ann of
-        Ann     l n e   -> liftM (Ann l n) $ fix e
-        TypeAnn l n e   -> liftM (TypeAnn l n) $ fix e
-        ModuleAnn l e   -> liftM (ModuleAnn l) $ fix e
-      where fix x = applyFixities fixs x
-
-instance AppFixity ClassDecl where
-    applyFixities fixs (ClsDecl l decl) = liftM (ClsDecl l) $ applyFixities fixs decl
-    applyFixities _ cdecl = return cdecl
-
-instance AppFixity InstDecl where
-    applyFixities fixs (InsDecl l decl) = liftM (InsDecl l) $ applyFixities fixs decl
-    applyFixities _ idecl = return idecl
-
-instance AppFixity Match where
-    applyFixities fixs match = case match of
-        Match l n ps rhs bs -> liftM3 (Match l n) (mapM fix ps) (fix rhs) (mapM fix bs)
-        InfixMatch l a n ps rhs bs -> liftM4 (flip (InfixMatch l) n) (fix a) (mapM fix ps) (fix rhs) (mapM fix bs)
-      where fix x = applyFixities fixs x
-
-instance AppFixity Rhs where
-    applyFixities fixs rhs = case rhs of
-        UnGuardedRhs l e      -> liftM (UnGuardedRhs l) $ fix e
-        GuardedRhss l grhss   -> liftM (GuardedRhss l) $ mapM fix grhss
-      where fix x = applyFixities fixs x
-
-instance AppFixity GuardedRhs where
-    applyFixities fixs (GuardedRhs l stmts e) = liftM2 (GuardedRhs l) (mapM fix stmts) $ fix e
-      where fix x = applyFixities fixs x
-
-instance AppFixity PatField where
-    applyFixities fixs (PFieldPat l n p) = liftM (PFieldPat l n) $ applyFixities fixs p
-    applyFixities _ pf = return pf
-
-instance AppFixity RPat where
-    applyFixities fixs rp = case rp of
-        RPOp l rp op          -> liftM (flip (RPOp l) op) $ fix rp
-        RPEither l a b        -> liftM2 (RPEither l) (fix a) (fix b)
-        RPSeq l rps           -> liftM (RPSeq l) $ mapM fix rps
-        RPGuard l p stmts     -> liftM2 (RPGuard l) (fix p) $ mapM fix stmts
-        RPCAs l n rp          -> liftM (RPCAs l n) $ fix rp
-        RPAs l n rp           -> liftM (RPAs l n) $ fix rp
-        RPParen l rp          -> liftM (RPParen l) $ fix rp
-        RPPat l p             -> liftM (RPPat l) $ fix p
-      where fix x = applyFixities fixs x
-
-instance AppFixity PXAttr where
-    applyFixities fixs (PXAttr l n p) = liftM (PXAttr l n) $ applyFixities fixs p
-
-instance AppFixity Stmt where
-    applyFixities fixs stmt = case stmt of
-        Generator l p e       -> liftM2 (Generator l) (fix p) (fix e)
-        Qualifier l e         -> liftM (Qualifier l) $ fix e
-        LetStmt l bs          -> liftM (LetStmt l) $ fix bs    -- special behavior
-        RecStmt l stmts       -> liftM (RecStmt l) $ mapM fix stmts
-      where fix x = applyFixities fixs x
-
-instance AppFixity Binds where
-    applyFixities fixs bs = case bs of
-        BDecls l decls        -> liftM (BDecls l) $ appFixDecls fixs decls  -- special behavior
-        IPBinds l ips         -> liftM (IPBinds l) $ mapM fix ips
-      where fix x = applyFixities fixs x
-
-
-instance AppFixity IPBind where
-    applyFixities fixs (IPBind l n e) = liftM (IPBind l n) $ applyFixities fixs e
-
-instance AppFixity FieldUpdate where
-    applyFixities fixs (FieldUpdate l n e) = liftM (FieldUpdate l n) $ applyFixities fixs e
-    applyFixities _ fup = return fup
-
-instance AppFixity Alt where
-    applyFixities fixs (Alt l p galts bs) = liftM3 (Alt l) (fix p) (fix galts) (mapM fix bs)
-      where fix x = applyFixities fixs x
-
-instance AppFixity GuardedAlts where
-    applyFixities fixs galts = case galts of
-        UnGuardedAlt l e      -> liftM (UnGuardedAlt l) $ fix e
-        GuardedAlts  l galts  -> liftM (GuardedAlts l) $ mapM fix galts
-      where fix x = applyFixities fixs x
-
-instance AppFixity GuardedAlt where
-    applyFixities fixs (GuardedAlt l stmts e) = liftM2 (GuardedAlt l) (mapM fix stmts) (fix e)
-      where fix x = applyFixities fixs x
-
-instance AppFixity QualStmt where
-    applyFixities fixs qstmt = case qstmt of
-        QualStmt     l s      -> liftM (QualStmt l) $ fix s
-        ThenTrans    l e      -> liftM (ThenTrans l) $ fix e
-        ThenBy       l e1 e2  -> liftM2 (ThenBy l) (fix e1) (fix e2)
-        GroupBy      l e      -> liftM (GroupBy l) (fix e)
-        GroupUsing   l e      -> liftM (GroupUsing l) (fix e)
-        GroupByUsing l e1 e2  -> liftM2 (GroupByUsing l) (fix e1) (fix e2)
-      where fix x = applyFixities fixs x
-
-instance AppFixity Bracket where
-    applyFixities fixs br = case br of
-        ExpBracket l e    -> liftM (ExpBracket l) $ fix e
-        PatBracket l p    -> liftM (PatBracket l) $ fix p
-        DeclBracket l ds  -> liftM (DeclBracket l) $ mapM fix ds
-        _                 -> return br
-      where fix x = applyFixities fixs x
-
-instance AppFixity Splice where
-    applyFixities fixs (ParenSplice l e) = liftM (ParenSplice l) $ applyFixities fixs e
-    applyFixities _ s = return s
-
-instance AppFixity XAttr where
-    applyFixities fixs (XAttr l n e) = liftM (XAttr l n) $ applyFixities fixs e
-
-
--- the boring boilerplate stuff for expressions too
--- Recursively fixes the "leaves" of the infix chains,
--- without yet touching the chain itself. We assume all chains are
--- left-associate to begin with.
-leafFix fixs e = case e of
-    InfixApp l e1 op e2       -> liftM2 (flip (InfixApp l) op) (leafFix fixs e1) (fix e2)
-    App l e1 e2               -> liftM2 (App l) (fix e1) (fix e2)
-    NegApp l e                -> liftM (NegApp l) $ fix e
-    Lambda l pats e           -> liftM2 (Lambda l) (mapM fix pats) $ fix e
-    Let l bs e                -> liftM2 (Let l) (fix bs) $ fix e
-    If l e a b                -> liftM3 (If l) (fix e) (fix a) (fix b)
-    Case l e alts             -> liftM2 (Case l) (fix e) $ mapM fix alts
-    Do l stmts                -> liftM (Do l) $ mapM fix stmts
-    MDo l stmts               -> liftM (MDo l) $ mapM fix stmts
-    Tuple l exps              -> liftM (Tuple l) $ mapM fix exps
-    List l exps               -> liftM (List l) $ mapM fix  exps
-    Paren l e                 -> liftM (Paren l) $ fix e
-    LeftSection l e op        -> liftM (flip (LeftSection l) op) (fix e)
-    RightSection l op e       -> liftM (RightSection l op) $ fix e
-    RecConstr l n fups        -> liftM (RecConstr l n) $ mapM fix fups
-    RecUpdate l e fups        -> liftM2 (RecUpdate l) (fix e) $ mapM fix fups
-    EnumFrom l e              -> liftM (EnumFrom l) $ fix e
-    EnumFromTo l e1 e2        -> liftM2 (EnumFromTo l) (fix e1) (fix e2)
-    EnumFromThen l e1 e2      -> liftM2 (EnumFromThen l) (fix e1) (fix e2)
-    EnumFromThenTo l e1 e2 e3 -> liftM3 (EnumFromThenTo l) (fix e1) (fix e2) (fix e3)
-    ListComp l e quals        -> liftM2 (ListComp l) (fix e) $ mapM fix quals
-    ParComp  l e qualss       -> liftM2 (ParComp l) (fix e) $ mapM (mapM fix) qualss
-    ExpTypeSig l e t          -> liftM (flip (ExpTypeSig l) t) (fix e)
-    BracketExp l b            -> liftM (BracketExp l) $ fix b
-    SpliceExp l s             -> liftM (SpliceExp l) $ fix s
-    XTag l n ats mexp cs      -> liftM3 (XTag l n) (mapM fix ats) (mapM fix mexp) (mapM fix cs)
-    XETag l n ats mexp        -> liftM2 (XETag l n) (mapM fix ats) (mapM fix mexp)
-    XExpTag l e               -> liftM (XExpTag l) $ fix e
-    Proc l p e                -> liftM2 (Proc l) (fix p) (fix e)
-    LeftArrApp l e1 e2        -> liftM2 (LeftArrApp l) (fix e1) (fix e2)
-    RightArrApp l e1 e2       -> liftM2 (RightArrApp l) (fix e1) (fix e2)
-    LeftArrHighApp l e1 e2    -> liftM2 (LeftArrHighApp l) (fix e1) (fix e2)
-    RightArrHighApp l e1 e2   -> liftM2 (RightArrHighApp l) (fix e1) (fix e2)
-    CorePragma l s e          -> liftM (CorePragma l s) (fix e)
-    SCCPragma l s e           -> liftM (SCCPragma l s) (fix e)
-    GenPragma l s ab cd e     -> liftM (GenPragma l s ab cd) (fix e)
-
-    _                         -> return e
-  where
-    fix x = applyFixities fixs x
-
-leafFixP fixs p = case p of
-        PNeg l p                -> liftM (PNeg l) $ fix p
-        PApp l n ps             -> liftM (PApp l n) $ mapM fix ps
-        PTuple l ps             -> liftM (PTuple l) $ mapM fix ps
-        PList l ps              -> liftM (PList l) $ mapM fix ps
-        PParen l p              -> liftM (PParen l) $ fix p
-        PRec l n pfs            -> liftM (PRec l n) $ mapM fix pfs
-        PAsPat l n p            -> liftM (PAsPat l n) $ fix p
-        PIrrPat l p             -> liftM (PIrrPat l) $ fix p
-        PatTypeSig l p t        -> liftM (flip (PatTypeSig l) t) (fix p)
-        PViewPat l e p          -> liftM2 (PViewPat l) (fix e) (fix p)
-        PRPat l rps             -> liftM (PRPat l) $ mapM fix rps
-        PXTag l n ats mp ps     -> liftM3 (PXTag l n) (mapM fix ats) (mapM fix mp) (mapM fix ps)
-        PXETag l n ats mp       -> liftM2 (PXETag l n) (mapM fix ats) (mapM fix mp)
-        PXPatTag l p            -> liftM (PXPatTag l) $ fix p
-        PXRPats l rps           -> liftM (PXRPats l) $ mapM fix rps
-        PBangPat l p            -> liftM (PBangPat l) $ fix p
-        _                       -> return p
-      where fix x = applyFixities fixs x
− src/Language/Haskell/Exts/Annotated/Simplify.hs
@@ -1,519 +0,0 @@------------------------------------------------------------------------------
--- |
--- Module      :  Language.Haskell.Exts.Annotated.Simplify
--- Copyright   :  (c) Niklas Broberg 2009
--- License     :  BSD-style (see the file LICENSE.txt)
---
--- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se
--- Stability   :  experimental
--- Portability :  portable
---
--- This module contains code for translating from the annotated
--- complex AST in Language.Haskell.Exts.Annotated.Syntax
--- to the simpler, sparsely annotated AST in Language.Haskell.Exts.Syntax.
--- 
--- A function @sXYZ@ translates an annotated AST node of type @XYZ l@ into
--- a simple AST node of type @XYZ@. I would have prefered to use a MPTC
--- with an fd/type family to get a single exported function name, but
--- I wish to stay Haskell 2010 compliant. Let's hope for Haskell 2011.
--- 
------------------------------------------------------------------------------
-module Language.Haskell.Exts.Annotated.Simplify where
-
-import Language.Haskell.Exts.Annotated.Syntax
-import qualified Language.Haskell.Exts.Syntax as S
-
-import Language.Haskell.Exts.SrcLoc
-
--- | Translate an annotated AST node representing a Haskell module, into
---   a simpler version that retains (almost) only abstract information.
---   In particular, XML and hybrid XML pages enabled by the XmlSyntax extension
---   are translated into standard Haskell modules with a @page@ function.
-sModule :: SrcInfo loc => Module loc -> S.Module
-sModule md = case md of
-    Module l mmh oss ids ds ->
-        let (mn, mwt, mes) = sModuleHead mmh
-         in S.Module (getPointLoc l) mn (map sModulePragma oss) mwt mes (map sImportDecl ids) (map sDecl ds)
-    XmlPage l mn oss xn attrs mat es   ->
-        let loc = getPointLoc l
-         in S.Module loc (sModuleName mn) (map sModulePragma oss)
-                      Nothing
-                      (Just [S.EVar $ S.UnQual $ S.Ident "page"])
-                        []
-                        [pageFun loc $ S.XTag loc (sXName xn) (map sXAttr attrs) (fmap sExp mat) (map sExp es)]
-    XmlHybrid l mmh oss ids ds xn attrs mat es  ->
-        let loc1 = getPointLoc l
-            loc2 = getPointLoc (ann xn)
-            (mn, mwt, mes) = sModuleHead mmh
-         in S.Module loc1 mn (map sModulePragma oss) mwt mes (map sImportDecl ids)
-                (map sDecl ds ++ [pageFun loc2 $ S.XTag loc2 (sXName xn) (map sXAttr attrs) (fmap sExp mat) (map sExp es)])
-  where pageFun :: SrcLoc -> S.Exp -> S.Decl
-        pageFun loc e = S.PatBind loc namePat Nothing rhs (S.BDecls [])
-            where namePat = S.PVar $ S.Ident "page"
-                  rhs = S.UnGuardedRhs e
-
-
--- | Translate an annotated AST node representing a Haskell declaration
---   into a simpler version. Note that in the simpler version, all declaration
---   nodes are still annotated by 'SrcLoc's.
-sDecl :: SrcInfo loc => Decl loc -> S.Decl
-sDecl decl = case decl of
-     TypeDecl     l dh t        ->
-        let (n, tvs) = sDeclHead dh
-         in S.TypeDecl (getPointLoc l) n tvs (sType t)
-     TypeFamDecl  l dh mk       ->
-        let (n, tvs) = sDeclHead dh
-         in S.TypeFamDecl (getPointLoc l) n tvs (fmap sKind mk)
-     DataDecl     l dn mctxt dh constrs mder    ->
-        let (n, tvs) = sDeclHead dh
-         in S.DataDecl (getPointLoc l) (sDataOrNew dn) (maybe [] sContext mctxt) n tvs (map sQualConDecl constrs) (maybe [] sDeriving mder)
-     GDataDecl    l dn mctxt dh mk gds mder     ->
-        let (n, tvs) = sDeclHead dh
-         in S.GDataDecl (getPointLoc l) (sDataOrNew dn) (maybe [] sContext mctxt) n tvs (fmap sKind mk) (map sGadtDecl gds) (maybe [] sDeriving mder)
-     DataFamDecl  l mctxt dh mk ->
-        let (n, tvs) = sDeclHead dh
-         in S.DataFamDecl (getPointLoc l) (maybe [] sContext mctxt) n tvs (fmap sKind mk)
-     TypeInsDecl  l t1 t2       -> S.TypeInsDecl (getPointLoc l) (sType t1) (sType t2)
-     DataInsDecl  l dn t constrs mder           ->
-        S.DataInsDecl (getPointLoc l) (sDataOrNew dn) (sType t) (map sQualConDecl constrs) (maybe [] sDeriving mder)
-     GDataInsDecl l dn t mk gds mder            ->
-        S.GDataInsDecl (getPointLoc l) (sDataOrNew dn) (sType t) (fmap sKind mk) (map sGadtDecl gds) (maybe [] sDeriving mder)
-     ClassDecl    l mctxt dh fds mcds           ->
-        let (n, tvs) = sDeclHead dh
-         in S.ClassDecl (getPointLoc l) (maybe [] sContext mctxt) n tvs (map sFunDep fds) (maybe [] (map sClassDecl) mcds)
-     InstDecl     l mctxt ih mids               ->
-        let (qn, ts) = sInstHead ih
-         in S.InstDecl (getPointLoc l) (maybe [] sContext mctxt) qn ts (maybe [] (map sInstDecl) mids)
-     DerivDecl    l mctxt ih    ->
-        let (qn, ts) = sInstHead ih
-         in S.DerivDecl (getPointLoc l) (maybe [] sContext mctxt) qn ts
-     InfixDecl    l ass prec ops    -> S.InfixDecl (getPointLoc l) (sAssoc ass) (maybe 9 id prec) (map sOp ops)
-     DefaultDecl  l ts          -> S.DefaultDecl (getPointLoc l) (map sType ts)
-     SpliceDecl   l sp          -> S.SpliceDecl (getPointLoc l) (sExp sp)
-     TypeSig      l ns t        -> S.TypeSig (getPointLoc l) (map sName ns) (sType t)
-     FunBind      _ ms          -> S.FunBind (map sMatch ms)
-     PatBind      l p mt rhs mbs    ->
-        S.PatBind (getPointLoc l) (sPat p) (fmap sType mt) (sRhs rhs) (maybe (S.BDecls []) sBinds mbs)
-     ForImp       l cc msaf mstr n t    ->
-        S.ForImp (getPointLoc l) (sCallConv cc) (maybe (S.PlaySafe False) sSafety msaf) (maybe "" id mstr) (sName n) (sType t)
-     ForExp       l cc      mstr n t    ->
-        S.ForExp (getPointLoc l) (sCallConv cc) (maybe "" id mstr) (sName n) (sType t)
-     RulePragmaDecl   l rs      -> S.RulePragmaDecl (getPointLoc l) (map sRule rs)
-     DeprPragmaDecl   l nsstrs  -> S.DeprPragmaDecl (getPointLoc l) (map (\(ns, str) -> (map sName ns, str)) nsstrs)
-     WarnPragmaDecl   l nsstrs  -> S.WarnPragmaDecl (getPointLoc l) (map (\(ns, str) -> (map sName ns, str)) nsstrs)
-     InlineSig        l b mact qn   -> S.InlineSig (getPointLoc l) b (maybe S.AlwaysActive sActivation mact) (sQName qn)
-     InlineConlikeSig l   mact qn   -> S.InlineConlikeSig (getPointLoc l) (maybe S.AlwaysActive sActivation mact) (sQName qn)
-     SpecSig          l qn ts   -> S.SpecSig (getPointLoc l) (sQName qn) (map sType ts)
-     SpecInlineSig    l b mact qn ts    ->
-        S.SpecInlineSig (getPointLoc l) b (maybe S.AlwaysActive sActivation mact) (sQName qn) (map sType ts)
-     InstSig          l mctxt ih    ->
-        let (qn, ts) = sInstHead ih
-         in S.InstSig (getPointLoc l) (maybe [] sContext mctxt) qn ts
-     AnnPragma        l ann         ->
-        S.AnnPragma (getPointLoc l) (sAnnotation ann)
-
-sAnnotation :: SrcInfo loc => Annotation loc -> S.Annotation
-sAnnotation ann = case ann of
-    Ann       _ n e   -> S.Ann     (sName n) (sExp e)
-    TypeAnn   _ n e   -> S.TypeAnn (sName n) (sExp e)
-    ModuleAnn _   e   -> S.ModuleAnn         (sExp e)
-
-sModuleName :: ModuleName l -> S.ModuleName
-sModuleName (ModuleName _ str)  = S.ModuleName str
-
-sSpecialCon :: SpecialCon l -> S.SpecialCon
-sSpecialCon sc = case sc of
-    UnitCon _           -> S.UnitCon
-    ListCon _           -> S.ListCon
-    FunCon  _           -> S.FunCon
-    TupleCon _ b k      -> S.TupleCon b k
-    Cons _              -> S.Cons
-    UnboxedSingleCon _  -> S.UnboxedSingleCon
-
-sQName :: QName l -> S.QName
-sQName qn = case qn of
-    Qual    _ mn n  -> S.Qual (sModuleName mn) (sName n)
-    UnQual  _    n  -> S.UnQual (sName n)
-    Special _ sc    -> S.Special (sSpecialCon sc)
-
-sName :: Name l -> S.Name
-sName (Ident _ str) = S.Ident str
-sName (Symbol _ str) = S.Symbol str
-
-sIPName :: IPName l -> S.IPName
-sIPName (IPDup _ str) = S.IPDup str
-sIPName (IPLin _ str) = S.IPLin str
-
-sQOp :: QOp l -> S.QOp
-sQOp (QVarOp _ qn) = S.QVarOp (sQName qn)
-sQOp (QConOp _ qn) = S.QConOp (sQName qn)
-
-sOp :: Op l -> S.Op
-sOp (VarOp _ n) = S.VarOp (sName n)
-sOp (ConOp _ n) = S.ConOp (sName n)
-
-sCName :: CName l -> S.CName
-sCName (VarName _ n) = S.VarName (sName n)
-sCName (ConName _ n) = S.ConName (sName n)
-
-sModuleHead :: Maybe (ModuleHead l) -> (S.ModuleName, Maybe (S.WarningText), Maybe [S.ExportSpec])
-sModuleHead mmh = case mmh of
-    Nothing -> (S.main_mod, Nothing, Just [S.EVar (S.UnQual S.main_name)])
-    Just (ModuleHead _ mn mwt mel) -> (sModuleName mn, fmap sWarningText mwt, fmap sExportSpecList mel)
-
-sExportSpecList :: ExportSpecList l -> [S.ExportSpec]
-sExportSpecList (ExportSpecList _ ess) = map sExportSpec ess
-
-sExportSpec :: ExportSpec l -> S.ExportSpec
-sExportSpec es = case es of
-    EVar _ qn           -> S.EVar (sQName qn)
-    EAbs _ qn           -> S.EAbs (sQName qn)
-    EThingAll _ qn      -> S.EThingAll (sQName qn)
-    EThingWith _ qn cns -> S.EThingWith (sQName qn) (map sCName cns)
-    EModuleContents _ mn    -> S.EModuleContents (sModuleName mn)
-
-sImportDecl :: SrcInfo loc => ImportDecl loc -> S.ImportDecl
-sImportDecl (ImportDecl l mn qu src mpkg as misl) =
-    S.ImportDecl (getPointLoc l) (sModuleName mn) qu src mpkg (fmap sModuleName as) (fmap sImportSpecList misl)
-
-sImportSpecList :: ImportSpecList l -> (Bool, [S.ImportSpec])
-sImportSpecList (ImportSpecList _ b iss) = (b, map sImportSpec iss)
-
-sImportSpec :: ImportSpec l -> S.ImportSpec
-sImportSpec is = case is of
-    IVar _ n            -> S.IVar (sName n)
-    IAbs _ n            -> S.IAbs (sName n)
-    IThingAll _ n       -> S.IThingAll (sName n)
-    IThingWith _ n cns  -> S.IThingWith (sName n) (map sCName cns)
-
-sAssoc :: Assoc l -> S.Assoc
-sAssoc a = case a of
-    AssocNone  _ -> S.AssocNone
-    AssocLeft  _ -> S.AssocLeft
-    AssocRight _ -> S.AssocRight
-
-sDeclHead :: DeclHead l -> (S.Name, [S.TyVarBind])
-sDeclHead dh = case dh of
-    DHead _ n tvs       -> (sName n, map sTyVarBind tvs)
-    DHInfix _ tva n tvb -> (sName n, map sTyVarBind [tva,tvb])
-    DHParen _ dh        -> sDeclHead dh
-
-sInstHead :: InstHead l -> (S.QName, [S.Type])
-sInstHead ih = case ih of
-    IHead _ qn ts      -> (sQName qn, map sType ts)
-    IHInfix _ ta qn tb -> (sQName qn, map sType [ta,tb])
-    IHParen _ ih       -> sInstHead ih
-
-sDataOrNew :: DataOrNew l -> S.DataOrNew
-sDataOrNew (DataType _) = S.DataType
-sDataOrNew (NewType _) = S.NewType
-
-sDeriving :: (Deriving l) -> [(S.QName, [S.Type])]
-sDeriving (Deriving _ ihs) = map sInstHead ihs
-
-sBinds :: SrcInfo loc => Binds loc -> S.Binds
-sBinds bs = case bs of
-    BDecls  _ decls     -> S.BDecls (map sDecl decls)
-    IPBinds _ ipbds     -> S.IPBinds (map sIPBind ipbds)
-
-sIPBind :: SrcInfo loc => IPBind loc -> S.IPBind
-sIPBind (IPBind l ipn e) = S.IPBind (getPointLoc l) (sIPName ipn) (sExp e)
-
-sMatch :: SrcInfo loc => Match loc -> S.Match
-sMatch (Match l n ps rhs mwhere) =
-    S.Match (getPointLoc l) (sName n) (map sPat ps) Nothing (sRhs rhs) (maybe (S.BDecls []) sBinds mwhere)
-sMatch (InfixMatch l pa n pbs rhs mwhere) =
-    S.Match (getPointLoc l) (sName n) (map sPat (pa:pbs)) Nothing (sRhs rhs) (maybe (S.BDecls []) sBinds mwhere)
-
-sQualConDecl :: SrcInfo loc => QualConDecl loc -> S.QualConDecl
-sQualConDecl (QualConDecl l mtvs mctxt cd) =
-    S.QualConDecl (getPointLoc l) (maybe [] (map sTyVarBind) mtvs) (maybe [] sContext mctxt) (sConDecl cd)
-
-sConDecl :: ConDecl l -> S.ConDecl
-sConDecl cd = case cd of
-    ConDecl _ n bts     -> S.ConDecl (sName n) (map sBangType bts)
-    InfixConDecl _ bta n btb -> S.InfixConDecl (sBangType bta) (sName n) (sBangType btb)
-    RecDecl _ n fds -> S.RecDecl (sName n) (map sFieldDecl fds)
-
-sFieldDecl :: FieldDecl l -> ([S.Name], S.BangType)
-sFieldDecl (FieldDecl _ ns bt) = (map sName ns, sBangType bt)
-
-sGadtDecl :: SrcInfo loc => GadtDecl loc -> S.GadtDecl
-sGadtDecl (GadtDecl l n t) = S.GadtDecl (getPointLoc l) (sName n) (sType t)
-
-sClassDecl :: SrcInfo loc => ClassDecl loc -> S.ClassDecl
-sClassDecl cd = case cd of
-    ClsDecl _ d  -> S.ClsDecl (sDecl d)
-    ClsDataFam l mctxt dh mk    ->
-        let (n, tvs) = sDeclHead dh
-         in S.ClsDataFam (getPointLoc l) (maybe [] sContext mctxt) n tvs (fmap sKind mk)
-    ClsTyFam l dh mk    ->
-        let (n, tvs) = sDeclHead dh
-         in S.ClsTyFam (getPointLoc l) n tvs (fmap sKind mk)
-    ClsTyDef l t1 t2    ->
-        S.ClsTyDef (getPointLoc l) (sType t1) (sType t2)
-
-sInstDecl :: SrcInfo loc => InstDecl loc -> S.InstDecl
-sInstDecl id = case id of
-    InsDecl   _ d   -> S.InsDecl (sDecl d)
-    InsType   l t1 t2   -> S.InsType (getPointLoc l) (sType t1) (sType t2)
-    InsData   l dn t constrs mder   ->
-        S.InsData (getPointLoc l) (sDataOrNew dn) (sType t) (map sQualConDecl constrs) (maybe [] sDeriving mder)
-    InsGData  l dn t mk gds mder    ->
-        S.InsGData (getPointLoc l) (sDataOrNew dn) (sType t) (fmap sKind mk) (map sGadtDecl gds) (maybe [] sDeriving mder)
---    InsInline l b mact qn   -> S.InsInline (getPointLoc l) b (maybe S.AlwaysActive sActivation mact) (sQName qn)
-
-sBangType :: BangType l -> S.BangType
-sBangType bt = case bt of
-    BangedTy   _ t  -> S.BangedTy (sType t)
-    UnBangedTy _ t  -> S.UnBangedTy (sType t)
-    UnpackedTy _ t  -> S.UnpackedTy (sType t)
-
-sRhs :: SrcInfo loc => Rhs loc -> S.Rhs
-sRhs (UnGuardedRhs _ e) = S.UnGuardedRhs (sExp e)
-sRhs (GuardedRhss _ grhss) = S.GuardedRhss (map sGuardedRhs grhss)
-
-sGuardedRhs :: SrcInfo loc => GuardedRhs loc -> S.GuardedRhs
-sGuardedRhs (GuardedRhs l ss e) = S.GuardedRhs (getPointLoc l) (map sStmt ss) (sExp e)
-
-sType :: Type l -> S.Type
-sType t = case t of
-    TyForall _ mtvs mctxt t     -> S.TyForall (fmap (map sTyVarBind) mtvs) (maybe [] sContext mctxt) (sType t)
-    TyFun _ t1 t2               -> S.TyFun (sType t1) (sType t2)
-    TyTuple _ bx ts             -> S.TyTuple bx (map sType ts)
-    TyList _ t                  -> S.TyList (sType t)
-    TyApp _ t1 t2               -> S.TyApp (sType t1) (sType t2)
-    TyVar _ n                   -> S.TyVar (sName n)
-    TyCon _ qn                  -> S.TyCon (sQName qn)
-    TyParen _ t                 -> S.TyParen (sType t)
-    TyInfix _ ta qn tb          -> S.TyInfix (sType ta) (sQName qn) (sType tb)
-    TyKind _ t k                -> S.TyKind (sType t) (sKind k)
-
-sTyVarBind :: TyVarBind l -> S.TyVarBind
-sTyVarBind (KindedVar _ n k) = S.KindedVar (sName n) (sKind k)
-sTyVarBind (UnkindedVar _ n) = S.UnkindedVar (sName n)
-
-sKind :: Kind l -> S.Kind
-sKind k = case k of
-    KindStar  _     -> S.KindStar
-    KindBang  _     -> S.KindBang
-    KindFn _ k1 k2  -> S.KindFn (sKind k1) (sKind k2)
-    KindParen _ k   -> S.KindParen (sKind k)
-    KindVar _ n     -> S.KindVar (sName n)
-
-sFunDep :: FunDep l -> S.FunDep
-sFunDep (FunDep _ as bs) = S.FunDep (map sName as) (map sName bs)
-
-sContext :: Context l -> S.Context
-sContext ctxt = case ctxt of
-    CxSingle _ asst     -> [sAsst asst]
-    CxTuple  _ assts    -> map sAsst assts
-    CxParen  _ ct       -> sContext ct
-    CxEmpty  _          -> []
-
-sAsst :: Asst l -> S.Asst
-sAsst asst = case asst of
-    ClassA _ qn ts      -> S.ClassA (sQName qn) (map sType ts)
-    InfixA _ ta qn tb   -> S.InfixA (sType ta) (sQName qn) (sType tb)
-    IParam _ ipn t      -> S.IParam (sIPName ipn) (sType t)
-    EqualP _ t1 t2      -> S.EqualP (sType t1) (sType t2)
-
-sLiteral :: Literal l -> S.Literal
-sLiteral lit = case lit of
-    Char       _ c _ -> S.Char c
-    String     _ s _ -> S.String s
-    Int        _ i _ -> S.Int i
-    Frac       _ r _ -> S.Frac r
-    PrimInt    _ i _ -> S.PrimInt i
-    PrimWord   _ i _ -> S.PrimWord i
-    PrimFloat  _ r _ -> S.PrimFloat r
-    PrimDouble _ r _ -> S.PrimDouble r
-    PrimChar   _ c _ -> S.PrimChar c
-    PrimString _ s _ -> S.PrimString s
-
-sExp :: SrcInfo loc => Exp loc -> S.Exp
-sExp e = case e of
-    Var _ qn            -> S.Var (sQName qn)
-    IPVar _ ipn         -> S.IPVar (sIPName ipn)
-    Con _ qn            -> S.Con (sQName qn)
-    Lit _ lit           -> S.Lit (sLiteral lit)
-    InfixApp _ e1 op e2 -> S.InfixApp (sExp e1) (sQOp op) (sExp e2)
-    App _ e1 e2         -> S.App (sExp e1) (sExp e2)
-    NegApp _ e          -> S.NegApp (sExp e)
-    Lambda l ps e       -> S.Lambda (getPointLoc l) (map sPat ps) (sExp e)
-    Let _ bs e          -> S.Let (sBinds bs) (sExp e)
-    If _ e1 e2 e3       -> S.If (sExp e1) (sExp e2) (sExp e3)
-    Case _ e alts       -> S.Case (sExp e) (map sAlt alts)
-    Do _ ss             -> S.Do (map sStmt ss)
-    MDo _ ss            -> S.MDo (map sStmt ss)
-    Tuple _ es          -> S.Tuple (map sExp es)
-    TupleSection _ mes  -> S.TupleSection (map (fmap sExp) mes)
-    List _ es           -> S.List (map sExp es)
-    Paren _ e           -> S.Paren (sExp e)
-    LeftSection _ e op  -> S.LeftSection (sExp e) (sQOp op)
-    RightSection _ op e -> S.RightSection (sQOp op) (sExp e)
-    RecConstr _ qn fups -> S.RecConstr (sQName qn) (map sFieldUpdate fups)
-    RecUpdate _ e fups  -> S.RecUpdate (sExp e) (map sFieldUpdate fups)
-    EnumFrom _ e        -> S.EnumFrom (sExp e)
-    EnumFromTo _ e1 e2  -> S.EnumFromTo (sExp e1) (sExp e2)
-    EnumFromThen _ e1 e2    -> S.EnumFromThen (sExp e1) (sExp e2)
-    EnumFromThenTo _ e1 e2 e3   -> S.EnumFromThenTo (sExp e1) (sExp e2) (sExp e3)
-    ListComp _ e qss    -> S.ListComp (sExp e) (map sQualStmt qss)
-    ParComp  _ e qsss   -> S.ParComp (sExp e) (map (map sQualStmt) qsss)
-    ExpTypeSig l e t    -> S.ExpTypeSig (getPointLoc l) (sExp e) (sType t)
-    VarQuote _ qn       -> S.VarQuote (sQName qn)
-    TypQuote _ qn       -> S.TypQuote (sQName qn)
-    BracketExp _ br     -> S.BracketExp (sBracket br)
-    SpliceExp _ sp      -> S.SpliceExp (sSplice sp)
-    QuasiQuote _ nm qt  -> S.QuasiQuote nm qt
-    XTag l xn attrs mat es  -> S.XTag  (getPointLoc l) (sXName xn) (map sXAttr attrs) (fmap sExp mat) (map sExp es)
-    XETag l xn attrs mat    -> S.XETag (getPointLoc l) (sXName xn) (map sXAttr attrs) (fmap sExp mat)
-    XPcdata _ str       -> S.XPcdata str
-    XExpTag _ e         -> S.XExpTag (sExp e)
-    CorePragma _ str e  -> S.CorePragma str (sExp e)
-    SCCPragma  _ str e  -> S.SCCPragma  str (sExp e)
-    GenPragma  _ str i12 i34 e  -> S.GenPragma str i12 i34 (sExp e)
-    Proc            l p  e  -> S.Proc (getPointLoc l) (sPat p) (sExp e)
-    LeftArrApp      _ e1 e2 -> S.LeftArrApp (sExp e1) (sExp e2)
-    RightArrApp     _ e1 e2 -> S.RightArrApp (sExp e1) (sExp e2)
-    LeftArrHighApp  _ e1 e2 -> S.LeftArrHighApp (sExp e1) (sExp e2)
-    RightArrHighApp _ e1 e2 -> S.RightArrHighApp (sExp e1) (sExp e2)
-
-
-sXName :: XName l -> S.XName
-sXName (XName _ str) = S.XName str
-sXName (XDomName _ dom str) = S.XDomName dom str
-
-sXAttr :: SrcInfo loc => XAttr loc -> S.XAttr
-sXAttr (XAttr _ xn e) = S.XAttr (sXName xn) (sExp e)
-
-sBracket:: SrcInfo loc => Bracket loc -> S.Bracket
-sBracket br = case br of
-    ExpBracket _ e  -> S.ExpBracket (sExp e)
-    PatBracket _ p  -> S.PatBracket (sPat p)
-    TypeBracket _ t -> S.TypeBracket (sType t)
-    DeclBracket _ ds -> S.DeclBracket (map sDecl ds)
-
-sSplice :: SrcInfo loc => Splice loc -> S.Splice
-sSplice (IdSplice _ str) = S.IdSplice str
-sSplice (ParenSplice _ e) = S.ParenSplice (sExp e)
-
-sSafety :: Safety l -> S.Safety
-sSafety (PlayRisky _) = S.PlayRisky
-sSafety (PlaySafe _ b) = S.PlaySafe b
-
-sCallConv :: CallConv l -> S.CallConv
-sCallConv (StdCall _) = S.StdCall
-sCallConv (CCall _)   = S.CCall
-
-sModulePragma :: SrcInfo loc => ModulePragma loc -> S.ModulePragma
-sModulePragma pr = case pr of
-    LanguagePragma   l ns   -> S.LanguagePragma (getPointLoc l) (map sName ns)
-    OptionsPragma    l mt str -> S.OptionsPragma (getPointLoc l) mt str
-    AnnModulePragma  l ann -> S.AnnModulePragma (getPointLoc l) (sAnnotation ann)
-
-sActivation :: Activation l -> S.Activation
-sActivation act = case act of
-    ActiveFrom   _ k    -> S.ActiveFrom k
-    ActiveUntil  _ k    -> S.ActiveUntil k
-
-sRule :: SrcInfo loc => Rule loc -> S.Rule
-sRule (Rule _ str mact mrvs e1 e2) =
-    S.Rule str (maybe S.AlwaysActive sActivation mact) (fmap (map sRuleVar) mrvs) (sExp e1) (sExp e2)
-
-sRuleVar :: RuleVar l -> S.RuleVar
-sRuleVar (RuleVar _ n) = S.RuleVar (sName n)
-sRuleVar (TypedRuleVar _ n t) = S.TypedRuleVar (sName n) (sType t)
-
-sWarningText :: WarningText l -> S.WarningText
-sWarningText (DeprText _ str) = S.DeprText str
-sWarningText (WarnText _ str) = S.WarnText str
-
-sPat :: SrcInfo loc => Pat loc -> S.Pat
-sPat pat = case pat of
-    PVar _ n            -> S.PVar (sName n)
-    PLit _ lit          -> S.PLit (sLiteral lit)
-    PNeg _ p            -> S.PNeg (sPat p)
-    PNPlusK _ n k       -> S.PNPlusK (sName n) k
-    PInfixApp _ pa qn pb -> S.PInfixApp (sPat pa) (sQName qn) (sPat pb)
-    PApp _ qn ps        -> S.PApp (sQName qn) (map sPat ps)
-    PTuple _ ps         -> S.PTuple (map sPat ps)
-    PList _ ps          -> S.PList (map sPat ps)
-    PParen _ p          -> S.PParen (sPat p)
-    PRec _ qn pfs       -> S.PRec (sQName qn) (map sPatField pfs)
-    PAsPat _ n p        -> S.PAsPat (sName n) (sPat p)
-    PWildCard _         -> S.PWildCard
-    PIrrPat _ p         -> S.PIrrPat (sPat p)
-    PatTypeSig l p t    -> S.PatTypeSig (getPointLoc l) (sPat p) (sType t)
-    PViewPat _ e p      -> S.PViewPat (sExp e) (sPat p)
-    PRPat _ rps         -> S.PRPat (map sRPat rps)
-    PXTag l xn attrs mat ps -> S.PXTag (getPointLoc l) (sXName xn) (map sPXAttr attrs) (fmap sPat mat) (map sPat ps)
-    PXETag l xn attrs mat   -> S.PXETag (getPointLoc l) (sXName xn) (map sPXAttr attrs) (fmap sPat mat)
-    PXPcdata _ str      -> S.PXPcdata str
-    PXPatTag _ p        -> S.PXPatTag (sPat p)
-    PXRPats  _ rps      -> S.PXRPats (map sRPat rps)
-    PExplTypeArg _ qn t -> S.PExplTypeArg (sQName qn) (sType t)
-    PQuasiQuote _ nm qt -> S.PQuasiQuote nm qt
-    PBangPat _ p        -> S.PBangPat (sPat p)
-
-sPXAttr :: SrcInfo loc => PXAttr loc -> S.PXAttr
-sPXAttr (PXAttr _ xn p) = S.PXAttr (sXName xn) (sPat p)
-
-sRPatOp :: RPatOp l -> S.RPatOp
-sRPatOp rpop = case rpop of
-    RPStar  _ -> S.RPStar
-    RPStarG _ -> S.RPStarG
-    RPPlus  _ -> S.RPPlus
-    RPPlusG _ -> S.RPPlusG
-    RPOpt   _ -> S.RPOpt
-    RPOptG  _ -> S.RPOptG
-
-sRPat :: SrcInfo loc => RPat loc -> S.RPat
-sRPat rp = case rp of
-    RPOp _ rp rop       -> S.RPOp (sRPat rp) (sRPatOp rop)
-    RPEither _ rp1 rp2  -> S.RPEither (sRPat rp1) (sRPat rp2)
-    RPSeq _ rps         -> S.RPSeq (map sRPat rps)
-    RPGuard _ p ss      -> S.RPGuard (sPat p) (map sStmt ss)
-    RPCAs _ n rp        -> S.RPCAs (sName n) (sRPat rp)
-    RPAs _ n rp         -> S.RPAs (sName n) (sRPat rp)
-    RPParen _ rp        -> S.RPParen (sRPat rp)
-    RPPat _ p           -> S.RPPat (sPat p)
-
-sPatField :: SrcInfo loc => PatField loc -> S.PatField
-sPatField pf = case pf of
-    PFieldPat _ qn p    -> S.PFieldPat (sQName qn) (sPat p)
-    PFieldPun _ n       -> S.PFieldPun (sName n)
-    PFieldWildcard _    -> S.PFieldWildcard
-
-sStmt :: SrcInfo loc => Stmt loc -> S.Stmt
-sStmt stmt = case stmt of
-    Generator l p e     -> S.Generator (getPointLoc l) (sPat p) (sExp e)
-    Qualifier _ e       -> S.Qualifier (sExp e)
-    LetStmt _ bs        -> S.LetStmt (sBinds bs)
-    RecStmt _ ss        -> S.RecStmt (map sStmt ss)
-
-sQualStmt :: SrcInfo loc => QualStmt loc -> S.QualStmt
-sQualStmt qs = case qs of
-    QualStmt     _ stmt     -> S.QualStmt (sStmt stmt)
-    ThenTrans    _ e        -> S.ThenTrans (sExp e)
-    ThenBy       _ e1 e2    -> S.ThenBy (sExp e1) (sExp e2)
-    GroupBy      _ e        -> S.GroupBy (sExp e)
-    GroupUsing   _ e        -> S.GroupUsing (sExp e)
-    GroupByUsing _ e1 e2    -> S.GroupByUsing (sExp e1) (sExp e2)
-
-sFieldUpdate :: SrcInfo loc => FieldUpdate loc -> S.FieldUpdate
-sFieldUpdate fu = case fu of
-    FieldUpdate _ qn e      -> S.FieldUpdate (sQName qn) (sExp e)
-    FieldPun _ n            -> S.FieldPun (sName n)
-    FieldWildcard _         -> S.FieldWildcard
-
-sAlt :: SrcInfo loc => Alt loc -> S.Alt
-sAlt (Alt l p galts mbs) = S.Alt (getPointLoc l) (sPat p) (sGuardedAlts galts) (maybe (S.BDecls []) sBinds mbs)
-
-sGuardedAlts :: SrcInfo loc => GuardedAlts loc -> S.GuardedAlts
-sGuardedAlts galts = case galts of
-    UnGuardedAlt _ e    -> S.UnGuardedAlt (sExp e)
-    GuardedAlts  _ gs   -> S.GuardedAlts (map sGuardedAlt gs)
-
-sGuardedAlt :: SrcInfo loc => GuardedAlt loc -> S.GuardedAlt
-sGuardedAlt (GuardedAlt l ss e) = S.GuardedAlt (getPointLoc l) (map sStmt ss) (sExp e)
− src/Language/Haskell/Exts/Annotated/Syntax.hs
@@ -1,2219 +0,0 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-}--------------------------------------------------------------------------------- |--- Module      :  Language.Haskell.Exts.Annotated.Syntax--- Copyright   :  (c) Niklas Broberg 2004-2009,---                (c) The GHC Team, 1997-2000--- License     :  BSD-style (see the file LICENSE.txt)------ Maintainer  :  Niklas Broberg, d00nibro@chalmers.se--- Stability   :  stable--- Portability :  portable------ A suite of datatypes describing the (semi-concrete) abstract syntax of Haskell 98--- <http://www.haskell.org/onlinereport/> plus registered extensions, including:------   * multi-parameter type classes with functional dependencies (MultiParamTypeClasses, FunctionalDependencies)------   * parameters of type class assertions are unrestricted (FlexibleContexts)------   * 'forall' types as universal and existential quantification (RankNTypes, ExistentialQuantification, etc)------   * pattern guards (PatternGuards)------   * implicit parameters (ImplicitParameters)------   * generalised algebraic data types (GADTs)------   * template haskell (TemplateHaskell)------   * empty data type declarations (EmptyDataDecls)------   * unboxed tuples (UnboxedTuples)------   * regular patterns (RegularPatterns)------   * HSP-style XML expressions and patterns (XmlSyntax)------ All nodes in the syntax tree are annotated with something of a user-definable data type.--- When parsing, this annotation will contain information about the source location that the--- particular node comes from.-----------------------------------------------------------------------------------module Language.Haskell.Exts.Annotated.Syntax (-    -- * Modules-    Module(..), ModuleHead(..), WarningText(..), ExportSpecList(..), ExportSpec(..),-    ImportDecl(..), ImportSpecList(..), ImportSpec(..), Assoc(..),-    -- * Declarations-    Decl(..), DeclHead(..), InstHead(..), Binds(..), IPBind(..),-    -- ** Type classes and instances-    ClassDecl(..), InstDecl(..), Deriving(..),-    -- ** Data type declarations-    DataOrNew(..), ConDecl(..), FieldDecl(..), QualConDecl(..), GadtDecl(..), BangType(..),-    -- ** Function bindings-    Match(..), Rhs(..), GuardedRhs(..),-    -- * Class Assertions and Contexts-    Context(..), FunDep(..), Asst(..),-    -- * Types-    Type(..), Boxed(..), Kind(..), TyVarBind(..),-    -- * Expressions-    Exp(..), Stmt(..), QualStmt(..), FieldUpdate(..),-    Alt(..), GuardedAlts(..), GuardedAlt(..), XAttr(..),-    -- * Patterns-    Pat(..), PatField(..), PXAttr(..), RPat(..), RPatOp(..),-    -- * Literals-    Literal(..),-    -- * Variables, Constructors and Operators-    ModuleName(..), QName(..), Name(..), QOp(..), Op(..),-    SpecialCon(..), CName(..), IPName(..), XName(..),--    -- * Template Haskell-    Bracket(..), Splice(..),--    -- * FFI-    Safety(..), CallConv(..),--    -- * Pragmas-    ModulePragma(..), Tool(..),-    Rule(..), RuleVar(..), Activation(..),-    Annotation(..),--    -- * Builtin names--    -- ** Modules-    prelude_mod, main_mod,-    -- ** Main function of a program-    main_name,-    -- ** Constructors-    unit_con_name, tuple_con_name, list_cons_name, unboxed_singleton_con_name,-    unit_con, tuple_con, unboxed_singleton_con,-    -- ** Special identifiers-    as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name,-    export_name, safe_name, unsafe_name, threadsafe_name, stdcall_name, ccall_name,-    -- ** Type constructors-    unit_tycon_name, fun_tycon_name, list_tycon_name, tuple_tycon_name, unboxed_singleton_tycon_name,-    unit_tycon, fun_tycon, list_tycon, tuple_tycon, unboxed_singleton_tycon,--    -- * Source coordinates-    -- SrcLoc(..),--    -- * Annotated trees-    Annotated(..), (=~=),-  ) where---#ifdef __GLASGOW_HASKELL__-#ifdef BASE4-import Data.Data-#else-import Data.Generics (Data(..),Typeable(..))-#endif-#endif----- | The name of a Haskell module.-data ModuleName l = ModuleName l String-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Constructors with special syntax.--- These names are never qualified, and always refer to builtin type or--- data constructors.-data SpecialCon l-    = UnitCon l             -- ^ unit type and data constructor @()@-    | ListCon l             -- ^ list type constructor @[]@-    | FunCon  l             -- ^ function type constructor @->@-    | TupleCon l Boxed Int  -- ^ /n/-ary tuple type and data-                            --   constructors @(,)@ etc, possibly boxed @(\#,\#)@-    | Cons l                -- ^ list data constructor @(:)@-    | UnboxedSingleCon l    -- ^ unboxed singleton tuple constructor @(\# \#)@-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | This type is used to represent qualified variables, and also--- qualified constructors.-data QName l-    = Qual    l (ModuleName l) (Name l) -- ^ name qualified with a module name-    | UnQual  l                (Name l) -- ^ unqualified local name-    | Special l (SpecialCon l)          -- ^ built-in constructor with special syntax-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | This type is used to represent variables, and also constructors.-data Name l-    = Ident  l String   -- ^ /varid/ or /conid/.-    | Symbol l String   -- ^ /varsym/ or /consym/-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An implicit parameter name.-data IPName l-    = IPDup l String -- ^ ?/ident/, non-linear implicit parameter-    | IPLin l String -- ^ %/ident/, linear implicit parameter-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Possibly qualified infix operators (/qop/), appearing in expressions.-data QOp l-    = QVarOp l (QName l) -- ^ variable operator (/qvarop/)-    | QConOp l (QName l) -- ^ constructor operator (/qconop/)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Operators appearing in @infix@ declarations are never qualified.-data Op l-    = VarOp l (Name l)    -- ^ variable operator (/varop/)-    | ConOp l (Name l)    -- ^ constructor operator (/conop/)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A name (/cname/) of a component of a class or data type in an @import@--- or export specification.-data CName l-    = VarName l (Name l) -- ^ name of a method or field-    | ConName l (Name l) -- ^ name of a data constructor-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A complete Haskell source module.-data Module l-    = Module l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l]-    -- ^ an ordinary Haskell module-    | XmlPage l (ModuleName l) [ModulePragma l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]-    -- ^ a module consisting of a single XML document. The ModuleName never appears in the source-    --   but is needed for semantic purposes, it will be the same as the file name.-    | XmlHybrid l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l]-                (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]-    -- ^ a hybrid module combining an XML document with an ordinary module-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The head of a module, including the name and export specification.-data ModuleHead l = ModuleHead l (ModuleName l) (Maybe (WarningText l)) (Maybe (ExportSpecList l))-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An explicit export specification.-data ExportSpecList l-    = ExportSpecList l [ExportSpec l]-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An item in a module's export specification.-data ExportSpec l-     = EVar l (QName l)                 -- ^ variable-     | EAbs l (QName l)                 -- ^ @T@:-                                        --   a class or datatype exported abstractly,-                                        --   or a type synonym.-     | EThingAll l (QName l)            -- ^ @T(..)@:-                                        --   a class exported with all of its methods, or-                                        --   a datatype exported with all of its constructors.-     | EThingWith l (QName l) [CName l] -- ^ @T(C_1,...,C_n)@:-                                        --   a class exported with some of its methods, or-                                        --   a datatype exported with some of its constructors.-     | EModuleContents l (ModuleName l) -- ^ @module M@:-                                        --   re-export a module.-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An import declaration.-data ImportDecl l = ImportDecl-    { importAnn :: l                   -- ^ annotation, used by parser for position of the @import@ keyword.-    , importModule :: (ModuleName l)   -- ^ name of the module imported.-    , importQualified :: Bool          -- ^ imported @qualified@?-    , importSrc :: Bool                -- ^ imported with @{-\# SOURCE \#-}@?-    , importPkg :: Maybe String        -- ^ imported with explicit package name-    , importAs :: Maybe (ModuleName l) -- ^ optional alias name in an @as@ clause.-    , importSpecs :: Maybe (ImportSpecList l)-            -- ^ optional list of import specifications.-    }-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An explicit import specification list.-data ImportSpecList l-    = ImportSpecList l Bool [ImportSpec l]-            -- A list of import specifications.-            -- The 'Bool' is 'True' if the names are excluded-            -- by @hiding@.-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An import specification, representing a single explicit item imported---   (or hidden) from a module.-data ImportSpec l-     = IVar l (Name l)                  -- ^ variable-     | IAbs l (Name l)                  -- ^ @T@:-                                        --   the name of a class, datatype or type synonym.-     | IThingAll l (Name l)             -- ^ @T(..)@:-                                        --   a class imported with all of its methods, or-                                        --   a datatype imported with all of its constructors.-     | IThingWith l (Name l) [CName l]  -- ^ @T(C_1,...,C_n)@:-                                        --   a class imported with some of its methods, or-                                        --   a datatype imported with some of its constructors.-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Associativity of an operator.-data Assoc l-     = AssocNone  l -- ^ non-associative operator (declared with @infix@)-     | AssocLeft  l -- ^ left-associative operator (declared with @infixl@).-     | AssocRight l -- ^ right-associative operator (declared with @infixr@)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A top-level declaration.-data Decl l-     = TypeDecl     l (DeclHead l) (Type l)-     -- ^ A type declaration-     | TypeFamDecl  l (DeclHead l) (Maybe (Kind l))-     -- ^ A type family declaration-     | DataDecl     l (DataOrNew l) (Maybe (Context l)) (DeclHead l)                  [QualConDecl l] (Maybe (Deriving l))-     -- ^ A data OR newtype declaration-     | GDataDecl    l (DataOrNew l) (Maybe (Context l)) (DeclHead l) (Maybe (Kind l)) [GadtDecl l]    (Maybe (Deriving l))-     -- ^ A data OR newtype declaration, GADT style-     | DataFamDecl  l {-data-}      (Maybe (Context l)) (DeclHead l) (Maybe (Kind l))-     -- ^ A data family declaration-     | TypeInsDecl  l (Type l) (Type l)-     -- ^ A type family instance declaration-     | DataInsDecl  l (DataOrNew l) (Type l)                  [QualConDecl l] (Maybe (Deriving l))-     -- ^ A data family instance declaration-     | GDataInsDecl l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l]    (Maybe (Deriving l))-     -- ^ A data family instance declaration, GADT style-     | ClassDecl    l (Maybe (Context l)) (DeclHead l) [FunDep l] (Maybe [ClassDecl l])-     -- ^ A declaration of a type class-     | InstDecl     l (Maybe (Context l)) (InstHead l) (Maybe [InstDecl l])-     -- ^ An declaration of a type class instance-     | DerivDecl    l (Maybe (Context l)) (InstHead l)-     -- ^ A standalone deriving declaration-     | InfixDecl    l (Assoc l) (Maybe Int) [Op l]-     -- ^ A declaration of operator fixity-     | DefaultDecl  l [Type l]-     -- ^ A declaration of default types-     | SpliceDecl   l (Exp l)-     -- ^ A Template Haskell splicing declaration-     | TypeSig      l [Name l] (Type l)-     -- ^ A type signature declaration-     | FunBind      l [Match l]-     -- ^ A set of function binding clauses-     | PatBind      l (Pat l) (Maybe (Type l)) (Rhs l) {-where-} (Maybe (Binds l))-     -- ^ A pattern binding-     | ForImp       l (CallConv l) (Maybe (Safety l)) (Maybe String) (Name l) (Type l)-     -- ^ A foreign import declaration-     | ForExp       l (CallConv l)                    (Maybe String) (Name l) (Type l)-     -- ^ A foreign export declaration-     | RulePragmaDecl   l [Rule l]-     -- ^ A RULES pragma-     | DeprPragmaDecl   l [([Name l], String)]-     -- ^ A DEPRECATED pragma-     | WarnPragmaDecl   l [([Name l], String)]-     -- ^ A WARNING pragma-     | InlineSig        l Bool (Maybe (Activation l)) (QName l)-     -- ^ An INLINE pragma-     | InlineConlikeSig l      (Maybe (Activation l)) (QName l)-     -- ^ An INLINE CONLIKE pragma-     | SpecSig          l                             (QName l) [Type l]-     -- ^ A SPECIALISE pragma-     | SpecInlineSig    l Bool (Maybe (Activation l)) (QName l) [Type l]-     -- ^ A SPECIALISE INLINE pragma-     | InstSig          l      (Maybe (Context l))    (InstHead l)-     -- ^ A SPECIALISE instance pragma-     | AnnPragma        l (Annotation l)-     -- ^ An ANN pragma-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An annotation through an ANN pragma.-data Annotation l-    = Ann       l (Name l)  (Exp l)-    -- ^ An annotation for a declared name.-    | TypeAnn   l (Name l)  (Exp l)-    -- ^ An annotation for a declared type.-    | ModuleAnn l           (Exp l)-    -- ^ An annotation for the defining module.-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif----- | A flag stating whether a declaration is a data or newtype declaration.-data DataOrNew l = DataType l | NewType l-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The head of a type or class declaration.-data DeclHead l-    = DHead l (Name l) [TyVarBind l]-    | DHInfix l (TyVarBind l) (Name l) (TyVarBind l)-    | DHParen l (DeclHead l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The head of an instance declaration.-data InstHead l-    = IHead l (QName l) [Type l]-    | IHInfix l (Type l) (QName l) (Type l)-    | IHParen l (InstHead l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A deriving clause following a data type declaration.-data Deriving l = Deriving l [InstHead l]-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A binding group inside a @let@ or @where@ clause.-data Binds l-    = BDecls  l [Decl l]     -- ^ An ordinary binding group-    | IPBinds l [IPBind l]   -- ^ A binding group for implicit parameters-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A binding of an implicit parameter.-data IPBind l = IPBind l (IPName l) (Exp l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Clauses of a function binding.-data Match l-     = Match l      (Name l) [Pat l]         (Rhs l) {-where-} (Maybe (Binds l))-        -- ^ A clause defined with prefix notation, i.e. the function name -        --  followed by its argument patterns, the right-hand side and an-        --  optional where clause.-     | InfixMatch l (Pat l) (Name l) [Pat l] (Rhs l) {-where-} (Maybe (Binds l))-        -- ^ A clause defined with infix notation, i.e. first its first argument-        --  pattern, then the function name, then its following argument(s),-        --  the right-hand side and an optional where clause.-        --  Note that there can be more than two arguments to a function declared-        --  infix, hence the list of pattern arguments.-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A single constructor declaration within a data type declaration,---   which may have an existential quantification binding.-data QualConDecl l-    = QualConDecl l-        {-forall-} (Maybe [TyVarBind l]) {- . -} (Maybe (Context l))-        {- => -} (ConDecl l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Declaration of an ordinary data constructor.-data ConDecl l-     = ConDecl l (Name l) [BangType l]-                -- ^ ordinary data constructor-     | InfixConDecl l (BangType l) (Name l) (BangType l)-                -- ^ infix data constructor-     | RecDecl l (Name l) [FieldDecl l]-                -- ^ record constructor-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Declaration of a (list of) named field(s).-data FieldDecl l = FieldDecl l [Name l] (BangType l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif----- | A single constructor declaration in a GADT data type declaration.-data GadtDecl l-    = GadtDecl l (Name l) (Type l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Declarations inside a class declaration.-data ClassDecl l-    = ClsDecl    l (Decl l)-            -- ^ ordinary declaration-    | ClsDataFam l (Maybe (Context l)) (DeclHead l) (Maybe (Kind l))-            -- ^ declaration of an associated data type-    | ClsTyFam   l                     (DeclHead l) (Maybe (Kind l))-            -- ^ declaration of an associated type synonym-    | ClsTyDef   l (Type l) (Type l)-            -- ^ default choice for an associated type synonym-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Declarations inside an instance declaration.-data InstDecl l-    = InsDecl   l (Decl l)-            -- ^ ordinary declaration-    | InsType   l (Type l) (Type l)-            -- ^ an associated type definition-    | InsData   l (DataOrNew l) (Type l) [QualConDecl l] (Maybe (Deriving l))-            -- ^ an associated data type implementation-    | InsGData  l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l] (Maybe (Deriving l))-            -- ^ an associated data type implemented using GADT style-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The type of a constructor argument or field, optionally including---   a strictness annotation.-data BangType l-     = BangedTy   l (Type l) -- ^ strict component, marked with \"@!@\"-     | UnBangedTy l (Type l) -- ^ non-strict component-     | UnpackedTy l (Type l) -- ^ unboxed component, marked with an UNPACK pragma-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The right hand side of a function or pattern binding.-data Rhs l-     = UnGuardedRhs l (Exp l) -- ^ unguarded right hand side (/exp/)-     | GuardedRhss  l [GuardedRhs l]-                -- ^ guarded right hand side (/gdrhs/)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A guarded right hand side @|@ /stmts/ @=@ /exp/.---   The guard is a series of statements when using pattern guards,---   otherwise it will be a single qualifier expression.-data GuardedRhs l-     = GuardedRhs l [Stmt l] (Exp l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A type qualified with a context.---   An unqualified type has an empty context.-data Type l-     = TyForall l-        (Maybe [TyVarBind l])-        (Maybe (Context l))-        (Type l)                                -- ^ qualified type-     | TyFun   l (Type l) (Type l)              -- ^ function type-     | TyTuple l Boxed [Type l]                 -- ^ tuple type, possibly boxed-     | TyList  l (Type l)                       -- ^ list syntax, e.g. [a], as opposed to [] a-     | TyApp   l (Type l) (Type l)              -- ^ application of a type constructor-     | TyVar   l (Name l)                       -- ^ type variable-     | TyCon   l (QName l)                      -- ^ named type or type constructor-     | TyParen l (Type l)                       -- ^ type surrounded by parentheses-     | TyInfix l (Type l) (QName l) (Type l)    -- ^ infix type constructor-     | TyKind  l (Type l) (Kind l)              -- ^ type with explicit kind signature-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Flag denoting whether a tuple is boxed or unboxed.-data Boxed = Boxed | Unboxed-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A type variable declaration, optionally with an explicit kind annotation.-data TyVarBind l-    = KindedVar   l (Name l) (Kind l)  -- ^ variable binding with kind annotation-    | UnkindedVar l (Name l)           -- ^ ordinary variable binding-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An explicit kind annotation.-data Kind l-    = KindStar  l                    -- ^ @*@, the kind of types-    | KindBang  l                    -- ^ @!@, the kind of unboxed types-    | KindFn    l (Kind l) (Kind l)  -- ^ @->@, the kind of a type constructor-    | KindParen l (Kind l)           -- ^ a parenthesised kind-    | KindVar   l (Name l)           -- ^ a kind variable (as-of-yet unsupported by compilers)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif----- | A functional dependency, given on the form---   l1 l2 ... ln -> r2 r3 .. rn-data FunDep l-    = FunDep l [Name l] [Name l]-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A context is a set of assertions-data Context l-    = CxSingle l (Asst l)-    | CxTuple  l [Asst l]-    | CxParen  l (Context l)-    | CxEmpty  l-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Class assertions.---   In Haskell 98, the argument would be a /tyvar/, but this definition---   allows multiple parameters, and allows them to be /type/s.---   Also extended with support for implicit parameters and equality constraints.-data Asst l-        = ClassA l (QName l) [Type l]           -- ^ ordinary class assertion-        | InfixA l (Type l) (QName l) (Type l)  -- ^ class assertion where the class name is given infix-        | IParam l (IPName l) (Type l)          -- ^ implicit parameter assertion-        | EqualP l (Type l) (Type l)            -- ^ type equality constraint-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | /literal/--- Values of this type hold the abstract value of the literal, along with the--- precise string representation used.  For example, @10@, @0o12@ and @0xa@--- have the same value representation, but each carry a different string representation.-data Literal l-    = Char       l Char     String     -- ^ character literal-    | String     l String   String     -- ^ string literal-    | Int        l Integer  String     -- ^ integer literal-    | Frac       l Rational String     -- ^ floating point literal-    | PrimInt    l Integer  String     -- ^ unboxed integer literal-    | PrimWord   l Integer  String     -- ^ unboxed word literal-    | PrimFloat  l Rational String     -- ^ unboxed float literal-    | PrimDouble l Rational String     -- ^ unboxed double literal-    | PrimChar   l Char     String     -- ^ unboxed character literal-    | PrimString l String   String     -- ^ unboxed string literal-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Haskell expressions.-data Exp l-    = Var l (QName l)                       -- ^ variable-    | IPVar l (IPName l)                    -- ^ implicit parameter variable-    | Con l (QName l)                       -- ^ data constructor-    | Lit l (Literal l)                     -- ^ literal constant-    | InfixApp l (Exp l) (QOp l) (Exp l)    -- ^ infix application-    | App l (Exp l) (Exp l)                 -- ^ ordinary application-    | NegApp l (Exp l)                      -- ^ negation expression @-/exp/@ (unary minus)-    | Lambda l [Pat l] (Exp l)              -- ^ lambda expression-    | Let l (Binds l) (Exp l)               -- ^ local declarations with @let@ ... @in@ ...-    | If l (Exp l) (Exp l) (Exp l)          -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/-    | Case l (Exp l) [Alt l]                -- ^ @case@ /exp/ @of@ /alts/-    | Do l [Stmt l]                         -- ^ @do@-expression:-                                            --   the last statement in the list-                                            --   should be an expression.-    | MDo l [Stmt l]                        -- ^ @mdo@-expression-    | Tuple l [Exp l]                       -- ^ tuple expression-    | TupleSection l [Maybe (Exp l)]        -- ^ tuple section expression, e.g. @(,,3)@-    | List l [Exp l]                        -- ^ list expression-    | Paren l (Exp l)                       -- ^ parenthesised expression-    | LeftSection l (Exp l) (QOp l)         -- ^ left section @(@/exp/ /qop/@)@-    | RightSection l (QOp l) (Exp l)        -- ^ right section @(@/qop/ /exp/@)@-    | RecConstr l (QName l) [FieldUpdate l] -- ^ record construction expression-    | RecUpdate l (Exp l)   [FieldUpdate l] -- ^ record update expression-    | EnumFrom l (Exp l)                    -- ^ unbounded arithmetic sequence,-                                            --   incrementing by 1: @[from ..]@-    | EnumFromTo l (Exp l) (Exp l)          -- ^ bounded arithmetic sequence,-                                            --   incrementing by 1 @[from .. to]@-    | EnumFromThen l (Exp l) (Exp l)        -- ^ unbounded arithmetic sequence,-                                            --   with first two elements given @[from, then ..]@-    | EnumFromThenTo l (Exp l) (Exp l) (Exp l)-                                            -- ^ bounded arithmetic sequence,-                                            --   with first two elements given @[from, then .. to]@-    | ListComp l (Exp l) [QualStmt l]       -- ^ ordinary list comprehension-    | ParComp  l (Exp l) [[QualStmt l]]     -- ^ parallel list comprehension-    | ExpTypeSig l (Exp l) (Type l)         -- ^ expression with explicit type signature--    | VarQuote l (QName l)                  -- ^ @'x@ for template haskell reifying of expressions-    | TypQuote l (QName l)                  -- ^ @''T@ for template haskell reifying of types-    | BracketExp l (Bracket l)              -- ^ template haskell bracket expression-    | SpliceExp l (Splice l)                -- ^ template haskell splice expression-    | QuasiQuote l String String            -- ^ quasi-quotaion: @[$/name/| /string/ |]@---- Hsx-    | XTag l (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]-                                            -- ^ xml element, with attributes and children-    | XETag l (XName l) [XAttr l] (Maybe (Exp l))-                                            -- ^ empty xml element, with attributes-    | XPcdata l String                      -- ^ PCDATA child element-    | XExpTag l (Exp l)                     -- ^ escaped haskell expression inside xml---- Pragmas-    | CorePragma l      String (Exp l)      -- ^ CORE pragma-    | SCCPragma  l      String (Exp l)      -- ^ SCC pragma-    | GenPragma  l      String (Int, Int) (Int, Int) (Exp l)-                                            -- ^ GENERATED pragma---- Arrows-    | Proc            l (Pat l) (Exp l)     -- ^ arrows proc: @proc@ /pat/ @->@ /exp/-    | LeftArrApp      l (Exp l) (Exp l)     -- ^ arrow application (from left): /exp/ @-<@ /exp/-    | RightArrApp     l (Exp l) (Exp l)     -- ^ arrow application (from right): /exp/ @>-@ /exp/-    | LeftArrHighApp  l (Exp l) (Exp l)     -- ^ higher-order arrow application (from left): /exp/ @-<<@ /exp/-    | RightArrHighApp l (Exp l) (Exp l)     -- ^ higher-order arrow application (from right): /exp/ @>>-@ /exp/-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The name of an xml element or attribute,---   possibly qualified with a namespace.-data XName l-    = XName l String              -- <name ...-    | XDomName l String String    -- <dom:name ...-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An xml attribute, which is a name-expression pair.-data XAttr l = XAttr l (XName l) (Exp l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A template haskell bracket expression.-data Bracket l-    = ExpBracket l (Exp l)        -- ^ expression bracket: @[| ... |]@-    | PatBracket l (Pat l)        -- ^ pattern bracket: @[p| ... |]@-    | TypeBracket l (Type l)      -- ^ type bracket: @[t| ... |]@-    | DeclBracket l [Decl l]      -- ^ declaration bracket: @[d| ... |]@-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A template haskell splice expression-data Splice l-    = IdSplice l String           -- ^ variable splice: @$var@-    | ParenSplice l (Exp l)       -- ^ parenthesised expression splice: @$(/exp/)@-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The safety of a foreign function call.-data Safety l-    = PlayRisky l         -- ^ unsafe-    | PlaySafe l Bool     -- ^ safe ('False') or threadsafe ('True')-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The calling convention of a foreign function call.-data CallConv l-    = StdCall l-    | CCall l-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A top level options pragma, preceding the module header.-data ModulePragma l-    = LanguagePragma   l [Name l]  -- ^ LANGUAGE pragma-    | OptionsPragma    l (Maybe Tool) String-                        -- ^ OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC-    | AnnModulePragma  l (Annotation l)-                        -- ^ ANN pragma with module scope-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Recognised tools for OPTIONS pragmas.-data Tool = GHC | HUGS | NHC98 | YHC | HADDOCK | UnknownTool String-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Activation clause of a RULES pragma.-data Activation l-    = ActiveFrom   l Int-    | ActiveUntil  l Int-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The body of a RULES pragma.-data Rule l-    = Rule l String (Maybe (Activation l)) (Maybe [RuleVar l]) (Exp l) (Exp l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Variables used in a RULES pragma, optionally annotated with types-data RuleVar l-    = RuleVar l (Name l)-    | TypedRuleVar l (Name l) (Type l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Warning text to optionally use in the module header of e.g.---   a deprecated module.-data WarningText l-    = DeprText l String-    | WarnText l String-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif----- | A pattern, to be matched against a value.-data Pat l-    = PVar l (Name l)                       -- ^ variable-    | PLit l (Literal l)                    -- ^ literal constant-    | PNeg l (Pat l)                        -- ^ negated pattern-    | PNPlusK l (Name l) Integer            -- ^ n+k pattern-    | PInfixApp l (Pat l) (QName l) (Pat l) -- ^ pattern with an infix data constructor-    | PApp l (QName l) [Pat l]              -- ^ data constructor and argument patterns-    | PTuple l [Pat l]                      -- ^ tuple pattern-    | PList l [Pat l]                       -- ^ list pattern-    | PParen l (Pat l)                      -- ^ parenthesized pattern-    | PRec l (QName l) [PatField l]         -- ^ labelled pattern, record style-    | PAsPat l (Name l) (Pat l)             -- ^ @\@@-pattern-    | PWildCard l                           -- ^ wildcard pattern: @_@-    | PIrrPat l (Pat l)                     -- ^ irrefutable pattern: @~/pat/@-    | PatTypeSig l (Pat l) (Type l)         -- ^ pattern with type signature-    | PViewPat l (Exp l) (Pat l)            -- ^ view patterns of the form @(/exp/ -> /pat/)@-    | PRPat l [RPat l]                      -- ^ regular list pattern-    | PXTag l (XName l) [PXAttr l] (Maybe (Pat l)) [Pat l]-                                            -- ^ XML element pattern-    | PXETag l (XName l) [PXAttr l] (Maybe (Pat l))-                                            -- ^ XML singleton element pattern-    | PXPcdata l String                     -- ^ XML PCDATA pattern-    | PXPatTag l (Pat l)                    -- ^ XML embedded pattern-    | PXRPats  l [RPat l]                   -- ^ XML regular list pattern-    | PExplTypeArg l (QName l) (Type l)     -- ^ Explicit generics style type argument e.g. @f {| Int |} x = ...@-    | PQuasiQuote l String String           -- ^ quasi quote pattern: @[$/name/| /string/ |]@-    | PBangPat l (Pat l)                    -- ^ strict (bang) pattern: @f !x = ...@-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An XML attribute in a pattern.-data PXAttr l = PXAttr l (XName l) (Pat l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A regular pattern operator.-data RPatOp l-    = RPStar  l  -- ^ @*@ = 0 or more-    | RPStarG l  -- ^ @*!@ = 0 or more, greedy-    | RPPlus  l  -- ^ @+@ = 1 or more-    | RPPlusG l  -- ^ @+!@ = 1 or more, greedy-    | RPOpt   l  -- ^ @?@ = 0 or 1-    | RPOptG  l  -- ^ @?!@ = 0 or 1, greedy-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An entity in a regular pattern.-data RPat l-    = RPOp l (RPat l) (RPatOp l)   -- ^ operator pattern, e.g. pat*-    | RPEither l (RPat l) (RPat l) -- ^ choice pattern, e.g. (1 | 2)-    | RPSeq l [RPat l]             -- ^ sequence pattern, e.g. (| 1, 2, 3 |)-    | RPGuard l (Pat l) [Stmt l]   -- ^ guarded pattern, e.g. (| p | p < 3 |)-    | RPCAs l (Name l) (RPat l)    -- ^ non-linear variable binding, e.g. (foo\@:(1 | 2))*-    | RPAs l (Name l) (RPat l)     -- ^ linear variable binding, e.g. foo\@(1 | 2)-    | RPParen l (RPat l)           -- ^ parenthesised pattern, e.g. (2*)-    | RPPat l (Pat l)              -- ^ an ordinary pattern-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An /fpat/ in a labeled record pattern.-data PatField l-    = PFieldPat l (QName l) (Pat l)     -- ^ ordinary label-pattern pair-    | PFieldPun l (Name l)              -- ^ record field pun-    | PFieldWildcard l                  -- ^ record field wildcard-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A statement, representing both a /stmt/ in a @do@-expression,---   an ordinary /qual/ in a list comprehension, as well as a /stmt/---   in a pattern guard.-data Stmt l-    = Generator l (Pat l) (Exp l)-                            -- ^ a generator: /pat/ @<-@ /exp/-    | Qualifier l (Exp l)   -- ^ an /exp/ by itself: in a @do@-expression,-                            --   an action whose result is discarded;-                            --   in a list comprehension and pattern guard,-                            --   a guard expression-    | LetStmt l (Binds l)   -- ^ local bindings-    | RecStmt l [Stmt l]    -- ^ a recursive binding group for arrows-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A general /transqual/ in a list comprehension,---   which could potentially be a transform of the kind---   enabled by TransformListComp.-data QualStmt l-    = QualStmt     l (Stmt l)         -- ^ an ordinary statement-    | ThenTrans    l (Exp l)          -- ^ @then@ /exp/-    | ThenBy       l (Exp l) (Exp l)  -- ^ @then@ /exp/ @by@ /exp/-    | GroupBy      l (Exp l)          -- ^ @then@ @group@ @by@ /exp/-    | GroupUsing   l (Exp l)          -- ^ @then@ @group@ @using@ /exp/-    | GroupByUsing l (Exp l) (Exp l)  -- ^ @then@ @group@ @by@ /exp/ @using@ /exp/-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An /fbind/ in a labeled construction or update expression.-data FieldUpdate l-    = FieldUpdate l (QName l) (Exp l)    -- ^ ordinary label-expresion pair-    | FieldPun l (Name l)                -- ^ record field pun-    | FieldWildcard l                    -- ^ record field wildcard-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An /alt/ alternative in a @case@ expression.-data Alt l-    = Alt l (Pat l) (GuardedAlts l) (Maybe (Binds l))-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The right-hand sides of a @case@ alternative,---   which may be a single right-hand side or a---   set of guarded ones.-data GuardedAlts l-    = UnGuardedAlt l (Exp l)         -- ^ @->@ /exp/-    | GuardedAlts  l [GuardedAlt l]  -- ^ /gdpat/-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A guarded case alternative @|@ /stmts/ @->@ /exp/.-data GuardedAlt l-    = GuardedAlt l [Stmt l] (Exp l)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---------------------------------------------------------------------------------- Builtin names.--prelude_mod, main_mod :: l -> ModuleName l-prelude_mod l = ModuleName l "Prelude"-main_mod    l = ModuleName l "Main"--main_name :: l -> Name l-main_name l = Ident l "main"--unit_con_name :: l -> QName l-unit_con_name l = Special l (UnitCon l)--tuple_con_name :: l -> Boxed -> Int -> QName l-tuple_con_name l b i = Special l (TupleCon l b (i+1))--list_cons_name :: l -> QName l-list_cons_name l = Special l (Cons l)--unboxed_singleton_con_name :: l -> QName l-unboxed_singleton_con_name l = Special l (UnboxedSingleCon l)--unit_con :: l -> Exp l-unit_con l = Con l $ unit_con_name l--tuple_con :: l -> Boxed -> Int -> Exp l-tuple_con l b i = Con l (tuple_con_name l b i)--unboxed_singleton_con :: l -> Exp l-unboxed_singleton_con l = Con l (unboxed_singleton_con_name l)--as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name :: l -> Name l-as_name        l = Ident  l "as"-qualified_name l = Ident  l "qualified"-hiding_name    l = Ident  l "hiding"-minus_name     l = Symbol l "-"-bang_name      l = Symbol l "!"-dot_name       l = Symbol l "."-star_name      l = Symbol l "*"--export_name, safe_name, unsafe_name, threadsafe_name, stdcall_name, ccall_name :: l -> Name l-export_name     l = Ident l "export"-safe_name       l = Ident l "safe"-unsafe_name     l = Ident l "unsafe"-threadsafe_name l = Ident l "threadsafe"-stdcall_name    l = Ident l "stdcall"-ccall_name      l = Ident l "ccall"--unit_tycon_name, fun_tycon_name, list_tycon_name, unboxed_singleton_tycon_name :: l -> QName l-unit_tycon_name l = unit_con_name l-fun_tycon_name  l = Special l (FunCon l)-list_tycon_name l = Special l (ListCon l)-unboxed_singleton_tycon_name l = Special l (UnboxedSingleCon l)--tuple_tycon_name :: l -> Boxed -> Int -> QName l-tuple_tycon_name l b i = tuple_con_name l b i--unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: l -> Type l-unit_tycon l = TyCon l $ unit_tycon_name l-fun_tycon  l = TyCon l $ fun_tycon_name  l-list_tycon l = TyCon l $ list_tycon_name l-unboxed_singleton_tycon l = TyCon l $ unboxed_singleton_tycon_name l--tuple_tycon :: l -> Boxed -> Int -> Type l-tuple_tycon l b i = TyCon l (tuple_tycon_name l b i)---------------------------------------------------------------------------------- AST traversal, boiler-plate style---- | Test if two AST elements are equal modulo annotations.-(=~=) :: (Annotated a, Eq (a ())) => a l1 -> a l2 -> Bool-a =~= b = fmap (const ()) a == fmap (const ()) b--instance Functor ModuleName where-    fmap f (ModuleName l s) = ModuleName (f l) s--instance Functor SpecialCon where-    fmap f sc = case sc of-        UnitCon l       -> UnitCon (f l)-        ListCon l       -> ListCon (f l)-        FunCon  l       -> FunCon  (f l)-        TupleCon l b n  -> TupleCon (f l) b n-        Cons l          -> Cons (f l)-        UnboxedSingleCon l  -> UnboxedSingleCon (f l)--instance Functor QName where-    fmap f qn = case qn of-        Qual    l mn n  -> Qual    (f l) (fmap f mn) (fmap f n)-        UnQual  l    n  -> UnQual  (f l)             (fmap f n)-        Special l sc    -> Special (f l) (fmap f sc)--instance Functor Name where-    fmap f (Ident  l s) = Ident  (f l) s-    fmap f (Symbol l s) = Symbol (f l) s--instance Functor IPName where-    fmap f (IPDup l s) = IPDup (f l) s-    fmap f (IPLin l s) = IPLin (f l) s--instance Functor QOp where-    fmap f (QVarOp l qn) = QVarOp (f l) (fmap f qn)-    fmap f (QConOp l qn) = QConOp (f l) (fmap f qn)--instance Functor Op where-    fmap f (VarOp l n) = VarOp (f l) (fmap f n)-    fmap f (ConOp l n) = ConOp (f l) (fmap f n)--instance Functor CName where-    fmap f (VarName l n) = VarName (f l) (fmap f n)-    fmap f (ConName l n) = ConName (f l) (fmap f n)--instance Functor Module where-    fmap f (Module l mmh ops iss dcls) =-        Module (f l) (fmap (fmap f) mmh) (map (fmap f) ops) (map (fmap f) iss) (map (fmap f) dcls)-    fmap f (XmlPage l mn os xn xas me es) =-        XmlPage (f l) (fmap f mn) (map (fmap f) os) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)-    fmap f (XmlHybrid l mmh ops iss dcls xn xas me es) =-        XmlHybrid (f l) (fmap (fmap f) mmh) (map (fmap f) ops) (map (fmap f) iss) (map (fmap f) dcls)-                (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)--instance Functor ModuleHead where-    fmap f (ModuleHead l mn mwt mexpl) =-        ModuleHead (f l) (fmap f mn) (fmap (fmap f) mwt) (fmap (fmap f) mexpl)--instance Functor ExportSpecList where-    fmap f (ExportSpecList l ess) = ExportSpecList (f l) (map (fmap f) ess)--instance Functor ExportSpec where-    fmap f es = case es of-        EVar l qn       -> EVar (f l) (fmap f qn)-        EAbs l qn       -> EAbs (f l) (fmap f qn)-        EThingAll l qn  -> EThingAll (f l) (fmap f qn)-        EThingWith l qn cns -> EThingWith (f l) (fmap f qn) (map (fmap f) cns)-        EModuleContents l mn    -> EModuleContents (f l) (fmap f mn)--instance Functor ImportDecl where-    fmap f (ImportDecl l mn qual src pkg mmn mis) =-        ImportDecl (f l) (fmap f mn) qual src pkg (fmap (fmap f) mmn) (fmap (fmap f) mis)--instance Functor ImportSpecList where-    fmap f (ImportSpecList l b iss) = ImportSpecList (f l) b (map (fmap f) iss)--instance Functor ImportSpec where-    fmap f is = case is of-        IVar l n        -> IVar (f l) (fmap f n)-        IAbs l n        -> IAbs (f l) (fmap f n)-        IThingAll l n   -> IThingAll (f l) (fmap f n)-        IThingWith l n cns  -> IThingWith (f l) (fmap f n) (map (fmap f) cns)--instance Functor Assoc where-    fmap f (AssocNone  l) = AssocNone  (f l)-    fmap f (AssocLeft  l) = AssocLeft  (f l)-    fmap f (AssocRight l) = AssocRight (f l)--instance Functor Decl where-    fmap f decl = case decl of-        TypeDecl     l dh t      -> TypeDecl    (f l) (fmap f dh) (fmap f t)-        TypeFamDecl  l dh mk     -> TypeFamDecl (f l) (fmap f dh) (fmap (fmap f) mk)-        DataDecl     l dn mcx dh cds ders ->-            DataDecl (f l) (fmap f dn) (fmap (fmap f) mcx) (fmap f dh) (map (fmap f) cds) (fmap (fmap f) ders)-        GDataDecl    l dn mcx dh mk gds ders ->-            GDataDecl (f l) (fmap f dn) (fmap (fmap f) mcx) (fmap f dh) (fmap (fmap f) mk) (map (fmap f) gds) (fmap (fmap f) ders)-        DataFamDecl  l mcx dh mk          -> DataFamDecl (f l) (fmap (fmap f) mcx) (fmap f dh) (fmap (fmap f) mk)-        TypeInsDecl  l t1 t2              -> TypeInsDecl (f l) (fmap f t1) (fmap f t2)-        DataInsDecl  l dn t cds ders      -> DataInsDecl (f l) (fmap f dn) (fmap f t) (map (fmap f) cds) (fmap (fmap f) ders)-        GDataInsDecl l dn t mk gds ders   -> GDataInsDecl (f l) (fmap f dn) (fmap f t) (fmap (fmap f) mk) (map (fmap f) gds) (fmap (fmap f) ders)-        ClassDecl    l mcx dh fds mcds    -> ClassDecl (f l) (fmap (fmap f) mcx) (fmap f dh) (map (fmap f) fds) (fmap (map (fmap f)) mcds)-        InstDecl     l mcx ih mids        -> InstDecl  (f l) (fmap (fmap f) mcx) (fmap f ih) (fmap (map (fmap f)) mids)-        DerivDecl    l mcx ih             -> DerivDecl (f l) (fmap (fmap f) mcx) (fmap f ih)-        InfixDecl    l a k ops            -> InfixDecl (f l) (fmap f a) k (map (fmap f) ops)-        DefaultDecl  l ts                 -> DefaultDecl (f l) (map (fmap f) ts)-        SpliceDecl   l sp                 -> SpliceDecl (f l) (fmap f sp)-        TypeSig      l ns t               -> TypeSig (f l) (map (fmap f) ns) (fmap f t)-        FunBind      l ms                 -> FunBind (f l) (map (fmap f) ms)-        PatBind      l p mt rhs bs        -> PatBind (f l) (fmap f p) (fmap (fmap f) mt) (fmap f rhs) (fmap (fmap f) bs)-        ForImp       l cc msf s n t       -> ForImp (f l) (fmap f cc) (fmap (fmap f) msf) s (fmap f n) (fmap f t)-        ForExp       l cc     s n t       -> ForExp (f l) (fmap f cc)                     s (fmap f n) (fmap f t)-        RulePragmaDecl   l rs             -> RulePragmaDecl (f l) (map (fmap f) rs)-        DeprPragmaDecl   l nss            -> DeprPragmaDecl (f l) (map (wp f) nss)-        WarnPragmaDecl   l nss            -> WarnPragmaDecl (f l) (map (wp f) nss)-        InlineSig        l b mact qn      -> InlineSig (f l) b (fmap (fmap f) mact) (fmap f qn)-        InlineConlikeSig l   mact qn      -> InlineConlikeSig (f l) (fmap (fmap f) mact) (fmap f qn)-        SpecInlineSig    l b mact qn ts   -> SpecInlineSig (f l) b (fmap (fmap f) mact) (fmap f qn) (map (fmap f) ts)-        SpecSig          l        qn ts   -> SpecSig (f l) (fmap f qn) (map (fmap f) ts)-        InstSig          l mcx ih         -> InstSig (f l) (fmap (fmap f) mcx) (fmap f ih)-      where wp f (ns, s) = (map (fmap f) ns, s)--instance Functor Annotation where-    fmap f (Ann     l n e) = Ann     (f l) (fmap f n) (fmap f e)-    fmap f (TypeAnn l n e) = TypeAnn (f l) (fmap f n) (fmap f e)-    fmap f (ModuleAnn l e) = ModuleAnn (f l) (fmap f e)--instance Functor DataOrNew where-    fmap f (DataType l) = DataType (f l)-    fmap f (NewType  l) = NewType  (f l)--instance Functor DeclHead where-    fmap f (DHead l n tvs)       = DHead (f l) (fmap f n) (map (fmap f) tvs)-    fmap f (DHInfix l tva n tvb) = DHInfix (f l) (fmap f tva) (fmap f n) (fmap f tvb)-    fmap f (DHParen l dh)        = DHParen (f l) (fmap f dh)--instance Functor InstHead where-    fmap f (IHead l qn ts)       = IHead (f l) (fmap f qn) (map (fmap f) ts)-    fmap f (IHInfix l ta qn tb)  = IHInfix (f l) (fmap f ta) (fmap f qn) (fmap f tb)-    fmap f (IHParen l ih)        = IHParen (f l) (fmap f ih)--instance Functor Deriving where-    fmap f (Deriving l ihs) = Deriving (f l) (map (fmap f) ihs)--instance Functor Binds where-    fmap f (BDecls  l decls) = BDecls (f l) (map (fmap f) decls)-    fmap f (IPBinds l ibs)   = IPBinds (f l) (map (fmap f) ibs)--instance Functor IPBind where-    fmap f (IPBind l ipn e) = IPBind (f l) (fmap f ipn) (fmap f e)--instance Functor Match where-    fmap f (Match l n ps rhs bs) =-        Match (f l) (fmap f n) (map (fmap f) ps) (fmap f rhs) (fmap (fmap f) bs)-    fmap f (InfixMatch l a n ps rhs bs) =-        InfixMatch (f l) (fmap f a) (fmap f n) (map (fmap f) ps) (fmap f rhs) (fmap (fmap f) bs)--instance Functor QualConDecl where-    fmap f (QualConDecl l mtvs mcx cd) = QualConDecl (f l) (fmap (map (fmap f)) mtvs) (fmap (fmap f) mcx) (fmap f cd)--instance Functor ConDecl where-    fmap f (ConDecl l n bts) = ConDecl (f l) (fmap f n) (map (fmap f) bts)-    fmap f (InfixConDecl l ta n tb) = InfixConDecl (f l) (fmap f ta) (fmap f n) (fmap f tb)-    fmap f (RecDecl l n fds) = RecDecl (f l) (fmap f n) (map (fmap f) fds)--instance Functor FieldDecl where-     fmap f (FieldDecl l ns t) = FieldDecl (f l) (map (fmap f) ns) (fmap f t)--instance Functor GadtDecl where-    fmap f (GadtDecl l n t) = GadtDecl (f l) (fmap f n) (fmap f t)--instance Functor ClassDecl where-    fmap f (ClsDecl    l d) = ClsDecl (f l) (fmap f d)-    fmap f (ClsDataFam l mcx dh mk) = ClsDataFam (f l) (fmap (fmap f) mcx) (fmap f dh) (fmap (fmap f) mk)-    fmap f (ClsTyFam   l     dh mk) = ClsTyFam   (f l)                     (fmap f dh) (fmap (fmap f) mk)-    fmap f (ClsTyDef   l t1 t2) = ClsTyDef (f l) (fmap f t1) (fmap f t2)--instance Functor InstDecl where-    fmap f id = case id of-        InsDecl   l d           -> InsDecl (f l) (fmap f d)-        InsType   l t1 t2       -> InsType (f l) (fmap f t1) (fmap f t2)-        InsData   l dn t    cds ders-            -> InsData  (f l) (fmap f dn) (fmap f t)                    (map (fmap f) cds) (fmap (fmap f) ders)-        InsGData  l dn t mk gds ders-            -> InsGData (f l) (fmap f dn) (fmap f t) (fmap (fmap f) mk) (map (fmap f) gds) (fmap (fmap f) ders)---        InsInline l b mact qn   -> InsInline (f l) b (fmap (fmap f) mact) (fmap f qn)--instance Functor BangType where-     fmap f (BangedTy   l t) = BangedTy (f l) (fmap f t)-     fmap f (UnBangedTy l t) = UnBangedTy (f l) (fmap f t)-     fmap f (UnpackedTy l t) = UnpackedTy (f l) (fmap f t)--instance Functor Rhs where-     fmap f (UnGuardedRhs l e) = UnGuardedRhs (f l) (fmap f e)-     fmap f (GuardedRhss  l grhss) = GuardedRhss (f l) (map (fmap f) grhss)--instance Functor GuardedRhs where-     fmap f (GuardedRhs l ss e) = GuardedRhs (f l) (map (fmap f) ss) (fmap f e)--instance Functor Type where-    fmap f t = case t of-      TyForall l mtvs mcx t         -> TyForall (f l) (fmap (map (fmap f)) mtvs) (fmap (fmap f) mcx) (fmap f t)-      TyFun   l t1 t2               -> TyFun (f l) (fmap f t1) (fmap f t2)-      TyTuple l b ts                -> TyTuple (f l) b (map (fmap f) ts)-      TyList  l t                   -> TyList (f l) (fmap f t)-      TyApp   l t1 t2               -> TyApp (f l) (fmap f t1) (fmap f t2)-      TyVar   l n                   -> TyVar (f l) (fmap f n)-      TyCon   l qn                  -> TyCon (f l) (fmap f qn)-      TyParen l t                   -> TyParen (f l) (fmap f t)-      TyInfix l ta qn tb            -> TyInfix (f l) (fmap f ta) (fmap f qn) (fmap f tb)-      TyKind  l t k                 -> TyKind (f l) (fmap f t) (fmap f k)--instance Functor TyVarBind where-    fmap f (KindedVar   l n k) = KindedVar (f l) (fmap f n) (fmap f k)-    fmap f (UnkindedVar l n)   = UnkindedVar (f l) (fmap f n)--instance Functor Kind where-    fmap f (KindStar  l)   = KindStar (f l)-    fmap f (KindBang  l)   = KindBang (f l)-    fmap f (KindFn    l k1 k2) = KindFn (f l) (fmap f k1) (fmap f k2)-    fmap f (KindParen l k) = KindParen (f l) (fmap f k)-    fmap f (KindVar   l n) = KindVar (f l) (fmap f n)--instance Functor FunDep where-    fmap f (FunDep l ns1 ns2) = FunDep (f l) (map (fmap f) ns1) (map (fmap f) ns2)--instance Functor Context where-    fmap f (CxSingle l asst) = CxSingle (f l) (fmap f asst)-    fmap f (CxTuple l assts) = CxTuple (f l) (map (fmap f) assts)-    fmap f (CxParen l ctxt)  = CxParen (f l) (fmap f ctxt)-    fmap f (CxEmpty l)       = CxEmpty (f l)--instance Functor Asst where-    fmap f asst = case asst of-        ClassA l qn ts      -> ClassA (f l) (fmap f qn) (map (fmap f) ts)-        InfixA l ta qn tb   -> InfixA (f l) (fmap f ta) (fmap f qn) (fmap f tb)-        IParam l ipn t      -> IParam (f l) (fmap f ipn) (fmap f t)-        EqualP l t1 t2      -> EqualP (f l) (fmap f t1) (fmap f t2)--instance Functor Literal where-    fmap f lit = case lit of-        Char    l c rw    -> Char   (f l) c rw-        String  l s rw    -> String (f l) s rw-        Int     l i rw    -> Int    (f l) i rw-        Frac    l r rw    -> Frac   (f l) r rw-        PrimInt    l i rw -> PrimInt    (f l) i rw-        PrimWord   l i rw -> PrimWord   (f l) i rw-        PrimFloat  l r rw -> PrimFloat  (f l) r rw-        PrimDouble l r rw -> PrimDouble (f l) r rw-        PrimChar   l c rw -> PrimChar   (f l) c rw-        PrimString l s rw -> PrimString (f l) s rw--instance Functor Exp where-    fmap f e = case e of-        Var l qn        -> Var (f l) (fmap f qn)-        IPVar l ipn     -> IPVar (f l) (fmap f ipn)-        Con l qn        -> Con (f l) (fmap f qn)-        Lit l lit       -> Lit (f l) (fmap f lit)-        InfixApp l e1 qop e2    -> InfixApp (f l) (fmap f e1) (fmap f qop) (fmap f e2)-        App l e1 e2     -> App (f l) (fmap f e1) (fmap f e2)-        NegApp l e      -> NegApp (f l) (fmap f e)-        Lambda l ps e   -> Lambda (f l) (map (fmap f) ps) (fmap f e)-        Let l bs e      -> Let (f l) (fmap f bs) (fmap f e)-        If l ec et ee   -> If (f l) (fmap f ec) (fmap f et) (fmap f ee)-        Case l e alts   -> Case (f l) (fmap f e) (map (fmap f) alts)-        Do l ss         -> Do (f l) (map (fmap f) ss)-        MDo l ss        -> MDo (f l) (map (fmap f) ss)-        Tuple l es      -> Tuple (f l) (map (fmap f) es)-        TupleSection l mes  -> TupleSection (f l) (map (fmap (fmap f)) mes)-        List l es       -> List (f l) (map (fmap f) es)-        Paren l e       -> Paren (f l) (fmap f e)-        LeftSection l e qop     -> LeftSection (f l) (fmap f e) (fmap f qop)-        RightSection l qop e    -> RightSection (f l) (fmap f qop) (fmap f e)-        RecConstr l qn fups     -> RecConstr (f l) (fmap f qn) (map (fmap f) fups)-        RecUpdate l e  fups     -> RecUpdate (f l) (fmap f e) (map (fmap f) fups)-        EnumFrom l e            -> EnumFrom (f l) (fmap f e)-        EnumFromTo l ef et      -> EnumFromTo (f l) (fmap f ef) (fmap f et)-        EnumFromThen l ef et    -> EnumFromThen (f l) (fmap f ef) (fmap f et)-        EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) (fmap f ef) (fmap f eth) (fmap f eto)-        ListComp l e qss        -> ListComp (f l) (fmap f e) (map (fmap f) qss)-        ParComp  l e qsss       -> ParComp  (f l) (fmap f e) (map (map (fmap f)) qsss)-        ExpTypeSig l e t        -> ExpTypeSig (f l) (fmap f e) (fmap f t)-        VarQuote l qn           -> VarQuote (f l) (fmap f qn)-        TypQuote l qn           -> TypQuote (f l) (fmap f qn)-        BracketExp l br         -> BracketExp (f l) (fmap f br)-        SpliceExp l sp          -> SpliceExp (f l) (fmap f sp)-        QuasiQuote l sn se      -> QuasiQuote (f l) sn se--        XTag  l xn xas me es     -> XTag  (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)-        XETag l xn xas me        -> XETag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me)-        XPcdata l s              -> XPcdata (f l) s-        XExpTag l e              -> XExpTag (f l) (fmap f e)--        CorePragma l s e   -> CorePragma (f l) s (fmap f e)-        SCCPragma  l s e   -> SCCPragma (f l) s (fmap f e)-        GenPragma  l s n12 n34 e -> GenPragma (f l) s n12 n34 (fmap f e)--        Proc            l p e   -> Proc (f l) (fmap f p) (fmap f e)-        LeftArrApp      l e1 e2 -> LeftArrApp      (f l) (fmap f e1) (fmap f e2)-        RightArrApp     l e1 e2 -> RightArrApp     (f l) (fmap f e1) (fmap f e2)-        LeftArrHighApp  l e1 e2 -> LeftArrHighApp  (f l) (fmap f e1) (fmap f e2)-        RightArrHighApp l e1 e2 -> RightArrHighApp (f l) (fmap f e1) (fmap f e2)--instance Functor XName where-    fmap f (XName l s)  = XName (f l) s-    fmap f (XDomName l sd sn) = XDomName (f l) sd sn--instance Functor XAttr where-    fmap f (XAttr l xn e) = XAttr (f l) (fmap f xn) (fmap f e)--instance Functor Bracket where-    fmap f (ExpBracket l e) = ExpBracket (f l) (fmap f e)-    fmap f (PatBracket l p) = PatBracket (f l) (fmap f p)-    fmap f (TypeBracket l t) = TypeBracket (f l) (fmap f t)-    fmap f (DeclBracket l ds) = DeclBracket (f l) (map (fmap f) ds)--instance Functor Splice where-    fmap f (IdSplice l s) = IdSplice (f l) s-    fmap f (ParenSplice l e) = ParenSplice (f l) (fmap f e)--instance Functor Safety where-    fmap f (PlayRisky l) = PlayRisky (f l)-    fmap f (PlaySafe l b) = PlaySafe (f l) b--instance Functor CallConv where-    fmap f (StdCall l) = StdCall (f l)-    fmap f (CCall l) = CCall (f l)--instance Functor ModulePragma where-    fmap f (LanguagePragma   l ns) = LanguagePragma (f l) (map (fmap f) ns)-    fmap f (OptionsPragma    l mt s) = OptionsPragma (f l) mt s-    fmap f (AnnModulePragma  l ann) = AnnModulePragma (f l) (fmap f ann)--instance Functor Activation where-    fmap f (ActiveFrom   l k) = ActiveFrom (f l) k-    fmap f (ActiveUntil  l k) = ActiveUntil (f l) k--instance Functor Rule where-    fmap f (Rule l s mact mrvs e1 e2) =-        Rule (f l) s (fmap (fmap f) mact) (fmap (map (fmap f)) mrvs) (fmap f e1) (fmap f e2)--instance Functor RuleVar where-    fmap f (RuleVar l n) = RuleVar (f l) (fmap f n)-    fmap f (TypedRuleVar l n t) = TypedRuleVar (f l) (fmap f n) (fmap f t)--instance Functor WarningText where-    fmap f (DeprText l s) = DeprText (f l) s-    fmap f (WarnText l s) = WarnText (f l) s--instance Functor Pat where-    fmap f p = case p of-      PVar l n          -> PVar (f l) (fmap f n)-      PLit l lit        -> PLit (f l) (fmap f lit)-      PNeg l p          -> PNeg (f l) (fmap f p)-      PNPlusK l n k     -> PNPlusK (f l) (fmap f n) k-      PInfixApp l pa qn pb  -> PInfixApp (f l) (fmap f pa) (fmap f qn) (fmap f pb)-      PApp l qn ps      -> PApp (f l) (fmap f qn) (map (fmap f) ps)-      PTuple l ps       -> PTuple (f l) (map (fmap f) ps)-      PList l ps        -> PList (f l) (map (fmap f) ps)-      PParen l p        -> PParen (f l) (fmap f p)-      PRec l qn pfs     -> PRec (f l) (fmap f qn) (map (fmap f) pfs)-      PAsPat l n p      -> PAsPat (f l) (fmap f n) (fmap f p)-      PWildCard l       -> PWildCard (f l)-      PIrrPat l p       -> PIrrPat (f l) (fmap f p)-      PatTypeSig l p t  -> PatTypeSig (f l) (fmap f p) (fmap f t)-      PViewPat l e p    -> PViewPat (f l) (fmap f e) (fmap f p)-      PRPat l rps       -> PRPat (f l) (map (fmap f) rps)-      PXTag l xn pxas mp ps -> PXTag (f l) (fmap f xn) (map (fmap f) pxas) (fmap (fmap f) mp) (map (fmap f) ps)-      PXETag l xn pxas mp   -> PXETag (f l) (fmap f xn) (map (fmap f) pxas) (fmap (fmap f) mp)-      PXPcdata l s      -> PXPcdata (f l) s-      PXPatTag l p      -> PXPatTag (f l) (fmap f p)-      PXRPats  l rps    -> PXRPats  (f l) (map (fmap f) rps)-      PExplTypeArg l qn t   -> PExplTypeArg (f l) (fmap f qn) (fmap f t)-      PQuasiQuote l sn st   -> PQuasiQuote (f l) sn st-      PBangPat l p          -> PBangPat (f l) (fmap f p)--instance Functor PXAttr where-    fmap f (PXAttr l xn p) = PXAttr (f l) (fmap f xn) (fmap f p)--instance Functor RPatOp where-    fmap f (RPStar  l) = RPStar (f l)-    fmap f (RPStarG l) = RPStarG (f l)-    fmap f (RPPlus  l) = RPPlus (f l)-    fmap f (RPPlusG l) = RPPlusG (f l)-    fmap f (RPOpt   l) = RPOpt (f l)-    fmap f (RPOptG  l) = RPOptG (f l)--instance Functor RPat where-    fmap f rp = case rp of-      RPOp l rp rop         -> RPOp (f l) (fmap f rp) (fmap f rop)-      RPEither l rp1 rp2    -> RPEither (f l) (fmap f rp1) (fmap f rp2)-      RPSeq l rps           -> RPSeq (f l) (map (fmap f) rps)-      RPGuard l p ss        -> RPGuard (f l) (fmap f p) (map (fmap f) ss)-      RPCAs l n rp          -> RPCAs (f l) (fmap f n) (fmap f rp)-      RPAs l n rp           -> RPAs (f l) (fmap f n) (fmap f rp)-      RPParen l rp          -> RPParen (f l) (fmap f rp)-      RPPat l p             -> RPPat (f l) (fmap f p)--instance Functor PatField where-    fmap f (PFieldPat l qn p) = PFieldPat (f l) (fmap f qn) (fmap f p)-    fmap f (PFieldPun l n) = PFieldPun (f l) (fmap f n)-    fmap f (PFieldWildcard l) = PFieldWildcard (f l)--instance Functor Stmt where-    fmap f (Generator l p e) = Generator (f l) (fmap f p) (fmap f e)-    fmap f (Qualifier l e)   = Qualifier (f l) (fmap f e)-    fmap f (LetStmt l bs)    = LetStmt (f l) (fmap f bs)-    fmap f (RecStmt l ss)    = RecStmt (f l) (map (fmap f) ss)--instance Functor QualStmt where-    fmap f (QualStmt     l s) = QualStmt (f l) (fmap f s)-    fmap f (ThenTrans    l e) = ThenTrans (f l) (fmap f e)-    fmap f (ThenBy       l e1 e2) = ThenBy (f l) (fmap f e1) (fmap f e2)-    fmap f (GroupBy      l e) = GroupBy (f l) (fmap f e)-    fmap f (GroupUsing   l e) = GroupUsing (f l) (fmap f e)-    fmap f (GroupByUsing l e1 e2) = GroupByUsing (f l) (fmap f e1) (fmap f e2)--instance Functor FieldUpdate where-    fmap f (FieldUpdate l qn e) = FieldUpdate (f l) (fmap f qn) (fmap f e)-    fmap f (FieldPun l n)       = FieldPun (f l) (fmap f n)-    fmap f (FieldWildcard l)    = FieldWildcard (f l)--instance Functor Alt where-    fmap f (Alt l p gs bs) = Alt (f l) (fmap f p) (fmap f gs) (fmap (fmap f) bs)--instance Functor GuardedAlts where-    fmap f (UnGuardedAlt l e) = UnGuardedAlt (f l) (fmap f e)-    fmap f (GuardedAlts  l galts) = GuardedAlts (f l) (map (fmap f) galts)--instance Functor GuardedAlt where-    fmap f (GuardedAlt l ss e) = GuardedAlt (f l) (map (fmap f) ss) (fmap f e)---------------------------------------------------------------------------------- Reading annotations---- | AST nodes are annotated, and this class allows manipulation of the annotations.-class Functor ast => Annotated ast where-    -- | Retrieve the annotation of an AST node.-    ann :: ast l -> l-    -- | Change the annotation of an AST node. Note that only the annotation of-    --   the node itself is affected, and not the annotations of any child nodes.-    --   if all nodes in the AST tree are to be affected, use 'fmap'.-    amap :: (l -> l) -> ast l -> ast l--instance Annotated ModuleName where-    ann (ModuleName l _) = l-    amap f (ModuleName l n) = ModuleName (f l) n--instance Annotated SpecialCon where-    ann sc = case sc of-        UnitCon l   -> l-        ListCon l   -> l-        FunCon  l   -> l-        TupleCon l _ _  -> l-        Cons l      -> l-        UnboxedSingleCon l  -> l-    amap = fmap--instance Annotated QName where-    ann qn = case qn of-        Qual    l mn n  -> l-        UnQual  l    n  -> l-        Special l sc    -> l-    amap f qn = case qn of-        Qual    l mn n  -> Qual    (f l) mn n-        UnQual  l    n  -> UnQual  (f l)    n-        Special l sc    -> Special (f l) sc--instance Annotated Name where-    ann (Ident  l s) = l-    ann (Symbol l s) = l-    amap = fmap--instance Annotated IPName where-    ann (IPDup l s) = l-    ann (IPLin l s) = l-    amap = fmap--instance Annotated QOp where-    ann (QVarOp l qn) = l-    ann (QConOp l qn) = l-    amap f (QVarOp l qn) = QVarOp (f l) qn-    amap f (QConOp l qn) = QConOp (f l) qn--instance Annotated Op where-    ann (VarOp l n) = l-    ann (ConOp l n) = l-    amap f (VarOp l n) = VarOp (f l) n-    amap f (ConOp l n) = ConOp (f l) n--instance Annotated CName where-    ann (VarName l n) = l-    ann (ConName l n) = l-    amap f (VarName l n) = VarName (f l) n-    amap f (ConName l n) = ConName (f l) n--instance Annotated Module where-    ann (Module l mmh ops iss dcls) = l-    ann (XmlPage l mn os xn xas me es) = l-    ann (XmlHybrid l mmh ops iss dcls xn xas me es) = l--    amap f (Module l mmh ops iss dcls) =-        Module (f l) mmh ops iss dcls-    amap f (XmlPage l mn os xn xas me es) =-        XmlPage (f l) mn os xn xas me es-    amap f (XmlHybrid l mmh ops iss dcls xn xas me es) =-        XmlHybrid (f l) mmh ops iss dcls xn xas me es--instance Annotated ModuleHead where-    ann (ModuleHead l n mwt mesl) = l-    amap f (ModuleHead l n mwt mesl) = ModuleHead (f l) n mwt mesl--instance Annotated ExportSpecList where-    ann (ExportSpecList l ess) = l-    amap f (ExportSpecList l ess) = ExportSpecList (f l) ess--instance Annotated ExportSpec where-    ann es = case es of-        EVar l qn       -> l-        EAbs l qn       -> l-        EThingAll l qn  -> l-        EThingWith l qn cns -> l-        EModuleContents l mn    -> l-    amap f es = case es of-        EVar l qn       -> EVar (f l) qn-        EAbs l qn       -> EAbs (f l) qn-        EThingAll l qn  -> EThingAll (f l) qn-        EThingWith l qn cns -> EThingWith (f l) qn cns-        EModuleContents l mn    -> EModuleContents (f l) mn--instance Annotated ImportDecl where-    ann (ImportDecl l mn qual src pkg mmn mis) = l-    amap f (ImportDecl l mn qual src pkg mmn mis) =-        ImportDecl (f l) mn qual src pkg mmn mis--instance Annotated ImportSpecList where-    ann (ImportSpecList l b iss) = l-    amap f (ImportSpecList l b iss) = ImportSpecList (f l) b iss--instance Annotated ImportSpec where-    ann is = case is of-        IVar l n        -> l-        IAbs l n        -> l-        IThingAll l n   -> l-        IThingWith l n cns  -> l-    amap f is = case is of-        IVar l n        -> IVar (f l) n-        IAbs l n        -> IAbs (f l) n-        IThingAll l n   -> IThingAll (f l) n-        IThingWith l n cns  -> IThingWith (f l) n cns--instance Annotated Assoc where-    ann (AssocNone  l) = l-    ann (AssocLeft  l) = l-    ann (AssocRight l) = l-    amap = fmap--instance Annotated Deriving where-    ann (Deriving l ihs)    = l-    amap f (Deriving l ihs) = Deriving (f l) ihs--instance Annotated Decl where-    ann decl = case decl of-        TypeDecl     l dh t         -> l-        TypeFamDecl  l dh mk        -> l-        DataDecl     l dn cx dh cds ders -> l-        GDataDecl    l dn cx dh mk gds ders -> l-        DataFamDecl  l    cx dh mk  -> l-        TypeInsDecl  l t1 t2        -> l-        DataInsDecl  l dn t cds ders    -> l-        GDataInsDecl l dn t mk gds ders -> l-        ClassDecl    l cx dh fds cds    -> l-        InstDecl     l cx ih ids        -> l-        DerivDecl    l cx ih            -> l-        InfixDecl    l a k ops          -> l-        DefaultDecl  l ts               -> l-        SpliceDecl   l sp               -> l-        TypeSig      l ns t             -> l-        FunBind      l ms               -> l-        PatBind      l p mt rhs bs      -> l-        ForImp       l cc msf s n t     -> l-        ForExp       l cc     s n t     -> l-        RulePragmaDecl   l rs           -> l-        DeprPragmaDecl   l nss          -> l-        WarnPragmaDecl   l nss          -> l-        InlineSig        l b act qn     -> l-        InlineConlikeSig l   act qn     -> l-        SpecSig          l qn ts        -> l-        SpecInlineSig    l b act qn ts  -> l-        InstSig          l cx ih        -> l-        AnnPragma        l ann          -> l-    amap f decl = case decl of-        TypeDecl     l dh t      -> TypeDecl    (f l) dh t-        TypeFamDecl  l dh mk     -> TypeFamDecl (f l) dh mk-        DataDecl     l dn mcx dh cds ders ->-            DataDecl (f l) dn mcx dh cds ders-        GDataDecl    l dn mcx dh mk gds ders ->-            GDataDecl (f l) dn mcx dh mk gds ders-        DataFamDecl  l mcx dh mk         -> DataFamDecl (f l) mcx dh mk-        TypeInsDecl  l t1 t2             -> TypeInsDecl (f l) t1 t2-        DataInsDecl  l dn t cds ders     -> DataInsDecl (f l) dn t cds ders-        GDataInsDecl l dn t mk gds ders  -> GDataInsDecl (f l) dn t mk gds ders-        ClassDecl    l mcx dh fds cds    -> ClassDecl (f l) mcx dh fds cds-        InstDecl     l mcx ih ids        -> InstDecl (f l) mcx ih ids-        DerivDecl    l mcx ih            -> DerivDecl (f l) mcx ih-        InfixDecl    l a k ops           -> InfixDecl (f l) a k ops-        DefaultDecl  l ts                -> DefaultDecl (f l) ts-        SpliceDecl   l sp                -> SpliceDecl (f l) sp-        TypeSig      l ns t              -> TypeSig (f l) ns t-        FunBind      l ms                -> FunBind (f l) ms-        PatBind      l p mt rhs bs       -> PatBind (f l) p mt rhs bs-        ForImp       l cc msf s n t      -> ForImp (f l) cc msf s n t-        ForExp       l cc     s n t      -> ForExp (f l) cc     s n t-        RulePragmaDecl   l rs            -> RulePragmaDecl (f l) rs-        DeprPragmaDecl   l nss           -> DeprPragmaDecl (f l) nss-        WarnPragmaDecl   l nss           -> WarnPragmaDecl (f l) nss-        InlineSig        l b act qn      -> InlineSig (f l) b act qn-        InlineConlikeSig l   act qn      -> InlineConlikeSig (f l) act qn-        SpecSig          l qn ts         -> SpecSig (f l) qn ts-        SpecInlineSig    l b act qn ts   -> SpecInlineSig (f l) b act qn ts-        InstSig          l mcx ih        -> InstSig (f l) mcx ih-        AnnPragma        l ann           -> AnnPragma (f l) ann--instance Annotated Annotation where-    ann (Ann     l n e) = l-    ann (TypeAnn l n e) = l-    ann (ModuleAnn l e) = l-    amap f (Ann     l n e) = Ann     (f l) n e-    amap f (TypeAnn l n e) = TypeAnn (f l) n e-    amap f (ModuleAnn l e) = ModuleAnn (f l) e-    -instance Annotated DataOrNew where-    ann (DataType l) = l-    ann (NewType  l) = l-    amap = fmap--instance Annotated DeclHead where-    ann (DHead l n tvs)       = l-    ann (DHInfix l tva n tvb) = l-    ann (DHParen l dh)        = l-    amap f (DHead l n tvs)       = DHead (f l) n tvs-    amap f (DHInfix l tva n tvb) = DHInfix (f l) tva n tvb-    amap f (DHParen l dh)        = DHParen (f l) dh--instance Annotated InstHead where-    ann (IHead l qn ts) = l-    ann (IHInfix l ta qn tb) = l-    ann (IHParen l ih) = l-    amap f (IHead l qn ts)       = IHead (f l) qn ts-    amap f (IHInfix l ta qn tb)  = IHInfix (f l) ta qn tb-    amap f (IHParen l ih)        = IHParen (f l) ih--instance Annotated Binds where-    ann (BDecls  l decls) = l-    ann (IPBinds l ibs)   = l-    amap f (BDecls  l decls) = BDecls (f l) decls-    amap f (IPBinds l ibs)   = IPBinds (f l) ibs--instance Annotated IPBind where-    ann (IPBind l ipn e) = l-    amap f (IPBind l ipn e) = IPBind (f l) ipn e--instance Annotated Match where-    ann (Match l n ps rhs bs) = l-    ann (InfixMatch l a n b rhs bs) = l-    amap f (Match l n ps rhs bs) = Match (f l) n ps rhs bs-    amap f (InfixMatch l a n b rhs bs) = InfixMatch (f l) a n b rhs bs--instance Annotated QualConDecl where-    ann (QualConDecl l tvs cx cd) = l-    amap f (QualConDecl l tvs cx cd) = QualConDecl (f l) tvs cx cd--instance Annotated ConDecl where-    ann (ConDecl l n bts) = l-    ann (InfixConDecl l ta n tb) = l-    ann (RecDecl l n nsbts) = l-    amap f (ConDecl l n bts) = ConDecl (f l) n bts-    amap f (InfixConDecl l ta n tb) = InfixConDecl (f l) ta n tb-    amap f (RecDecl l n fds) = RecDecl (f l) n fds--instance Annotated FieldDecl where-    ann (FieldDecl l ns t) = l-    amap f (FieldDecl l ns t) = FieldDecl (f l) ns t--instance Annotated GadtDecl where-    ann (GadtDecl l n t) = l-    amap f (GadtDecl l n t) = GadtDecl (f l) n t--instance Annotated ClassDecl where-    ann (ClsDecl    l d) = l-    ann (ClsDataFam l cx dh mk) = l-    ann (ClsTyFam   l    dh mk) = l-    ann (ClsTyDef   l t1 t2) = l-    amap f (ClsDecl    l d) = ClsDecl (f l) d-    amap f (ClsDataFam l mcx dh mk) = ClsDataFam (f l) mcx dh mk-    amap f (ClsTyFam   l     dh mk) = ClsTyFam   (f l)     dh mk-    amap f (ClsTyDef   l t1 t2) = ClsTyDef (f l) t1 t2--instance Annotated InstDecl where-    ann id = case id of-        InsDecl   l d           -> l-        InsType   l t1 t2       -> l-        InsData   l dn t    cds ders            -> l-        InsGData  l dn t mk gds ders            -> l---        InsInline l b act qn    -> l-    amap f id = case id of-        InsDecl   l d           -> InsDecl (f l) d-        InsType   l t1 t2       -> InsType (f l) t1 t2-        InsData   l dn t    cds ders -> InsData  (f l) dn t    cds ders-        InsGData  l dn t mk gds ders -> InsGData (f l) dn t mk gds ders---        InsInline l b act qn    -> InsInline (f l) b act qn--instance Annotated BangType where-     ann (BangedTy   l t) = l-     ann (UnBangedTy l t) = l-     ann (UnpackedTy l t) = l-     amap f (BangedTy   l t) = BangedTy (f l)   t-     amap f (UnBangedTy l t) = UnBangedTy (f l) t-     amap f (UnpackedTy l t) = UnpackedTy (f l) t--instance Annotated Rhs where-     ann (UnGuardedRhs l e) = l-     ann (GuardedRhss  l grhss) = l-     amap f (UnGuardedRhs l e)     = UnGuardedRhs (f l) e-     amap f (GuardedRhss  l grhss) = GuardedRhss  (f l) grhss--instance Annotated GuardedRhs where-     ann (GuardedRhs l ss e) = l-     amap f (GuardedRhs l ss e) = GuardedRhs (f l) ss e--instance Annotated Type where-    ann t = case t of-      TyForall l mtvs cx t          -> l-      TyFun   l t1 t2               -> l-      TyTuple l b ts                -> l-      TyList  l t                   -> l-      TyApp   l t1 t2               -> l-      TyVar   l n                   -> l-      TyCon   l qn                  -> l-      TyParen l t                   -> l-      TyInfix l ta qn tb            -> l-      TyKind  l t k                 -> l-    amap f t = case t of-      TyForall l mtvs mcx t         -> TyForall (f l) mtvs mcx t-      TyFun   l t1 t2               -> TyFun (f l) t1 t2-      TyTuple l b ts                -> TyTuple (f l) b ts-      TyList  l t                   -> TyList (f l) t-      TyApp   l t1 t2               -> TyApp (f l) t1 t2-      TyVar   l n                   -> TyVar (f l) n-      TyCon   l qn                  -> TyCon (f l) qn-      TyParen l t                   -> TyParen (f l) t-      TyInfix l ta qn tb            -> TyInfix (f l) ta qn tb-      TyKind  l t k                 -> TyKind (f l) t k--instance Annotated TyVarBind where-    ann (KindedVar   l n k) = l-    ann (UnkindedVar l n)   = l-    amap f (KindedVar   l n k) = KindedVar   (f l) n k-    amap f (UnkindedVar l n)   = UnkindedVar (f l) n--instance Annotated Kind where-    ann (KindStar l) = l-    ann (KindBang l) = l-    ann (KindFn   l k1 k2) = l-    ann (KindParen l k) = l-    ann (KindVar l v) = l-    amap f (KindStar l) = KindStar (f l)-    amap f (KindBang l) = KindBang (f l)-    amap f (KindFn   l k1 k2) = KindFn (f l) k1 k2-    amap f (KindParen l k) = KindParen (f l) k-    amap f (KindVar l n) = KindVar (f l) n--instance Annotated FunDep where-    ann (FunDep l ns1 ns2) = l-    amap f (FunDep l ns1 ns2) = FunDep (f l) ns1 ns2--instance Annotated Context where-    ann (CxSingle l asst ) = l-    ann (CxTuple  l assts) = l-    ann (CxParen  l ctxt )  = l-    ann (CxEmpty  l)       = l-    amap f (CxSingle l asst ) = CxSingle (f l) asst-    amap f (CxTuple  l assts) = CxTuple  (f l) assts-    amap f (CxParen  l ctxt ) = CxParen  (f l) ctxt-    amap f (CxEmpty l) = CxEmpty (f l)--instance Annotated Asst where-    ann asst = case asst of-        ClassA l qn ts      -> l-        InfixA l ta qn tb   -> l-        IParam l ipn t      -> l-        EqualP l t1 t2      -> l-    amap f asst = case asst of-        ClassA l qn ts      -> ClassA (f l) qn ts-        InfixA l ta qn tb   -> InfixA (f l) ta qn tb-        IParam l ipn t      -> IParam (f l) ipn t-        EqualP l t1 t2      -> EqualP (f l) t1 t2--instance Annotated Literal where-    ann lit = case lit of-        Char    l c    rw  -> l-        String  l s    rw  -> l-        Int     l i    rw  -> l-        Frac    l r    rw  -> l-        PrimInt    l i rw  -> l-        PrimWord   l i rw  -> l-        PrimFloat  l r rw  -> l-        PrimDouble l r rw  -> l-        PrimChar   l c rw  -> l-        PrimString l s rw  -> l-    amap = fmap--instance Annotated Exp where-    ann e = case e of-        Var l qn        -> l-        IPVar l ipn     -> l-        Con l qn        -> l-        Lit l lit       -> l-        InfixApp l e1 qop e2    -> l-        App l e1 e2     -> l-        NegApp l e      -> l-        Lambda l ps e   -> l-        Let l bs e      -> l-        If l ec et ee   -> l-        Case l e alts   -> l-        Do l ss         -> l-        MDo l ss        -> l-        Tuple l es      -> l-        TupleSection l mes  -> l-        List l es       -> l-        Paren l e       -> l-        LeftSection l e qop     -> l-        RightSection l qop e    -> l-        RecConstr l qn fups     -> l-        RecUpdate l e  fups     -> l-        EnumFrom l e            -> l-        EnumFromTo l ef et      -> l-        EnumFromThen l ef et    -> l-        EnumFromThenTo l ef eth eto -> l-        ListComp l e qss        -> l-        ParComp  l e qsss       -> l-        ExpTypeSig l e t        -> l-        VarQuote l qn           -> l-        TypQuote l qn           -> l-        BracketExp l br         -> l-        SpliceExp l sp          -> l-        QuasiQuote l sn se      -> l--        XTag  l xn xas me es     -> l-        XETag l xn xas me        -> l-        XPcdata l s              -> l-        XExpTag l e              -> l--        CorePragma l s e   -> l-        SCCPragma  l s e   -> l-        GenPragma  l s n12 n34 e -> l--        Proc            l p e   -> l-        LeftArrApp      l e1 e2 -> l-        RightArrApp     l e1 e2 -> l-        LeftArrHighApp  l e1 e2 -> l-        RightArrHighApp l e1 e2 -> l--    amap f e = case e of-        Var l qn        -> Var (f l) qn-        IPVar l ipn     -> IPVar (f l) ipn-        Con l qn        -> Con (f l) qn-        Lit l lit       -> Lit (f l) lit-        InfixApp l e1 qop e2    -> InfixApp (f l) e1 qop e2-        App l e1 e2     -> App (f l) e1 e2-        NegApp l e      -> NegApp (f l) e-        Lambda l ps e   -> Lambda (f l) ps e-        Let l bs e      -> Let (f l) bs e-        If l ec et ee   -> If (f l) ec et ee-        Case l e alts   -> Case (f l) e alts-        Do l ss         -> Do (f l) ss-        MDo l ss        -> MDo (f l) ss-        Tuple l es      -> Tuple (f l) es-        TupleSection l mes  -> TupleSection (f l) mes-        List l es       -> List (f l) es-        Paren l e       -> Paren (f l) e-        LeftSection l e qop     -> LeftSection (f l) e qop-        RightSection l qop e    -> RightSection (f l) qop e-        RecConstr l qn fups     -> RecConstr (f l) qn fups-        RecUpdate l e  fups     -> RecUpdate (f l) e  fups-        EnumFrom l e            -> EnumFrom (f l) e-        EnumFromTo l ef et      -> EnumFromTo (f l) ef et-        EnumFromThen l ef et    -> EnumFromThen (f l) ef et-        EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto-        ListComp l e qss        -> ListComp (f l) e qss-        ParComp  l e qsss       -> ParComp  (f l) e qsss-        ExpTypeSig l e t        -> ExpTypeSig (f l) e t-        VarQuote l qn           -> VarQuote (f l) qn-        TypQuote l qn           -> TypQuote (f l) qn-        BracketExp l br         -> BracketExp (f l) br-        SpliceExp l sp          -> SpliceExp (f l) sp-        QuasiQuote l sn se      -> QuasiQuote (f l) sn se--        XTag  l xn xas me es     -> XTag  (f l) xn xas me es-        XETag l xn xas me        -> XETag (f l) xn xas me-        XPcdata l s              -> XPcdata (f l) s-        XExpTag l e              -> XExpTag (f l) e--        CorePragma l s e   -> CorePragma (f l) s e-        SCCPragma  l s e   -> SCCPragma (f l) s e-        GenPragma  l s n12 n34 e -> GenPragma (f l) s n12 n34 e--        Proc            l p e   -> Proc (f l) p e-        LeftArrApp      l e1 e2 -> LeftArrApp      (f l) e1 e2-        RightArrApp     l e1 e2 -> RightArrApp     (f l) e1 e2-        LeftArrHighApp  l e1 e2 -> LeftArrHighApp  (f l) e1 e2-        RightArrHighApp l e1 e2 -> RightArrHighApp (f l) e1 e2---instance Annotated XName where-    ann (XName l s)  = l-    ann (XDomName l sd sn) = l-    amap = fmap--instance Annotated XAttr where-    ann (XAttr l xn e) = l-    amap f (XAttr l xn e) = XAttr (f l) xn e--instance Annotated Bracket where-    ann (ExpBracket l e) = l-    ann (PatBracket l p) = l-    ann (TypeBracket l t) = l-    ann (DeclBracket l ds) = l-    amap f (ExpBracket l e) = ExpBracket (f l) e-    amap f (PatBracket l p) = PatBracket (f l) p-    amap f (TypeBracket l t) = TypeBracket (f l) t-    amap f (DeclBracket l ds) = DeclBracket (f l) ds--instance Annotated Splice where-    ann (IdSplice l s) = l-    ann (ParenSplice l e) = l-    amap f (IdSplice l s) = IdSplice (f l) s-    amap f (ParenSplice l e) = ParenSplice (f l) e--instance Annotated Safety where-    ann (PlayRisky l) = l-    ann (PlaySafe l b) = l-    amap = fmap--instance Annotated CallConv where-    ann (StdCall l) = l-    ann (CCall l) = l-    amap = fmap--instance Annotated ModulePragma where-    ann (LanguagePragma   l ns) = l-    ann (OptionsPragma    l mt s) = l-    ann (AnnModulePragma  l a) = l-    amap f (LanguagePragma   l ns) = LanguagePragma (f l) ns-    amap f (AnnModulePragma  l a) = AnnModulePragma (f l) a-    amap f p = fmap f p--instance Annotated Activation where-    ann (ActiveFrom   l k) = l-    ann (ActiveUntil  l k) = l-    amap = fmap--instance Annotated Rule where-    ann (Rule l s act mrvs e1 e2) = l-    amap f (Rule l s act mrvs e1 e2) = Rule (f l) s act mrvs e1 e2--instance Annotated RuleVar where-    ann (RuleVar l n) = l-    ann (TypedRuleVar l n t) = l-    amap f (RuleVar l n) = RuleVar (f l) n-    amap f (TypedRuleVar l n t) = TypedRuleVar (f l) n t--instance Annotated WarningText where-    ann (DeprText l s) = l-    ann (WarnText l s) = l-    amap = fmap--instance Annotated Pat where-    ann p = case p of-      PVar l n          -> l-      PLit l lit        -> l-      PNeg l p          -> l-      PNPlusK l n k     -> l-      PInfixApp l pa qn pb  -> l-      PApp l qn ps      -> l-      PTuple l ps       -> l-      PList l ps        -> l-      PParen l p        -> l-      PRec l qn pfs     -> l-      PAsPat l n p      -> l-      PWildCard l       -> l-      PIrrPat l p       -> l-      PatTypeSig l p t  -> l-      PViewPat l e p    -> l-      PRPat l rps       -> l-      PXTag l xn pxas mp ps -> l-      PXETag l xn pxas mp   -> l-      PXPcdata l s      -> l-      PXPatTag l p      -> l-      PXRPats  l rps    -> l-      PExplTypeArg l qn t   -> l-      PQuasiQuote l sn st   -> l-      PBangPat l p          -> l-    amap f p = case p of-      PVar l n          -> PVar (f l) n-      PLit l lit        -> PLit (f l) lit-      PNeg l p          -> PNeg (f l) p-      PNPlusK l n k     -> PNPlusK (f l) n k-      PInfixApp l pa qn pb  -> PInfixApp (f l) pa qn pb-      PApp l qn ps      -> PApp (f l) qn ps-      PTuple l ps       -> PTuple (f l) ps-      PList l ps        -> PList (f l) ps-      PParen l p        -> PParen (f l) p-      PRec l qn pfs     -> PRec (f l) qn pfs-      PAsPat l n p      -> PAsPat (f l) n p-      PWildCard l       -> PWildCard (f l)-      PIrrPat l p       -> PIrrPat (f l) p-      PatTypeSig l p t  -> PatTypeSig (f l) p t-      PViewPat l e p    -> PViewPat (f l) e p-      PRPat l rps       -> PRPat (f l) rps-      PXTag l xn pxas mp ps -> PXTag  (f l) xn pxas mp ps-      PXETag l xn pxas mp   -> PXETag (f l) xn pxas mp-      PXPcdata l s      -> PXPcdata (f l) s-      PXPatTag l p      -> PXPatTag (f l) p-      PXRPats  l rps    -> PXRPats  (f l) rps-      PExplTypeArg l qn t   -> PExplTypeArg (f l) qn t-      PQuasiQuote l sn st   -> PQuasiQuote (f l) sn st-      PBangPat l p          -> PBangPat (f l) p--instance Annotated PXAttr where-    ann (PXAttr l xn p) = l-    amap f (PXAttr l xn p) = PXAttr (f l) xn p--instance Annotated RPatOp where-    ann (RPStar  l) = l-    ann (RPStarG l) = l-    ann (RPPlus  l) = l-    ann (RPPlusG l) = l-    ann (RPOpt   l) = l-    ann (RPOptG  l) = l-    amap = fmap--instance Annotated RPat where-    ann rp = case rp of-      RPOp l rp rop         -> l-      RPEither l rp1 rp2    -> l-      RPSeq l rps           -> l-      RPGuard l p ss        -> l-      RPCAs l n rp          -> l-      RPAs l n rp           -> l-      RPParen l rp          -> l-      RPPat l p             -> l-    amap f rp = case rp of-      RPOp l rp rop         -> RPOp (f l) rp rop-      RPEither l rp1 rp2    -> RPEither (f l) rp1 rp2-      RPSeq l rps           -> RPSeq (f l) rps-      RPGuard l p ss        -> RPGuard (f l) p ss-      RPCAs l n rp          -> RPCAs (f l) n rp-      RPAs l n rp           -> RPAs (f l) n rp-      RPParen l rp          -> RPParen (f l) rp-      RPPat l p             -> RPPat (f l) p--instance Annotated PatField where-    ann (PFieldPat l qn p) = l-    ann (PFieldPun l n) = l-    ann (PFieldWildcard l) = l-    amap f (PFieldPat l qn p) = PFieldPat (f l) qn p-    amap f (PFieldPun l n) = PFieldPun (f l) n-    amap f (PFieldWildcard l) = PFieldWildcard (f l)--instance Annotated Stmt where-    ann (Generator l p e) = l-    ann (Qualifier l e)   = l-    ann (LetStmt l bs)    = l-    ann (RecStmt l ss)    = l-    amap f (Generator l p e) = Generator (f l) p e-    amap f (Qualifier l e)   = Qualifier (f l) e-    amap f (LetStmt l bs)    = LetStmt (f l) bs-    amap f (RecStmt l ss)    = RecStmt (f l) ss--instance Annotated QualStmt where-    ann (QualStmt     l s) = l-    ann (ThenTrans    l e) = l-    ann (ThenBy       l e1 e2) = l-    ann (GroupBy      l e) = l-    ann (GroupUsing   l e) = l-    ann (GroupByUsing l e1 e2) = l-    amap f (QualStmt     l s) = QualStmt (f l) s-    amap f (ThenTrans    l e) = ThenTrans (f l) e-    amap f (ThenBy       l e1 e2) = ThenBy (f l) e1 e2-    amap f (GroupBy      l e) = GroupBy (f l) e-    amap f (GroupUsing   l e) = GroupUsing (f l) e-    amap f (GroupByUsing l e1 e2) = GroupByUsing (f l) e1 e2--instance Annotated FieldUpdate where-    ann (FieldUpdate l qn e) = l-    ann (FieldPun l n)       = l-    ann (FieldWildcard l)    = l-    amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e-    amap f (FieldPun l n)       = FieldPun (f l) n-    amap f (FieldWildcard l)    = FieldWildcard (f l)--instance Annotated Alt where-    ann (Alt l p gs bs) = l-    amap f (Alt l p gs bs) = Alt (f l) p gs bs--instance Annotated GuardedAlts where-    ann (UnGuardedAlt l e) = l-    ann (GuardedAlts  l galts) = l-    amap f (UnGuardedAlt l e) = UnGuardedAlt (f l) e-    amap f (GuardedAlts  l galts) = GuardedAlts (f l) galts--instance Annotated GuardedAlt where-    ann (GuardedAlt l ss e) = l-    amap f (GuardedAlt l ss e) = GuardedAlt (f l) ss e
src/Language/Haskell/Exts/Build.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE Safe #-}+ ----------------------------------------------------------------------------- -- | -- Module      :  Language.Haskell.Exts.Build@@ -20,54 +22,54 @@ module Language.Haskell.Exts.Build (      -- * Syntax building functions-    name,       -- :: String -> Name-    sym,        -- :: String -> Name-    var,        -- :: Name -> Exp-    op,         -- :: Name -> QOp-    qvar,       -- :: Module -> Name -> Exp-    pvar,       -- :: Name -> Pat-    app,        -- :: Exp -> Exp -> Exp-    infixApp,   -- :: Exp -> QOp -> Exp -> Exp-    appFun,     -- :: Exp -> [Exp] -> Exp-    pApp,       -- :: Name -> [Pat] -> Pat-    tuple,      -- :: [Exp] -> Exp-    pTuple,     -- :: [Pat] -> Pat-    varTuple,   -- :: [Name] -> Exp-    pvarTuple,  -- :: [Name] -> Pat-    function,   -- :: String -> Exp-    strE,       -- :: String -> Exp-    charE,      -- :: Char -> Exp-    intE,       -- :: Integer -> Exp-    strP,       -- :: String -> Pat-    charP,      -- :: Char -> Pat-    intP,       -- :: Integer -> Pat-    doE,        -- :: [Stmt] -> Exp-    lamE,       -- :: SrcLoc -> [Pat] -> Exp -> Exp-    letE,       -- :: [Decl] -> Exp -> Exp-    caseE,      -- :: Exp -> [Alt] -> Exp-    alt,        -- :: SrcLoc -> Pat -> Exp -> Alt-    altGW,      -- :: SrcLoc -> Pat -> [Stmt] -> Exp -> Binds -> Alt-    listE,      -- :: [Exp] -> Exp-    eList,      -- :: Exp-    peList,     -- :: Pat-    paren,      -- :: Exp -> Exp-    pParen,     -- :: Pat -> Pat-    qualStmt,   -- :: Exp -> Stmt-    genStmt,    -- :: SrcLoc -> Pat -> Exp -> Stmt+    name,       -- :: String -> Name ()+    sym,        -- :: String -> Name ()+    var,        -- :: Name () -> Exp ()+    op,         -- :: Name () -> QOp+    qvar,       -- :: Module -> Name () -> Exp ()+    pvar,       -- :: Name () -> Pat ()+    app,        -- :: Exp () -> Exp () -> Exp ()+    infixApp,   -- :: Exp () -> QOp -> Exp () -> Exp ()+    appFun,     -- :: Exp () -> [Exp] -> Exp ()+    pApp,       -- :: Name () -> [Pat] -> Pat ()+    tuple,      -- :: [Exp] -> Exp ()+    pTuple,     -- :: [Pat] -> Pat ()+    varTuple,   -- :: [Name] -> Exp ()+    pvarTuple,  -- :: [Name] -> Pat ()+    function,   -- :: String -> Exp ()+    strE,       -- :: String -> Exp ()+    charE,      -- :: Char -> Exp ()+    intE,       -- :: Integer -> Exp ()+    strP,       -- :: String -> Pat ()+    charP,      -- :: Char -> Pat ()+    intP,       -- :: Integer -> Pat ()+    doE,        -- :: [Stmt] -> Exp ()+    lamE,       -- :: SrcLoc -> [Pat] -> Exp () -> Exp ()+    letE,       -- :: [Decl] -> Exp () -> Exp ()+    caseE,      -- :: Exp () -> [Alt] -> Exp ()+    alt,        -- :: SrcLoc -> Pat () -> Exp () -> Alt+    altGW,      -- :: SrcLoc -> Pat () -> [Stmt] -> Exp () -> Binds -> Alt+    listE,      -- :: [Exp] -> Exp ()+    eList,      -- :: Exp ()+    peList,     -- :: Pat ()+    paren,      -- :: Exp () -> Exp ()+    pParen,     -- :: Pat () -> Pat ()+    qualStmt,   -- :: Exp () -> Stmt+    genStmt,    -- :: SrcLoc -> Pat () -> Exp () -> Stmt     letStmt,    -- :: [Decl] -> Stmt     binds,      -- :: [Decl] -> Binds     noBinds,    -- :: Binds-    wildcard,   -- :: Pat+    wildcard,   -- :: Pat ()     genNames,   -- :: String -> Int -> [Name]      -- * More advanced building-    sfun,           -- :: SrcLoc -> Name -> [Name] -> Rhs -> Binds -> Decl-    simpleFun,      -- :: SrcLoc -> Name -> Name -> Exp -> Decl-    patBind,        -- :: SrcLoc -> Pat -> Exp -> Decl-    patBindWhere,   -- :: SrcLoc -> Pat -> Exp -> [Decl] -> Decl-    nameBind,       -- :: SrcLoc -> Name -> Exp -> Decl-    metaFunction,   -- :: String -> [Exp] -> Exp-    metaConPat      -- :: String -> [Pat] -> Pat+    sfun,           -- :: SrcLoc -> Name () -> [Name] -> Rhs -> Binds -> Decl ()+    simpleFun,      -- :: SrcLoc -> Name () -> Name () -> Exp () -> Decl ()+    patBind,        -- :: SrcLoc -> Pat () -> Exp () -> Decl ()+    patBindWhere,   -- :: SrcLoc -> Pat () -> Exp () -> [Decl] -> Decl ()+    nameBind,       -- :: SrcLoc -> Name () -> Exp () -> Decl ()+    metaFunction,   -- :: String -> [Exp] -> Exp ()+    metaConPat      -- :: String -> [Pat] -> Pat ()   ) where  import Language.Haskell.Exts.Syntax@@ -77,214 +79,216 @@  -- | An identifier with the given string as its name. --   The string should be a valid Haskell identifier.-name :: String -> Name-name = Ident+name :: String -> Name ()+name = Ident ()  -- | A symbol identifier. The string should be a valid --   Haskell symbol identifier.-sym :: String -> Name-sym = Symbol+sym :: String -> Name ()+sym = Symbol ()  -- | A local variable as expression.-var :: Name -> Exp-var = Var . UnQual+var :: Name () -> Exp ()+var = Var () . UnQual ()  -- | Use the given identifier as an operator.-op :: Name -> QOp-op = QVarOp . UnQual+op :: Name () -> QOp ()+op = QVarOp () . UnQual ()  -- | A qualified variable as expression.-qvar :: ModuleName -> Name -> Exp-qvar m n = Var $ Qual m n+qvar :: ModuleName () -> Name () -> Exp ()+qvar m n = Var () $ Qual () m n  -- | A pattern variable.-pvar :: Name -> Pat-pvar = PVar+pvar :: Name () -> Pat ()+pvar = PVar ()  -- | Application of expressions by juxtaposition.-app :: Exp -> Exp -> Exp-app = App+app :: Exp () -> Exp () -> Exp ()+app = App ()  -- | Apply an operator infix.-infixApp :: Exp -> QOp -> Exp -> Exp-infixApp = InfixApp+infixApp :: Exp () -> QOp () -> Exp () -> Exp ()+infixApp = InfixApp ()  -- | Apply a function to a list of arguments.-appFun :: Exp -> [Exp] -> Exp+appFun :: Exp () -> [Exp ()] -> Exp () appFun f [] = f appFun f (a:as) = appFun (app f a) as  -- | A constructor pattern, with argument patterns.-pApp :: Name -> [Pat] -> Pat-pApp n ps = PApp (UnQual n) ps+pApp :: Name () -> [Pat ()] -> Pat ()+pApp n ps = PApp () (UnQual () n) ps  -- | A tuple expression.-tuple :: [Exp] -> Exp-tuple = Tuple+tuple :: [Exp ()] -> Exp ()+tuple = Tuple () Boxed  -- | A tuple pattern.-pTuple :: [Pat] -> Pat-pTuple = PTuple+pTuple :: [Pat ()] -> Pat ()+pTuple = PTuple () Boxed  -- | A tuple expression consisting of variables only.-varTuple :: [Name] -> Exp+varTuple :: [Name ()] -> Exp () varTuple ns = tuple $ map var ns  -- | A tuple pattern consisting of variables only.-pvarTuple :: [Name] -> Pat+pvarTuple :: [Name ()] -> Pat () pvarTuple ns = pTuple $ map pvar ns  -- | A function with a given name.-function :: String -> Exp-function = var . Ident+function :: String -> Exp ()+function = var . Ident ()  -- | A literal string expression.-strE :: String -> Exp-strE = Lit . String+strE :: String -> Exp ()+strE s = Lit () (String () s s)  -- | A literal character expression.-charE :: Char -> Exp-charE = Lit . Char+charE :: Char -> Exp ()+charE c = Lit () (Char () c [c])  -- | A literal integer expression.-intE :: Integer -> Exp-intE = Lit . Int+intE :: Integer -> Exp ()+intE n = Lit () (Int () n (show n))  -- | A literal string pattern.-strP :: String -> Pat-strP = PLit . String+strP :: String -> Pat ()+strP s = PLit () (Signless ()) (String () s s)  -- | A literal character pattern.-charP :: Char -> Pat-charP = PLit . Char+charP :: Char -> Pat ()+charP x = PLit () (Signless ()) (Char () x [x])  -- | A literal integer pattern.-intP :: Integer -> Pat-intP = PLit . Int+intP :: Integer -> Pat ()+intP x = PLit ()+          (if x >= 0 then Signless () else Negative ())+          (Int () (abs x) (show x))  -- | A do block formed by the given statements. --   The last statement in the list should be --   a 'Qualifier' expression.-doE :: [Stmt] -> Exp-doE = Do+doE :: [Stmt ()] -> Exp ()+doE = Do ()  -- | Lambda abstraction, given a list of argument --   patterns and an expression body.-lamE :: SrcLoc -> [Pat] -> Exp -> Exp-lamE = Lambda+lamE :: [Pat ()] -> Exp () -> Exp ()+lamE = Lambda ()  -- | A @let@ ... @in@ block.-letE :: [Decl] -> Exp -> Exp-letE ds e = Let (binds ds) e+letE :: [Decl ()] -> Exp () -> Exp ()+letE ds e = Let () (binds ds) e  -- | A @case@ expression.-caseE :: Exp -> [Alt] -> Exp-caseE = Case+caseE :: Exp () -> [Alt ()] -> Exp ()+caseE = Case ()  -- | An unguarded alternative in a @case@ expression.-alt :: SrcLoc -> Pat -> Exp -> Alt-alt s p e = Alt s p (unGAlt e) noBinds+alt :: Pat () -> Exp () -> Alt ()+alt p e = Alt () p (unGAlt e) noBinds  -- | An alternative with a single guard in a @case@ expression.-altGW :: SrcLoc -> Pat -> [Stmt] -> Exp -> Binds -> Alt-altGW s p gs e w = Alt s p (gAlt s gs e) w+altGW :: Pat () -> [Stmt ()] -> Exp () -> Binds () -> Alt ()+altGW p gs e w = Alt () p (gAlt gs e) (Just w)  -- | An unguarded righthand side of a @case@ alternative.-unGAlt :: Exp -> GuardedAlts-unGAlt = UnGuardedAlt+unGAlt :: Exp () -> Rhs ()+unGAlt = UnGuardedRhs ()  -- | An list of guarded righthand sides for a @case@ alternative.-gAlts :: SrcLoc -> [([Stmt],Exp)] -> GuardedAlts-gAlts s as = GuardedAlts $ map (\(gs,e) -> GuardedAlt s gs e) as+gAlts :: [([Stmt ()],Exp ())] -> Rhs ()+gAlts as = GuardedRhss () $ map (\(gs,e) -> GuardedRhs () gs e) as  -- | A single guarded righthand side for a @case@ alternative.-gAlt :: SrcLoc -> [Stmt] -> Exp -> GuardedAlts-gAlt s gs e = gAlts s [(gs,e)]+gAlt :: [Stmt ()] -> Exp () -> Rhs ()+gAlt gs e = gAlts [(gs,e)]  -- | A list expression.-listE :: [Exp] -> Exp-listE = List+listE :: [Exp ()] -> Exp ()+listE = List ()  -- | The empty list expression.-eList :: Exp-eList = List []+eList :: Exp ()+eList = List () []  -- | The empty list pattern.-peList :: Pat-peList = PList []+peList :: Pat ()+peList = PList () []  -- | Put parentheses around an expression.-paren :: Exp -> Exp-paren = Paren+paren :: Exp () -> Exp ()+paren = Paren ()  -- | Put parentheses around a pattern.-pParen :: Pat -> Pat-pParen = PParen+pParen :: Pat () -> Pat ()+pParen = PParen ()  -- | A qualifier expression statement.-qualStmt :: Exp -> Stmt-qualStmt = Qualifier+qualStmt :: Exp () -> Stmt ()+qualStmt = Qualifier ()  -- | A generator statement: /pat/ @<-@ /exp/-genStmt :: SrcLoc -> Pat -> Exp -> Stmt-genStmt = Generator+genStmt :: Pat () -> Exp () -> Stmt ()+genStmt = Generator ()  -- | A @let@ binding group as a statement.-letStmt :: [Decl] -> Stmt-letStmt ds = LetStmt $ binds ds+letStmt :: [Decl ()] -> Stmt ()+letStmt ds = LetStmt () $ binds ds  -- | Hoist a set of declarations to a binding group.-binds :: [Decl] -> Binds-binds = BDecls+binds :: [Decl ()] -> Binds ()+binds = BDecls ()  -- | An empty binding group.-noBinds :: Binds-noBinds = binds []+noBinds :: Maybe (Binds ())+noBinds = Nothing  -- | The wildcard pattern: @_@-wildcard :: Pat-wildcard = PWildCard+wildcard :: Pat ()+wildcard = PWildCard ()  -- | Generate k names by appending numbers 1 through k to a given string.-genNames :: String -> Int -> [Name]-genNames s k = [ Ident $ s ++ show i | i <- [1..k] ]+genNames :: String -> Int -> [Name ()]+genNames s k = [ Ident () $ s ++ show i | i <- [1..k] ]  ------------------------------------------------------------------------------- -- Some more specialised help functions  -- | A function with a single clause-sfun :: SrcLoc -> Name -> [Name] -> Rhs -> Binds -> Decl-sfun s f pvs rhs bs = FunBind [Match s f (map pvar pvs) Nothing rhs bs]+sfun :: Name () -> [Name ()] -> (Rhs ()) -> Maybe (Binds ()) -> Decl ()+sfun f pvs rhs bs = FunBind () [Match () f (map pvar pvs) rhs bs]  -- | A function with a single clause, a single argument, no guards -- and no where declarations-simpleFun :: SrcLoc -> Name -> Name -> Exp -> Decl-simpleFun s f a e = let rhs = UnGuardedRhs e-             in sfun s f [a] rhs noBinds+simpleFun :: Name () -> Name () -> Exp () -> Decl ()+simpleFun f a e = let rhs = UnGuardedRhs () e+             in sfun f [a] rhs noBinds  -- | A pattern bind where the pattern is a variable, and where -- there are no guards and no 'where' clause.-patBind :: SrcLoc -> Pat -> Exp -> Decl-patBind s p e = let rhs = UnGuardedRhs e-         in PatBind s p Nothing rhs noBinds+patBind :: Pat () -> Exp () -> Decl ()+patBind p e = let rhs = UnGuardedRhs () e+         in PatBind () p rhs noBinds  -- | A pattern bind where the pattern is a variable, and where -- there are no guards, but with a 'where' clause.-patBindWhere :: SrcLoc -> Pat -> Exp -> [Decl] -> Decl-patBindWhere s p e ds = let rhs = UnGuardedRhs e-             in PatBind s p Nothing rhs (binds ds)+patBindWhere :: Pat () -> Exp () -> [Decl ()] -> Decl ()+patBindWhere p e ds = let rhs = UnGuardedRhs () e+             in PatBind () p rhs (if null ds then Nothing else Just (binds ds))  -- | Bind an identifier to an expression.-nameBind :: SrcLoc -> Name -> Exp -> Decl-nameBind s n e = patBind s (pvar n) e+nameBind :: Name () -> Exp () -> Decl ()+nameBind n e = patBind (pvar n) e  -- | Apply function of a given name to a list of arguments.-metaFunction :: String -> [Exp] -> Exp-metaFunction s es = mf s (reverse es)+metaFunction :: String -> [Exp ()] -> Exp ()+metaFunction s' es' = mf s' (reverse es')   where mf s []     = var $ name s         mf s (e:es) = app (mf s es) e  -- | Apply a constructor of a given name to a list of pattern --   arguments, forming a constructor pattern.-metaConPat :: String -> [Pat] -> Pat+metaConPat :: String -> [Pat ()] -> Pat () metaConPat s ps = pApp (name s) ps
src/Language/Haskell/Exts/Comments.hs view
@@ -1,20 +1,189 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-}
-module Language.Haskell.Exts.Comments where
-
-import Language.Haskell.Exts.SrcLoc
-
-#ifdef __GLASGOW_HASKELL__
-#ifdef BASE4
-import Data.Data
-#else
-import Data.Generics (Data(..),Typeable(..))
-#endif
-#endif
-
--- | A Haskell comment. The 'Bool' is 'True' if the comment is multi-line, i.e. @{- -}@.
-data Comment = Comment Bool SrcSpan String
-#ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Show,Typeable,Data)
-#else
-  deriving (Eq,Show)
-#endif
+{-# LANGUAGE DeriveDataTypeable, Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.Comments+-- Copyright   :  (c) JP Moresmau 2015+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+-- Stability   :  experimental+-- Portability :  portable+--+-- This module processes comments along with an annotated AST,+-- to be able to associate Haddock comments with the actual item+-- they refer to.+--+-- Example:+--+-- @+-- let+--  parse1Result :: ParseResult (Module SrcSpanInfo,[Comment])+--  parse1Result =+--    parseFileContentsWithComments+--     (defaultParseMode { parseFilename = file })+--      contents+--  withC :: ParseResult (Module (SrcSpanInfo,[Comment]))+--  withC = case parse1Result of+--            ParseOk res         -> ParseOk $ associateHaddock res+--            ParseFailed sloc msg -> ParseFailed sloc msg+-- @+--+-- In this code sample, parse1Result is what you get when you parse a file:+-- a 'Module' annotated wth 'SrcSpanInfo', and a list of comments+-- After passing the result to 'associateHaddock', you get a 'Module'+-- annotated with both a 'SrcSpanInfo' and the list of 'Comment' related to the+-- specific AST node.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.Comments+    ( associateHaddock+    , Comment(..), UnknownPragma(..)+    ) where++import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.SrcLoc++import Data.Char (isSpace)+import Data.Traversable+import Data.Data+++-- | A Haskell comment. The 'Bool' is 'True' if the comment is multi-line, i.e. @{- -}@.+data Comment = Comment Bool SrcSpan String+  deriving (Eq,Show,Typeable,Data)++-- | An unknown pragma.+data UnknownPragma = UnknownPragma SrcSpan String+  deriving (Eq,Show,Typeable,Data)+++-- | Associates an AST with Source Span Information+-- with relevant Haddock comments+associateHaddock+  ::(Annotated ast,Traversable ast)+  => (ast SrcSpanInfo,[Comment])+  -> ast (SrcSpanInfo,[Comment])+associateHaddock (ast,[]) = fmap (\src->(src,[])) ast+associateHaddock (ast,comments) =+  let+    (ca,assocs1) = mapAccumL associate1 (newAccumulator comments) ast+  in snd $ mapAccumL merge (lastPost ca) assocs1+++-- | Merge existing association with post comment associations+merge+  :: [(SrcSpanInfo,[Comment])]+  -> (SrcSpanInfo,[Comment])+  -> ([(SrcSpanInfo,[Comment])], (SrcSpanInfo,[Comment]))+merge [] ret = ([],ret)+merge (x:xs) (src,cmts) =+  if fst x == src+    then (xs,(src,cmts ++ snd x))+    else (x:xs,(src,cmts))+++-- | Ensure that if file ends with comment we process it+lastPost :: CommentAccumulator -> [(SrcSpanInfo, [Comment])]+lastPost (CommentAccumulator (Post cmt : rest) past assocs) =+  let (toMerge, _) = span isNone rest+      psrc = matchPreviousSrc past+  in (assocs ++ [(psrc, cmt : map hcComment toMerge)])+lastPost (CommentAccumulator _ _ assocs) = assocs+++-- | Accumulate comments mappings, either directly with the source+-- or in another association list for later processing+associate1+  :: CommentAccumulator+  -> SrcSpanInfo+  -> (CommentAccumulator,(SrcSpanInfo,[Comment]))+associate1 ca@(CommentAccumulator [] _ _) src = (ca,(src,[]))+associate1 (CommentAccumulator (hc@(Pre cmt):rest) _ assocs) src =+  if isBefore hc src+    then+      let (toMerge,next) = getToMerge src rest+          newAssoc = (src,cmt : map hcComment toMerge)+      in (CommentAccumulator next [] assocs,newAssoc)+    else (CommentAccumulator (hc:rest) [] assocs,(src,[]))+associate1 (CommentAccumulator (hc@(Post cmt):rest) past assocs) src =+  if isBefore hc src+    then+      let (toMerge,next) = getToMerge src rest+          newAssocs =+            if null past+              then assocs+              else assocs++[(matchPreviousSrc past,cmt : map hcComment toMerge)]+      in associate1 (CommentAccumulator next [] newAssocs) src+    else (CommentAccumulator (hc:rest) (src:past) assocs,(src,[]))+associate1 (CommentAccumulator (_:rest) past assocs) src =+  (CommentAccumulator rest (src:past) assocs,(src,[]))+++-- | The comment accumulator+data CommentAccumulator = CommentAccumulator+  [HaddockComment]          -- The Haddock comments to process+  [SrcSpanInfo]             -- The past src infos to resolve post comments+  [(SrcSpanInfo,[Comment])] -- The additional associations between src and comments+++-- | Create a new accumulator+newAccumulator :: [Comment] -> CommentAccumulator+newAccumulator comments = CommentAccumulator (commentsToHaddock comments) [] []++-- | Get comments to merge+getToMerge+  :: SrcSpanInfo                         -- ^ Stop before src+  -> [HaddockComment]                    -- ^ All remaining comments+  -> ([HaddockComment],[HaddockComment]) -- ^ Comments to merge, left overs+getToMerge src = span (\hc-> isNone hc && isBefore hc src)+++-- | Get the biggest src that ends where the first one does+matchPreviousSrc :: [SrcSpanInfo] -> SrcSpanInfo+matchPreviousSrc [] =+  error "Language.Haskell.Exts.Annotated.Comments.matchPreviousSrc: empty list"+matchPreviousSrc srcs =+  let end = srcSpanEnd $ srcInfoSpan $ head srcs+  in last $ filter ((end ==) . srcSpanEnd . srcInfoSpan) srcs++-- | Is a Haddock comment before a given location+isBefore :: HaddockComment -> SrcSpanInfo -> Bool+isBefore hc src=+  let+    (Comment _ csrc _) = hcComment hc+  in csrc < srcInfoSpan src++-- | Represents a Haddock Comment+data HaddockComment =+  -- | Comment before declaration+  Pre+   {+     hcComment::Comment+   }+  -- | Comment after declaration+  | Post  {+     hcComment::Comment+    }+  -- | Non Haddock comment+  | None  {+     hcComment::Comment+    }++-- | Is a comment not haddock?+isNone :: HaddockComment -> Bool+isNone (None _) = True+isNone _ = False+++-- | Comments to Haddock Comments+commentsToHaddock :: [Comment] -> [HaddockComment]+commentsToHaddock = map commentToHaddock++-- | Comment to Haddock Comment+commentToHaddock :: Comment -> HaddockComment+commentToHaddock c@(Comment _ _ txt) =+  case dropWhile isSpace txt of+    ('|':_) -> Pre c+    ('^':_) -> Post c+    _       -> None c
+ src/Language/Haskell/Exts/ExactPrint.hs view
@@ -0,0 +1,2219 @@+{-# LANGUAGE CPP, DeriveFunctor, Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.Annotated.ExactPrint+-- Copyright   :  (c) Niklas Broberg 2009+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+-- Stability   :  stable+-- Portability :  portable+--+-- Exact-printer for Haskell abstract syntax. The input is a (semi-concrete)+-- abstract syntax tree, annotated with exact source information to enable+-- printing the tree exactly as it was parsed.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.ExactPrint+        ( exactPrint+        , ExactP+        ) where++import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.SrcLoc+import Language.Haskell.Exts.Comments++import Control.Monad (when, liftM, ap, unless)+import qualified Control.Monad.Fail as Fail+#if __GLASGOW_HASKELL__ < 710+import Control.Applicative (Applicative(..))+#endif+import Control.Arrow ((***), (&&&))+import Prelude hiding (exp)+import Data.List (intersperse)++------------------------------------------------------+-- The EP monad and basic combinators++type Pos = (Int,Int)++pos :: (SrcInfo loc) => loc -> Pos+pos ss = (startLine ss, startColumn ss)++newtype EP x = EP (Pos -> [Comment] -> (x, Pos, [Comment], ShowS))++instance Functor EP where+  fmap = liftM++instance Applicative EP where+  pure x = EP $ \l cs -> (x, l, cs, id)+  (<*>) = ap++instance Monad EP where++  EP m >>= k = EP $ \l0 c0 -> let+        (a, l1, c1, s1) = m l0 c0+        EP f = k a+        (b, l2, c2, s2) = f l1 c1+    in (b, l2, c2, s1 . s2)++instance Fail.MonadFail EP where+  fail = error++runEP :: EP () -> [Comment] -> String+runEP (EP f) cs = let (_,_,_,s) = f (1,1) cs in s ""++getPos :: EP Pos+getPos = EP (\l cs -> (l,l,cs,id))++setPos :: Pos -> EP ()+setPos l = EP (\_ cs -> ((),l,cs,id))++printString :: String -> EP ()+printString str =+  EP (\(l,c) cs -> let (l', c') = foldl go (l, c) str+                       go (cl, _) '\n' = (cl + 1, 1)+                       go (cl, cc) _    = (cl, cc + 1)+                   in ((), (l', c'), cs, showString str))+++getComment :: EP (Maybe Comment)+getComment = EP $ \l cs ->+    let x = case cs of+             c:_ -> Just c+             _   -> Nothing+     in (x, l, cs, id)++dropComment :: EP ()+dropComment = EP $ \l cs ->+    let cs' = case cs of+               (_:cs1) -> cs1+               _       -> cs+     in ((), l, cs', id)++newLine :: EP ()+newLine = do+    (l,_) <- getPos+    printString "\n"+    setPos (l+1,1)++padUntil :: Pos -> EP ()+padUntil (l,c) = do+    (l1,c1) <- getPos+    case  {- trace (show ((l,c), (l1,c1))) -} () of+     _ {-()-} | l1 >= l && c1 <= c -> printString $ replicate (c - c1) ' '+              | l1 < l             -> newLine >> padUntil (l,c)+              | otherwise          -> return ()+++mPrintComments :: Pos -> EP ()+mPrintComments p = do+    mc <- getComment+    case mc of+     Nothing -> return ()+     Just (Comment multi s str) ->+        when (pos s < p) $ do+            dropComment+            padUntil (pos s)+            printComment multi str+            setPos (srcSpanEndLine s, srcSpanEndColumn s)+            mPrintComments p++printComment :: Bool -> String -> EP ()+printComment b str+    | b         = printString $ "{-" ++ str ++ "-}"+    | otherwise = printString $ "--" ++ str++printWhitespace :: Pos -> EP ()+printWhitespace p = mPrintComments p >> padUntil p++printStringAt :: Pos -> String -> EP ()+printStringAt p str = printWhitespace p >> printString str++errorEP :: String -> EP a+errorEP = fail++------------------------------------------------------------------------------+-- Printing of source elements++-- | Print an AST exactly as specified by the annotations on the nodes in the tree.+exactPrint :: (ExactP ast) => ast SrcSpanInfo -> [Comment] -> String+exactPrint ast = runEP (exactPC ast)++exactPC :: (ExactP ast) => ast SrcSpanInfo -> EP ()+exactPC ast = let p = pos (ann ast) in mPrintComments p >> padUntil p >> exactP ast++printSeq :: [(Pos, EP ())] -> EP ()+printSeq [] = return ()+printSeq ((p,pr):xs) = printWhitespace p >> pr >> printSeq xs++printStrs :: SrcInfo loc => [(loc, String)] -> EP ()+printStrs = printSeq . map (pos *** printString)++printPoints :: SrcSpanInfo -> [String] -> EP ()+printPoints l = printStrs . zip (srcInfoPoints l)++printInterleaved, printInterleaved' :: (ExactP ast, SrcInfo loc) => [(loc, String)] -> [ast SrcSpanInfo] -> EP ()+printInterleaved sistrs asts = printSeq $+    interleave (map (pos *** printString ) sistrs)+               (map (pos . ann &&& exactP) asts)++printInterleaved' sistrs (a:asts) = exactPC a >> printInterleaved sistrs asts+printInterleaved' _ _ = internalError "printInterleaved'"++printStreams :: [(Pos, EP ())] -> [(Pos, EP ())] -> EP ()+printStreams [] ys = printSeq ys+printStreams xs [] = printSeq xs+printStreams (x@(p1,ep1):xs) (y@(p2,ep2):ys)+    | p1 <= p2 = printWhitespace p1 >> ep1 >> printStreams xs (y:ys)+    | otherwise = printWhitespace p2 >> ep2 >> printStreams (x:xs) ys+++interleave :: [a] -> [a] -> [a]+interleave [] ys = ys+interleave xs [] = xs+interleave (x:xs) (y:ys) = x:y: interleave xs ys++maybeEP :: (a -> EP ()) -> Maybe a -> EP ()+maybeEP = maybe (return ())++bracketList :: (ExactP ast) => (String, String, String) -> [SrcSpan] -> [ast SrcSpanInfo] -> EP ()+bracketList (a,b,c) poss asts = printInterleaved (pList poss (a,b,c)) asts++pList :: [a] -> (b, b, b) -> [(a, b)]+pList (p:ps) (a,b,c) = (p,a) : pList' ps (b,c)+pList _ _ = internalError "pList"+pList' :: [a] -> (b, b) -> [(a, b)]+pList' [] _ = []+pList' [p] (_,c) = [(p,c)]+pList' (p:ps) (b,c) = (p, b) : pList' ps (b,c)++parenList, squareList, squareColonList, curlyList, parenHashList,+  unboxedSumTypeList :: (ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP ()+parenList = bracketList ("(",",",")")+squareList = bracketList ("[",",","]")+squareColonList = bracketList ("[:",",",":]")+curlyList = bracketList ("{",",","}")+parenHashList = bracketList ("(#",",","#)")+unboxedSumTypeList = bracketList ("(#", "|", "#)")++layoutList :: (ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP ()+layoutList poss asts = printStreams+        (map (pos *** printString) $ lList poss)+        (map (pos . ann &&& exactP) asts)++lList :: [SrcSpan] -> [(SrcSpan, String)]+lList (p:ps) = (if isNullSpan p then (p,"") else (p,"{")) : lList' ps+lList _ = internalError "lList"+lList' :: [SrcSpan] -> [(SrcSpan, String)]+lList' [] = []+lList' [p] = [if isNullSpan p then (p,"") else (p,"}")]+lList' (p:ps) = (if isNullSpan p then (p,"") else (p,";")) : lList' ps++printSemi :: SrcSpan -> EP ()+printSemi p = do+  printWhitespace (pos p)+  unless (isNullSpan p) $ printString ";"+++--------------------------------------------------+-- Exact printing++class Annotated ast => ExactP ast where+  exactP :: ast SrcSpanInfo -> EP ()++instance ExactP Literal where+  exactP lit = case lit of+    Char       _ _ rw -> printString ('\'':rw ++ "\'")+    String     _ _ rw -> printString ('\"':rw ++ "\"")+    Int        _ _ rw -> printString rw+    Frac       _ _ rw -> printString rw+    PrimInt    _ _ rw -> printString (rw ++ "#" )+    PrimWord   _ _ rw -> printString (rw ++ "##")+    PrimFloat  _ _ rw -> printString (rw ++ "#" )+    PrimDouble _ _ rw -> printString (rw ++ "##")+    PrimChar   _ _ rw -> printString ('\'':rw ++ "\'#" )+    PrimString _ _ rw -> printString ('\"':rw ++ "\"#" )++instance ExactP Sign where+  exactP sg = case sg of+    Signless _ -> return ()+    Negative l -> printStringAt (pos l) "-"++instance ExactP ModuleName where+  exactP (ModuleName _ str) = printString str++instance ExactP SpecialCon where+  exactP sc = case sc of+    UnitCon l   -> printPoints l ["(",")"]+    ListCon l   -> printPoints l ["[","]"]+    FunCon  l   -> case srcInfoPoints l of+                    [_,b,_] -> printStringAt (pos b) "->"+                    _ -> errorEP "ExactP: SpecialCon is given wrong number of srcInfoPoints"+    TupleCon l b n -> printPoints l $+        case b of+         Unboxed -> "(#": replicate (n-1) "," ++ ["#)"]+         _       -> "(" : replicate (n-1) "," ++ [")"]+    Cons _      -> printString ":"+    UnboxedSingleCon l -> printPoints l ["(#","#)"]+    ExprHole l -> printStringAt (pos l) "_"++isSymbolName :: Name l -> Bool+isSymbolName (Symbol _ _) = True+isSymbolName _            = False++isSymbolQName :: QName l -> Bool+isSymbolQName (UnQual _ n)         = isSymbolName n+isSymbolQName (Qual _ _ n)         = isSymbolName n+isSymbolQName (Special _ Cons{})   = True+isSymbolQName (Special _ FunCon{}) = True+isSymbolQName _                    = False++instance ExactP QName where+  exactP qn+    | isSymbolQName qn =+        case srcInfoPoints (ann qn) of+         [_,b,c] -> do+            printString "("+            printWhitespace (pos b)+            epQName qn+            printStringAt (pos c) ")"+         _ -> errorEP "ExactP: QName is given wrong number of srcInfoPoints"+    | otherwise = epQName qn++epQName :: QName SrcSpanInfo -> EP ()+epQName qn = case qn of+    Qual    _ mn n  -> exactP mn >> printString "." >> exactP n+    UnQual  _    n  -> exactP n+    Special _ sc    -> exactP sc++epInfixQName :: QName SrcSpanInfo -> EP ()+epInfixQName qn+    | isSymbolQName qn = printWhitespace (pos (ann qn)) >> epQName qn+    | otherwise =+        case srcInfoPoints (ann qn) of+         [a,b,c] -> do+            printStringAt (pos a) "`"+            printWhitespace (pos b)+            epQName qn+            printStringAt (pos c) "`"+         _ -> errorEP "ExactP: QName (epInfixName) is given wrong number of srcInfoPoints"++instance ExactP Name where+  exactP n = case n of+    Ident  _ str    -> printString str+    Symbol l str    ->+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "("+            printWhitespace (pos b)+            printString str+            printStringAt (pos c) ")"+         [] -> printString str+         _ -> errorEP "ExactP: Name is given wrong number of srcInfoPoints"++epInfixName :: Name SrcSpanInfo -> EP ()+epInfixName n+    | isSymbolName n = printWhitespace (pos (ann n)) >> exactP n+    | otherwise =+        case srcInfoPoints (ann n) of+         [a,b,c] -> do+            printStringAt (pos a) "`"+            printWhitespace (pos b)+            exactP n+            printStringAt (pos c) "`"+         _ -> errorEP "ExactP: Name (epInfixName) is given wrong number of srcInfoPoints"++instance ExactP IPName where+  exactP ipn = case ipn of+    IPDup _ str -> printString $ '?':str+    IPLin _ str -> printString $ '%':str++instance ExactP QOp where+  exactP qop = case qop of+    QVarOp _ qn -> epInfixQName qn+    QConOp _ qn -> epInfixQName qn++instance ExactP Op where+  exactP op = case op of+    VarOp _ n -> epInfixName n+    ConOp _ n -> epInfixName n++++instance ExactP CName where+  exactP cn = case cn of+    VarName _ n -> exactP n+    ConName _ n -> exactP n++instance ExactP Namespace where+  exactP ns = case ns of+     NoNamespace _   -> return ()+     TypeNamespace l -> printStringAt (pos l) "type"+     PatternNamespace l -> printStringAt (pos l) "pattern"++instance ExactP ExportSpec where+  exactP espec = case espec of+     EVar _ qn    -> exactPC qn+     EAbs _ ns qn -> exactP ns >> exactPC qn+     EThingWith l wc qn cns    ->+         let names = case wc of+                        NoWildcard {} -> cns+                        EWildcard wcl n  ->+                          let (before,after) = splitAt n cns+                              wildcardName = VarName wcl (Ident wcl "..")+                          in before ++ [wildcardName] ++ after+             k = length (srcInfoPoints l)+         in exactP qn >> printInterleaved (zip (srcInfoPoints l) $ "(":replicate (k-2) "," ++ [")"]) names+     EModuleContents _ mn -> printString "module" >> exactPC mn++instance ExactP ExportSpecList where+  exactP (ExportSpecList l ess) =+    let k = length (srcInfoPoints l)+     in printInterleaved (zip (srcInfoPoints l) $ "(": replicate (k-2) "," ++ [")"]) ess++instance ExactP ImportSpecList where+  exactP (ImportSpecList l hid ispecs) = do+    let pts = srcInfoPoints l+    pts1 <- if hid then do+             let (x:pts') = pts+             printStringAt (pos x) "hiding"+             return pts'+            else return pts+    let k = length pts1+    printInterleaved (zip pts1 $ "(": replicate (k-2) "," ++ [")"]) ispecs++instance ExactP ImportSpec where+  exactP ispec = case ispec of+    IVar _ qn       -> exactPC qn+    IAbs _ ns n     -> exactP ns >> exactPC n+    IThingAll l n   -> exactP n >> printPoints l ["(","..",")"]+    IThingWith l n cns    ->+        let k = length (srcInfoPoints l)+         in exactP n >> printInterleaved (zip (srcInfoPoints l) $ "(":replicate (k-2) "," ++ [")"]) cns++instance ExactP ImportDecl where+  exactP (ImportDecl l mn qf src safe mpkg mas mispecs) = do+    printString "import"+    case srcInfoPoints l of+     (_:pts) -> do+        pts1 <- if src then+                 case pts of+                  x:y:pts' -> do+                     printStringAt (pos x) "{-# SOURCE"+                     printStringAt (pos y) "#-}"+                     return pts'+                  _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+                else return pts+        pts2 <- if safe then+                 case pts1 of+                  x:pts' -> do+                     printStringAt (pos x) "safe"+                     return pts'+                  _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+                else return pts1++        -- Try to determine if qualified is post-positioned only if we have enough points+        let isPostQual = (qf && not (null pts2)) && safeIsPostQualified pts2++        pts3 <- if qf && not isPostQual then+                  case pts2 of+                   x:pts' -> do+                     printStringAt (pos x) "qualified"+                     return pts'+                   _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+                else return pts2++        pts4 <- case mpkg of+                Just pkg ->+                  case pts3 of+                   x:pts' -> do+                      printStringAt (pos x) $ show pkg+                      return pts'+                   _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+                _ -> return pts3++        exactPC mn++        -- Only try post-qualified if we determined it's actually post-qualified+        pts5 <- if qf && isPostQual then+                 case pts4 of+                  x:pts' -> do+                     printStringAt (pos x) "qualified"+                     return pts'+                  _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+                else return pts4++        _ <- case mas of+               Just as ->+                 case pts5 of+                   x:pts' -> do+                     printStringAt (pos x) "as"+                     exactPC as+                     return pts'+                   _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+               _ -> return pts5++        case mispecs of+         Nothing -> return ()+         Just ispecs -> exactPC ispecs+     _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+    where safeIsPostQualified pts =+            case pts of+              (p:_) ->+                let modSpan = srcInfoSpan (ann mn)+                    -- Only consider it post-qualified if we have valid spans to compare+                in ((isValidSpan modSpan && isValidSpan p) &&+                    (srcSpanEnd modSpan <= srcSpanStart p))+              _ -> False+            where+              isValidSpan s =+                srcSpanStartLine s > 0 && srcSpanEndLine s > 0 &&+                srcSpanStartColumn s >= 0 && srcSpanEndColumn s >= 0++instance ExactP Module where+  exactP mdl = case mdl of+    Module l mmh oss ids decls -> do+        let (oPts, pts) = splitAt (max (length oss + 1) 2) (srcInfoPoints l)+        layoutList oPts oss+        maybeEP exactPC mmh+        printStreams (map (pos *** printString) $ lList pts)+                     (map (pos . ann &&& exactPC) ids ++ map (pos . ann &&& exactPC) (sepFunBinds decls))+    XmlPage l _mn oss xn attrs mat es  -> do+        let (oPts, pPts) = splitAt (max (length oss + 1) 2) $ srcInfoPoints l+        case pPts of+         [a,b,c,d,e] -> do+            layoutList oPts oss+            printStringAt (pos a) "<"+            exactPC xn+            mapM_ exactPC attrs+            maybeEP exactPC mat+            printStringAt (pos b) ">"+            mapM_ exactPC es+            printStringAt (pos c) "</"+            printWhitespace (pos d)+            exactP xn+            printStringAt (pos e) ">"+         _ -> errorEP "ExactP: Module: XmlPage is given wrong number of srcInfoPoints"+    XmlHybrid l mmh oss ids decls xn attrs mat es -> do+        let (oPts, pts) = splitAt (max (length oss + 1) 2) (srcInfoPoints l)+        layoutList oPts oss+        maybeEP exactPC mmh+        let (dPts, pPts) = splitAt (length pts - 5) pts+        case pPts of+         [a,b,c,d,e] -> do+            printStreams (map (\(p,s) -> (pos p, printString s)) $ lList dPts)+                         (map (\i -> (pos $ ann i, exactPC i)) ids ++ map (\d' -> (pos $ ann d', exactPC d')) (sepFunBinds decls))++            printStringAt (pos a) "<"+            exactPC xn+            mapM_ exactPC attrs+            maybeEP exactPC mat+            printStringAt (pos b) ">"+            mapM_ exactPC es+            printStringAt (pos c) "</"+            printWhitespace (pos d)+            exactP xn+            printStringAt (pos e) ">"+         _ -> errorEP "ExactP: Module: XmlHybrid is given wrong number of srcInfoPoints"++instance ExactP ModuleHead where+  exactP (ModuleHead l mn mwt mess) =+    case srcInfoPoints l of+     [a,b] -> do+        printStringAt (pos a) "module"+        exactPC mn+        maybeEP exactPC mwt+        maybeEP exactPC mess+        printStringAt (pos b) "where"+     _ -> errorEP "ExactP: ModuleHead is given wrong number of srcInfoPoints"++instance ExactP ModulePragma where+  exactP op = case op of+    LanguagePragma   l ns       ->+        let pts = srcInfoPoints l+            k = length ns - 1 -- number of commas+            m = length pts - k - 2 -- number of virtual semis, likely 0+         in printInterleaved (zip pts ("{-# LANGUAGE":replicate k "," ++ replicate m "" ++ ["#-}"])) ns+    OptionsPragma    l mt str   ->+        let k = length (srcInfoPoints l)+            -- We strip out a leading space in the lexer unless the pragma+            -- starts with a newline.+            addSpace xs@('\n':_) = xs+            addSpace xs = ' ':xs+            opstr = "{-# OPTIONS" ++ case mt of { Just t -> "_" ++ show t ; _ -> "" } ++ addSpace str+         in printPoints l $ opstr : replicate (k-2) "" ++ ["#-}"]+    AnnModulePragma  l ann'      ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "{-# ANN"+            exactPC ann'+            printStringAt (pos b) "#-}"+         _ -> errorEP "ExactP: ModulePragma: AnnPragma is given wrong number of srcInfoPoints"++instance ExactP WarningText where+    exactP (DeprText l str) = printPoints l ["{-# DEPRECATED", str, "#-}"]+    exactP (WarnText l str) = printPoints l ["{-# WARNING",    str, "#-}"]++instance ExactP Assoc where+  exactP a = case a of+    AssocNone  _ -> printString "infix"+    AssocLeft  _ -> printString "infixl"+    AssocRight _ -> printString "infixr"++instance ExactP DataOrNew where+  exactP (DataType _) = printString "data"+  exactP (NewType  _) = printString "newtype"++instance ExactP TypeEqn where+  exactP (TypeEqn l t1 t2) =+    case srcInfoPoints l of+      [a] -> do+         exactPC t1+         printStringAt (pos a) "="+         exactPC t2+      _ -> errorEP "ExactP: TypeEqn is given wrong number of srcInfoPoints"++instance ExactP InjectivityInfo where+  exactP (InjectivityInfo l to from) =+    case srcInfoPoints l of+      a:b:_ -> do+        printStringAt (pos a) "|"+        exactPC to+        printStringAt (pos b) "->"+        mapM_ exactPC from+      _ -> errorEP "ExactP: InjectivityInfo given wrong number of srcInfoPoints"++instance ExactP ResultSig where+  exactP (KindSig l k) =+    case srcInfoPoints l of+      a:_ -> do+        printStringAt (pos a) "::"+        exactPC k+      _ -> errorEP "ExactP: ResultSig given wrong number of srcInfoPoints"+  exactP (TyVarSig l tv) =+    case srcInfoPoints l of+      a:_ -> do+        printStringAt (pos a) "="+        exactPC tv+      _ -> errorEP "ExactP: ResultSig given wrong number of srcInfoPoints"+++instance ExactP Decl where+  exactP decl = case decl of+    TypeDecl     l dh t      ->+        case srcInfoPoints l of+         [a,b] -> do+            printStringAt (pos a) "type"+            exactPC dh+            printStringAt (pos b) "="+            exactPC t+         _ -> errorEP "ExactP: Decl: TypeDecl is given wrong number of srcInfoPoints"+    TypeFamDecl  l dh mk mi   ->+        case srcInfoPoints l of+         a:b:_ -> do+            printStringAt (pos a) "type"+            printStringAt (pos b) "family"+            exactPC dh+            maybeEP exactPC mk+            maybeEP exactPC mi+         _ -> errorEP "ExactP: Decl: TypeFamDecl is given wrong number of srcInfoPoints"+    ClosedTypeFamDecl  l dh mk mi eqns ->+        case srcInfoPoints l of+         a:b:c:_ -> do+            printStringAt (pos a) "type"+            printStringAt (pos b) "family"+            exactPC dh+            maybeEP exactPC mk+            maybeEP exactPC mi+            printStringAt (pos c) "where"+            mapM_ exactP eqns+         _ -> errorEP "ExactP: Decl: ClosedTypeFamDecl is given wrong number of srcInfoPoints"+    DataDecl     l dn mctxt dh constrs mder -> do+        exactP dn+        maybeEP exactPC mctxt+        exactPC dh+        -- the next line works for empty data types since the srcInfoPoints will be empty then+        printInterleaved (zip (srcInfoPoints l) ("=": repeat "|")) constrs+        mapM_ exactPC mder+    GDataDecl    l dn mctxt dh mk gds mder -> do+        let pts = srcInfoPoints l+        exactP dn+        maybeEP exactPC mctxt+        exactPC dh+        pts1 <- case mk of+                Nothing -> return pts+                Just kd -> case pts of+                            p:pts' -> do+                               printStringAt (pos p) "::"+                               exactPC kd+                               return pts'+                            _ -> errorEP "ExactP: Decl: GDataDecl is given too few srcInfoPoints"+        case pts1 of+         x:pts' -> do+            printStringAt (pos x) "where"+            layoutList pts' gds+            mapM_ exactPC mder+         _ -> errorEP "ExactP: Decl: GDataDecl is given too few srcInfoPoints"+    DataFamDecl  l mctxt dh mk -> do+        printString "data"+        maybeEP exactPC mctxt+        exactPC dh+        maybeEP (\kd -> printStringAt (pos (head (srcInfoPoints l))) "::" >> exactPC kd) mk+    TypeInsDecl  l t1 t2 ->+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "type"+            printStringAt (pos b) "instance"+            exactPC t1+            printStringAt (pos c) "="+            exactPC t2+         _ -> errorEP "ExactP: Decl: TypeInsDecl is given wrong number of srcInfoPoints"+    DataInsDecl  l dn t constrs mder    ->+        case srcInfoPoints l of+         p:pts -> do+            exactP dn+            printStringAt (pos p) "instance"+            exactPC t+            printInterleaved (zip pts ("=": repeat "|")) constrs+            mapM_ exactPC mder+         _ -> errorEP "ExactP: Decl: DataInsDecl is given too few srcInfoPoints"+    GDataInsDecl l dn t mk gds mder     ->+        case srcInfoPoints l of+         p:pts -> do+            exactP dn+            printStringAt (pos p) "instance"+            exactPC t+            pts1 <- case mk of+                    Nothing -> return pts+                    Just kd -> case pts of+                                p':pts' -> do+                                    printStringAt (pos p') "::"+                                    exactPC kd+                                    return pts'+                                _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints"+            case pts1 of+             x:pts' -> do+                printStringAt (pos x) "where"+                layoutList pts' gds+                mapM_ exactPC mder+             _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints"+         _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints"+    ClassDecl    l mctxt dh fds mcds    ->+        case srcInfoPoints l of+         _:pts -> do+            printString "class"+            maybeEP exactPC mctxt+            exactPC dh+            _ <- case fds of+                    [] -> return pts+                    _  -> do+                      let (pts1, pts2) = splitAt (length fds) pts+                      printInterleaved (zip pts1 ("|":repeat ",")) fds+                      return pts2+            maybeEP (\cds ->+                case pts of+                 p:pts' -> do+                    printStringAt (pos p) "where"+                    layoutList pts' $ sepClassFunBinds cds+                 _ -> errorEP "ExactP: Decl: ClassDecl is given too few srcInfoPoints"+                ) mcds+         _ -> errorEP "ExactP: Decl: ClassDecl is given too few srcInfoPoints"+    InstDecl     l movlp ih mids        ->+        case srcInfoPoints l of+         _:pts -> do+            printString "instance"+            maybeEP exactPC movlp+            exactPC ih+            maybeEP (\ids -> do+                let (p:pts') = pts+                printStringAt (pos p) "where"+                layoutList pts' $ sepInstFunBinds ids+                ) mids+         _ -> errorEP "ExactP: Decl: InstDecl is given too few srcInfoPoints"+    DerivDecl    l mds movlp ih             ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "deriving"+            maybeEP exactPC mds+            printStringAt (pos b) "instance"+            maybeEP exactPC movlp+            exactPC ih+         _ -> errorEP "ExactP: Decl: DerivDecl is given wrong number of srcInfoPoints"+    InfixDecl    l assoc mprec ops      -> do+        let pts = srcInfoPoints l+        exactP assoc+        pts1 <- case mprec of+                Nothing -> return pts+                Just prec ->+                    case pts of+                     p:pts' -> do+                        printStringAt (pos p) (show prec)+                        return pts'+                     _ -> errorEP "ExactP: Decl: InfixDecl is given too few srcInfoPoints"+        printInterleaved' (zip pts1 (repeat ",")) ops+    DefaultDecl  l ts   ->+        case srcInfoPoints l of+         _:pts -> do+            printString "default"+            printInterleaved (zip (init pts) ("(":repeat ",")) ts+            printStringAt (pos (last pts)) ")"+         _ -> errorEP "ExactP: Decl: DefaultDecl is given too few srcInfoPoints"+    SpliceDecl   _ spl  -> exactP spl+    TSpliceDecl  _ spl  -> exactP spl+    TypeSig      l ns t -> do+        let pts = srcInfoPoints l+        printInterleaved' (zip pts (replicate (length pts - 1) "," ++ ["::"])) ns+        exactPC t+    PatSynSig l ns dh c1 _ c2 t -> do+        let (pat:pts) = srcInfoPoints l+        printStringAt (pos pat) "pattern"+        printInterleaved' (zip pts (replicate (length ns - 1) "," ++ ["::"])) ns+        case dh of+          Nothing -> return ()+          Just tvs ->+            -- (length ns - 1) commas + 1 for "::"+            case drop (length ns) pts of+              (a:b:_) -> do+                    printStringAt (pos a) "forall"+                    mapM_ exactPC tvs+                    printStringAt (pos b) "."+              _ -> errorEP ("ExactP: Decl: PatSynSig: Forall: is given too few srcInfoPoints" ++ show pts ++ show (drop (length ns + 1) pts))+        maybeEP exactPC c1+        maybeEP exactPC c2+        exactPC t+    FunBind      _ ms   -> mapM_ exactPC ms+    PatBind      l p rhs mbs -> do+        let pts = srcInfoPoints l+        exactP p+        exactPC rhs+        maybeEP (\bs -> printStringAt (pos (head pts)) "where" >> exactPC bs) mbs+    PatSyn l lhs rhs dir ->+      case srcInfoPoints l of+        [pat,sepPos] -> do+          let sep = case dir of+                      ImplicitBidirectional     -> "="+                      ExplicitBidirectional _ _ -> "<-"+                      Unidirectional            -> "<-"+          printStringAt (pos pat) "pattern"+          exactPC lhs+          printStringAt (pos sepPos) sep+          exactPC rhs+          case dir of+            ExplicitBidirectional bl ds -> do+              case srcInfoPoints bl of+                (w:pts) -> do+                  printStringAt (pos w) "where"+                  layoutList pts ds+                _ -> errorEP "ExactP: Decl: PaySyn: ExplicitBidirectional is given too few srcInfoPoints"+            _ -> return ()+        _ -> errorEP "ExactP: Decl: PatSyn is given too few srcInfoPoints"+    ForImp       l cc msf mstr n t   ->+        case srcInfoPoints l of+         _:b:pts -> do+            printString "foreign"+            printStringAt (pos b) "import"+            exactPC cc+            maybeEP exactPC msf+            pts1 <- case mstr of+                      Nothing -> return pts+                      Just str -> case pts of+                                   x:pts' -> do+                                      printStringAt (pos x) (show str)+                                      return pts'+                                   _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints"+            case pts1 of+             y:_ -> do+                exactPC n+                printStringAt (pos y) "::"+                exactPC t+             _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints"+         _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints"+    ForExp       l cc mstr n t      ->+        case srcInfoPoints l of+         _:b:pts -> do+            printString "foreign"+            printStringAt (pos b) "export"+            exactPC cc+            pts1 <- case mstr of+                      Nothing -> return pts+                      Just str -> case pts of+                                   x:pts' -> do+                                      printStringAt (pos x) (show str)+                                      return pts'+                                   _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints"+            case pts1 of+             y:_ -> do+                exactPC n+                printStringAt (pos y) "::"+                exactPC t+             _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints"+         _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints"+    RulePragmaDecl   l rs   ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "{-# RULES"+            mapM_ exactPC rs+            printStringAt (pos b) "#-}"+         _ -> errorEP "ExactP: Decl: RulePragmaDecl is given too few srcInfoPoints"+    DeprPragmaDecl   l nstrs ->+        case srcInfoPoints l of+         _:pts -> do+            printString "{-# DEPRECATED"+            printWarndeprs (map pos (init pts)) nstrs+            printStringAt (pos (last pts)) "#-}"+         _ -> errorEP "ExactP: Decl: DeprPragmaDecl is given too few srcInfoPoints"+    WarnPragmaDecl   l nstrs ->+        case srcInfoPoints l of+         _:pts -> do+            printString "{-# WARNING"+            printWarndeprs (map pos (init pts)) nstrs+            printStringAt (pos (last pts)) "#-}"+         _ -> errorEP "ExactP: Decl: WarnPragmaDecl is given too few srcInfoPoints"+    InlineSig        l inl mact qn    ->+        case srcInfoPoints l of+         [_,b] -> do+            printString $ if inl then "{-# INLINE" else "{-# NOINLINE"+            maybeEP exactPC mact+            exactPC qn+            printStringAt (pos b) "#-}"+         _ -> errorEP "ExactP: Decl: InlineSig is given wrong number of srcInfoPoints"+    InlineConlikeSig l mact qn    ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "{-# INLINE CONLIKE"+            maybeEP exactPC mact+            exactPC qn+            printStringAt (pos b) "#-}"+         _ -> errorEP "ExactP: Decl: InlineConlikeSig is given wrong number of srcInfoPoints"+    SpecSig          l mact qn ts ->+        case srcInfoPoints l of+         _:pts -> do+            printString "{-# SPECIALISE"+            maybeEP exactPC mact+            exactPC qn+            printInterleaved (zip pts ("::" : replicate (length pts - 2) "," ++ ["#-}"])) ts+         _ -> errorEP "ExactP: Decl: SpecSig is given too few srcInfoPoints"+    SpecInlineSig    l b mact qn ts ->+        case srcInfoPoints l of+         _:pts -> do+            printString $ "{-# SPECIALISE " ++ if b then "INLINE" else "NOINLINE"+            maybeEP exactPC mact+            exactPC qn+            printInterleaved (zip pts ("::" : replicate (length pts - 2) "," ++ ["#-}"])) ts+         _ -> errorEP "ExactP: Decl: SpecInlineSig is given too few srcInfoPoints"+    InstSig          l ih     ->+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "{-# SPECIALISE"+            printStringAt (pos b) "instance"+            exactPC ih+            printStringAt (pos c) "#-}"+         _ -> errorEP "ExactP: Decl: InstSig is given wrong number of srcInfoPoints"+    AnnPragma       l ann'       ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "{-# ANN"+            exactPC ann'+            printStringAt (pos b) "#-}"+         _ -> errorEP "ExactP: Decl: AnnPragma is given wrong number of srcInfoPoints"+    MinimalPragma       l b      ->+        case srcInfoPoints l of+         [_,b'] -> do+            printString "{-# MINIMAL"+            maybeEP exactPC b+            printStringAt (pos b') "#-}"+         _ -> errorEP "ExactP: Decl: MinimalPragma is given wrong number of srcInfoPoints"+    RoleAnnotDecl l ty roles ->+      case srcInfoPoints l of+         (t:r:_) -> do+            printStringAt (pos t)  "type"+            printStringAt (pos r)  "role"+            exactPC ty+            mapM_ exactPC roles+         _ -> errorEP "ExactP: Decl: RoleAnnotDecl is given wrong number of srcInfoPoints"+    CompletePragma l cls opt_ts ->+      case srcInfoPoints l of+        (t:rs) -> do+          let (cls_s, rs') = splitAt (length cls - 1) rs+          printStringAt (pos t)"{-# COMPLETE"+          printInterleaved' (zip cls_s (repeat ",")) cls+          case (rs', opt_ts) of+             ((opt_dcolon: end:_), Just tc) -> do+                printStringAt (pos opt_dcolon) "::"+                exactPC tc+                printStringAt (pos end) "#-}"+             ([end], Nothing) -> printStringAt (pos end) "#-}"+             _ -> errorEP "ExactP: Decl: CompletePragma is given wrong number of srcInfoPoints"+        _ -> errorEP "ExactP: Decl: CompletePragma is given wrong number of srcInfoPoints"+++instance ExactP Role where+  exactP r =+    case r of+      RoleWildcard l     -> printStringAt (pos l) "_"+      Representational l -> printStringAt (pos l) "representational"+      Phantom l          -> printStringAt (pos l) "phantom"+      Nominal l          -> printStringAt (pos l) "nominal"+++instance ExactP Annotation where+    exactP ann' = case ann' of+        Ann     _ n e   -> do+            exactP n+            exactPC e+        TypeAnn _ n e   -> do+            printString "type"+            exactPC n+            exactPC e+        ModuleAnn _ e   -> do+            printString "module"+            exactPC e++instance ExactP BooleanFormula where+    exactP b' = case b' of+        VarFormula _ n -> exactPC n+        AndFormula l bs ->+         let pts = srcInfoPoints l+         in printStreams (zip (map pos pts) (repeat $ printString ",")) (map (pos . ann &&& exactPC) bs)+        OrFormula l bs   ->+         let pts = srcInfoPoints l+         in printStreams (zip (map pos pts) (repeat $ printString "|")) (map (pos . ann &&& exactPC) bs)+        ParenFormula l b   ->+            case srcInfoPoints l of+                [a'',b''] -> printStringAt (pos a'') "(" >> exactPC b >> printStringAt (pos b'') ")"+                _ -> errorEP "ExactP: BooleanFormula: ParenFormula is given wrong number of srcInfoPoints"++printWarndeprs :: [Pos] -> [([Name SrcSpanInfo], String)] -> EP ()+printWarndeprs _ [] = return ()+printWarndeprs ps' ((ns',str'):nsts') = printWd ps' ns' str' nsts'+  where printWd :: [Pos] -> [Name SrcSpanInfo] -> String -> [([Name SrcSpanInfo], String)] -> EP ()+        printWd (p:ps) []  str nsts = printStringAt p (show str) >> printWarndeprs ps nsts+        printWd ps     [n] str nsts = exactPC n >> printWd ps [] str nsts+        printWd (p:ps) (n:ns) str nsts = exactPC n >> printStringAt p "," >> printWd ps ns str nsts+        printWd _ _ _ _ = internalError "printWd"+++sepFunBinds :: [Decl SrcSpanInfo] -> [Decl SrcSpanInfo]+sepFunBinds [] = []+sepFunBinds (FunBind _ ms:ds) = map (\m -> FunBind (ann m) [m]) ms ++ sepFunBinds ds+sepFunBinds (d:ds) = d : sepFunBinds ds++sepClassFunBinds :: [ClassDecl SrcSpanInfo] -> [ClassDecl SrcSpanInfo]+sepClassFunBinds [] = []+sepClassFunBinds (ClsDecl _ (FunBind _ ms):ds) = map (\m -> ClsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepClassFunBinds ds+sepClassFunBinds (d:ds) = d : sepClassFunBinds ds++sepInstFunBinds :: [InstDecl SrcSpanInfo] -> [InstDecl SrcSpanInfo]+sepInstFunBinds [] = []+sepInstFunBinds (InsDecl _ (FunBind _ ms):ds) = map (\m -> InsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepInstFunBinds ds+sepInstFunBinds (d:ds) = d : sepInstFunBinds ds++instance ExactP DeclHead where+  exactP dh' = case dh' of+    DHead _ n           -> exactP n+    DHInfix _ tva n     -> exactP tva >> epInfixName n+    DHParen l dh        ->+        case srcInfoPoints l of+         [_,b] -> printString "(" >> exactPC dh >> printStringAt (pos b) ")"+         _ -> errorEP "ExactP: DeclHead: DeclParen is given wrong number of srcInfoPoints"+    DHApp   _ dh t      -> exactP dh >> exactPC t++instance ExactP InstRule where+  exactP ih' = case ih' of+    IRule l mtvs mctxt qn    -> do+        let pts = srcInfoPoints l+        _ <- case mtvs of+                Nothing -> return pts+                Just tvs ->+                    case pts of+                     [a,b] -> do+                        printStringAt (pos a) "forall"+                        mapM_ exactPC tvs+                        printStringAt (pos b) "."+                        return pts+                     _ -> errorEP "ExactP: InstRule: IRule is given too few srcInfoPoints"+        maybeEP exactPC mctxt+        exactPC qn+    IParen l ih        ->+        case srcInfoPoints l of+         [a,b] -> printStringAt (pos a) "(" >> exactPC ih >> printStringAt (pos b) ")"+         _ -> errorEP "ExactP: InstRule: IParen is given wrong number of srcInfoPoints"++instance ExactP InstHead where+   exactP doih' = case doih' of+    IHCon _ qn      -> exactPC qn+    IHInfix _ ta qn -> exactPC ta >> epInfixQName qn+    IHParen l doih  ->+        case srcInfoPoints l of+         [a,b] -> printStringAt (pos a) "(" >> exactPC doih >> printStringAt (pos b) ")"+         _ -> errorEP "ExactP: OrInstHead: IHParen is given wrong number of srcInfoPoints"+    IHApp _ doih t  -> exactPC doih >> exactPC t++instance ExactP TyVarBind where+  exactP (KindedVar   l n k) =+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "("+            exactPC n+            printStringAt (pos b) "::"+            exactPC k+            printStringAt (pos c) ")"+         _ -> errorEP "ExactP: TyVarBind: KindedVar is given wrong number of srcInfoPoints"+  exactP (UnkindedVar l n) =+        case srcInfoPoints l of+                 [a,_,c] -> do+                    printStringAt (pos a) "("+                    exactPC n+                    printStringAt (pos c) ")"+                 [] -> exactPC n+                 _ -> errorEP "ExactP: TyVarBind: UnkindedVar is given wrong number of srcInfoPoints"++instance ExactP Type where+  exactP t' = case t' of+    TyForall l mtvs mctxt t -> do+        let pts = srcInfoPoints l+        _ <- case mtvs of+                Nothing -> return pts+                Just tvs ->+                    case pts of+                     _:b:pts' -> do+                        printString "forall"+                        mapM_ exactPC tvs+                        printStringAt (pos b) "."+                        return pts'+                     _ -> errorEP "ExactP: Type: TyForall is given too few srcInfoPoints"+        maybeEP exactPC mctxt+        exactPC t+    TyStar  _ -> printString "*"+    TyFun   l t1 t2 ->+        case srcInfoPoints l of+         [a] -> do+            exactP t1+            printStringAt (pos a) "->"+            exactPC t2+         _ -> errorEP "ExactP: Type: TyFun is given wrong number of srcInfoPoints"+    TyTuple l bx ts ->+        case bx of+          Boxed   -> parenList (srcInfoPoints l) ts+          Unboxed -> parenHashList (srcInfoPoints l) ts+    TyUnboxedSum l es ->+      unboxedSumTypeList (srcInfoPoints l) es+    TyList  l t     ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "["+            exactPC t+            printStringAt (pos b) "]"+         _ -> errorEP "ExactP: Type: TyList is given wrong number of srcInfoPoints"+    TyParArray l t     ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "[:"+            exactPC t+            printStringAt (pos b) ":]"+         _ -> errorEP "ExactP: Type: TyParArray is given wrong number of srcInfoPoints"+    TyApp   _ t1 t2 -> exactP t1 >> exactPC t2+    TyVar   _ n     -> exactP n+    TyCon   _ qn    -> exactP qn+    TyParen l t     ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "("+            exactPC t+            printStringAt (pos b) ")"+         _ -> errorEP "ExactP: Type: TyParen is given wrong number of srcInfoPoints"+    TyInfix _ t1 qn t2 -> exactP t1 >> exactP qn >> exactPC t2+    TyKind  l t kd ->+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "("+            exactPC t+            printStringAt (pos b) "::"+            exactPC kd+            printStringAt (pos c) ")"+         _ -> errorEP "ExactP: Type: TyKind is given wrong number of srcInfoPoints"+    TyPromoted _ p -> exactPC p+    TyEquals l t0 t1 -> case srcInfoPoints l of+                          a:_ -> exactPC t0 >> printStringAt (pos a) "~" >> exactPC t1+                          _   -> errorEP "ExactP: Type: TyEquals is given wrong number of srcInfoPoints"++    TySplice _ sp  -> exactP sp+    TyBang _ b u t -> exactPC u >> exactPC b >> exactPC t+    TyWildCard _ mn      -> printString "_" >> maybeEP exactPC mn+    TyQuasiQuote _ name qt    -> do+        let qtLines = lines qt+        printString $ "[" ++ name ++ "|"+        sequence_ (intersperse newLine $ map printString qtLines)+        printString "|]"++instance ExactP MaybePromotedName where+  exactP (PromotedName l qn)  = case srcInfoPoints l of+    [a] -> printStringAt (pos a) "'" >> epInfixQName qn+    _ -> errorEP "ExactP: MaybePromotedName: PromotedName given wrong number of args"+  exactP (UnpromotedName _ qn) = epInfixQName qn++instance ExactP Promoted where+  exactP (PromotedInteger _ _ rw) = printString rw+  exactP (PromotedString _ _ rw)  = printString ('\"':rw ++ "\"")+  exactP (PromotedCon l True qn)  = case srcInfoPoints l of+    [a] -> printStringAt (pos a) "'" >> epQName qn+    _ -> errorEP "ExactP: Promoted: PromotedCon is given wrong number of srcInfoPoints"+  exactP (PromotedCon _ False qn) = epQName qn+  exactP (PromotedList l b pl) =+    let o | b = "'[" | otherwise = "["+        e = "]"+        pts = srcInfoPoints l+    in printInterleaved (zip pts (o: replicate (length pts - 2) "," ++ [e])) pl+  exactP (PromotedTuple l pl) =+    let o = "'("+        e = ")"+        pts = srcInfoPoints l+    in printInterleaved (zip pts (o: replicate (length pts - 2) "," ++ [e])) pl+  exactP (PromotedUnit l) = case srcInfoPoints l of+    [_,b] -> do+        printString "("+        printStringAt (pos b) ")"+    _ -> errorEP "ExactP: Promoted: PromotedUnit is given wrong number of srcInfoPoints"+++instance ExactP Context where+  exactP ctxt = do+    printContext ctxt+    printStringAt (pos . last . srcInfoPoints . ann $ ctxt) "=>"++printContext :: Context SrcSpanInfo -> EP ()+printContext ctxt = do+    let l = ann ctxt+        pts = init $ srcInfoPoints l+    case ctxt of+     CxSingle _ asst -> exactP asst+     CxEmpty _ ->+        case pts of+         [a,b] -> do+            printStringAt (pos a) "("+            printStringAt (pos b) ")"+         _ -> errorEP "ExactP: Context: CxEmpty is given wrong number of srcInfoPoints"+     CxTuple _ assts -> parenList pts assts+++instance ExactP Asst where+  exactP asst = case asst of+    TypeA _ t -> exactP t+    IParam l ipn t    ->+        case srcInfoPoints l of+         [a] -> do+            exactP ipn+            printStringAt (pos a) "::"+            exactPC t+         _ -> errorEP "ExactP: Asst: IParam is given wrong number of srcInfoPoints"+    ParenA l asst' ->+        case take 2 $ srcInfoPoints l of+         [a,b] -> do+            printStringAt (pos a) "("+            exactPC asst'+            printStringAt (pos b) ")"+         _ -> errorEP "ExactP: Asst: ParenA is given wrong number of srcInfoPoints"++instance ExactP Deriving where+  exactP (Deriving l mds ihs) =+    case srcInfoPoints l of+     _:pts -> do+        printString "deriving"+        maybeEP exactPC mds+        case pts of+         [] -> exactPC $ head ihs+         _  -> parenList pts ihs+     _ -> errorEP "ExactP: Deriving is given too few srcInfoPoints"++instance ExactP DerivStrategy where+  exactP (DerivStock _) =+    printString "stock"+  exactP (DerivAnyclass _) =+    printString "anyclass"+  exactP (DerivNewtype _) =+    printString "newtype"+  exactP (DerivVia _ ty) = do+    printString "via"+    exactP ty++instance ExactP ClassDecl where+  exactP cdecl = case cdecl of+    ClsDecl    _ d -> exactP d+    ClsDataFam l mctxt dh mk ->+        case srcInfoPoints l of+         _:pts -> do+            printString "data"+            maybeEP exactPC mctxt+            exactPC dh+            maybeEP (\kd -> printStringAt (pos (head pts)) "::" >> exactPC kd) mk+         _ -> errorEP "ExactP: ClassDecl: ClsDataFam is given too few srcInfoPoints"+    ClsTyFam   l dh mk mi ->+        case srcInfoPoints l of+         _:_ -> do+            printString "type"+            exactPC dh+            maybeEP exactPC mk+            maybeEP exactPC mi+         _ -> errorEP "ExactP: ClassDecl: ClsTyFam is given too few srcInfoPoints"+    ClsTyDef   l t1 ->+        case srcInfoPoints l of+         _:b:_ -> do -- 3 sourceInfoPoints implies parsed as "type instance"+            printString "type"+            printStringAt (pos b) "instance"+            exactPC t1+         _:_ -> do+            printString "type"+            exactPC t1+         _ -> errorEP "ExactP: ClassDecl: ClsTyDef is given too few srcInfoPoints"+    ClsDefSig  l n t    ->+        case srcInfoPoints l of+         _:b:_ -> do+            printString "default"+            exactPC n+            printStringAt (pos b) "::"+            exactPC t+         _ -> errorEP "ExactP: ClassDecl: ClsDefSig is given too few srcInfoPoints"+++instance ExactP InstDecl where+  exactP idecl = case idecl of+    InsDecl   _ d -> exactP d+    InsType   l t1 t2 ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "type"+            exactPC t1+            printStringAt (pos b) "="+            exactPC t2+         _ -> internalError "InstDecl -> InsType"+    InsData   l dn t constrs mder -> do+        exactP dn+        exactPC t+        printInterleaved (zip (srcInfoPoints l) ("=": repeat "|")) constrs+        mapM_ exactPC mder+    InsGData  l dn t mk gds mder  -> do+        let pts = srcInfoPoints l+        exactP dn+        exactPC t+        pts1 <- case mk of+                Nothing -> return pts+                Just kd -> case pts of+                            p:pts' -> do+                                printStringAt (pos p) "::"+                                exactPC kd+                                return pts'+                            _ -> errorEP "ExactP: InstDecl: InsGData is given too few srcInfoPoints"+        case pts1 of+         x:_ -> do+            printStringAt (pos x) "where"+            mapM_ exactPC gds+            mapM_ exactPC mder+         _ -> errorEP "ExactP: InstDecl: InsGData is given too few srcInfoPoints"+--  InsInline l inl mact qn   -> do+--        case srcInfoPoints l of+--         [a,b] -> do+--            printString $ if inl then "{-# INLINE" else "{-# NOINLINE"+--            maybeEP exactPC mact+--            exactPC qn+--            printStringAt (pos b) "#-}"+--         _ -> errorEP "ExactP: InstDecl: InsInline is given wrong number of srcInfoPoints"++instance ExactP FunDep where+  exactP (FunDep l nxs nys) =+    case srcInfoPoints l of+     [a] -> do+        mapM_ exactPC nxs+        printStringAt (pos a) "->"+        mapM_ exactPC nys+     _ -> errorEP "ExactP: FunDep is given wrong number of srcInfoPoints"++instance ExactP QualConDecl where+  exactP (QualConDecl l mtvs mctxt cd) = do+        let pts = srcInfoPoints l+        _ <- case mtvs of+                Nothing -> return pts+                Just tvs ->+                    case pts of+                     _:b:pts' -> do+                        printString "forall"+                        mapM_ exactPC tvs+                        printStringAt (pos b) "."+                        return pts'+                     _ -> errorEP "ExactP: QualConDecl is given wrong number of srcInfoPoints"+        maybeEP exactPC mctxt+        exactPC cd++instance ExactP ConDecl where+  exactP cd = case cd of+    ConDecl _ n bts -> exactP n >> mapM_ exactPC bts+    InfixConDecl _ bta n btb -> exactP bta >> epInfixName n >> exactP btb+    RecDecl l n fds -> exactP n >> curlyList (srcInfoPoints l) fds++instance ExactP GadtDecl where+  exactP (GadtDecl l n _mtvs mctxt ns' t) =+    case ns' of+        Nothing ->+            case srcInfoPoints l of+                [a] -> do+                    exactP n+                    printStringAt (pos a) "::"+                    exactPC t+                _ -> errorEP "ExactP: GadtDecl is given wrong number of srcInfoPoints"+        Just ts ->+            case srcInfoPoints l of+                (a:b:c:d:rest) -> do+                    exactPC n+                    printStringAt (pos a) "::"+                    maybeEP exactPC mctxt+                    printStringAt (pos b) "{"+                    printInterleaved' (zip rest (repeat ",")) ts+                    printStringAt (pos c) "}"+                    printStringAt (pos d) "->"+                    exactPC t+                _ -> errorEP "ExactP: GadtDecl is given wrong number of srcInfoPoints"++instance ExactP BangType where+  exactP bt = case bt of+    BangedTy   l  -> printStringAt (pos l) "!"+    LazyTy l -> printStringAt (pos l) "~"+    _ -> return ()++instance ExactP Unpackedness where+  exactP bt = case bt of+    Unpack l  ->+      case srcInfoPoints l of+       [a,b] -> do+          printStringAt (pos a) "{-# UNPACK"+          printStringAt (pos b) "#-}"+       _ -> errorEP "ExactP: Unpackedness: Unpack is given wrong number of srcInfoPoints"+    NoUnpack l  ->+      case srcInfoPoints l of+       [a,b] -> do+          printStringAt (pos a) "{-# NOUNPACK"+          printStringAt (pos b) "#-}"+       _ -> errorEP "ExactP: Unpackedness: NoUnpack is given wrong number of srcInfoPoints"+    NoUnpackPragma {} -> return ()++instance ExactP Splice where+  exactP (IdSplice _ str) = printString $ '$':str+  exactP (TIdSplice _ str) = printString $ "$$" ++ str+  exactP (ParenSplice l e) = printParen "ParenSplice" "$(" l e+  exactP (TParenSplice l e) = printParen "TParenSplice" "$$(" l e++printParen :: ExactP ast => String -> String -> SrcSpanInfo -> ast SrcSpanInfo -> EP ()+printParen con paren l e =+    case srcInfoPoints l of+     [_,b] -> do+        printString paren+        exactPC e+        printStringAt (pos b) ")"+     _ -> errorEP $ "ExactP: Splice: " ++ con ++ " is given wrong number of srcInfoPoints"++instance ExactP Exp where+  exactP exp = case exp of+    Var _ qn        -> exactP qn+    OverloadedLabel _ qn -> printString ('#':qn)+    IPVar _ ipn     -> exactP ipn+    Con _ qn        -> exactP qn+    Lit _ lit       -> exactP lit+    InfixApp _ e1 op e2 -> exactP e1 >> exactPC op >> exactPC e2+    App _ e1 e2     -> exactP e1 >> exactPC e2+    NegApp _ e      -> printString "-" >> exactPC e+    Lambda l ps e   ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "\\"+            mapM_ exactPC ps+            printStringAt (pos b) "->"+            exactPC e+         _ -> errorEP "ExactP: Exp: Lambda is given wrong number of srcInfoPoints"+    Let l bs e      ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "let"+            exactPC bs+            printStringAt (pos b) "in"+            exactPC e+         _ -> errorEP "ExactP: Exp: Let is given wrong number of srcInfoPoints"+    If l ec et ee   -> -- traceShow (srcInfoPoints l) $ do+        -- First we need to sort out if there are any optional+        -- semicolons hiding among the srcInfoPoints.+        case srcInfoPoints l of+         (_:b:c:rest) -> do+            let (mpSemi1,pThen,rest2) =+                           if snd (spanSize b) == 4 -- this is "then", not a semi+                            then (Nothing, b, c:rest)+                            else (Just b, c, rest)+            case rest2 of+              (c':rest3) -> do+                let (mpSemi2,rest4) = if snd (spanSize c') == 4 -- this is "else", not a semi+                                       then (Nothing, rest2)+                                       else (Just c', rest3)+                case rest4 of+                  [pElse] -> do+                    -- real work starts here:+                    printString "if"+                    exactPC ec+                    maybeEP printSemi  mpSemi1+                    printStringAt (pos pThen) "then"+                    exactPC et+                    maybeEP printSemi mpSemi2+                    printStringAt (pos pElse) "else"+                    exactPC ee+                  [] -> errorEP "ExactP: Exp: If is given too few srcInfoPoints"+                  _  -> errorEP "ExactP: Exp: If is given too many srcInfoPoints"+              _ -> errorEP "ExactP: Exp: If is given too few srcInfoPoints"++         _ -> errorEP "ExactP: Exp: If is given too few srcInfoPoints"+    MultiIf l alts ->+        case srcInfoPoints l of+          _:pts -> do+            printString "if"+            layoutList pts (map GuardedAlt alts)+          _ -> internalError "Exp -> MultiIf"+    Case l e alts   ->+        case srcInfoPoints l of+         _:b:pts -> do+            printString "case"+            exactPC e+            printStringAt (pos b) "of"+            layoutList pts alts+         _ -> errorEP "ExactP: Exp: Case is given too few srcInfoPoints"+    Do l stmts      ->+        case srcInfoPoints l of+         _:pts -> do+            printString "do"+            layoutList pts stmts+         _ -> errorEP "ExactP: Exp: Do is given too few srcInfoPoints"+    MDo l stmts     ->+        case srcInfoPoints l of+         _:pts -> do+            printString "mdo"+            layoutList pts stmts+         _ -> errorEP "ExactP: Exp: Mdo is given wrong number of srcInfoPoints"+    Tuple l bx es   ->+        case bx of+          Boxed   -> parenList (srcInfoPoints l) es+          Unboxed -> parenHashList (srcInfoPoints l) es+    UnboxedSum l b a es -> do+        unboxedSumEP l b a es+    TupleSection l bx mexps -> do+        let pts = srcInfoPoints l+            (o, e) = case bx of Boxed -> ("(", ")"); Unboxed -> ("(#", "#)")+        printSeq $ interleave (zip (map pos $ init pts) (map printString (o: repeat ",")) ++ [(pos $ last pts, printString e)])+                              (map (maybe (0,0) (pos . ann) &&& maybeEP exactPC) mexps)+    List l es               -> squareList (srcInfoPoints l) es+    ParArray l es           -> squareColonList (srcInfoPoints l) es+    Paren l p               -> parenList (srcInfoPoints l) [p]+    LeftSection l e qop     ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "("+            exactPC e+            exactPC qop+            printStringAt (pos b) ")"+         _ -> errorEP "ExactP: Exp: LeftSection is given wrong number of srcInfoPoints"+    RightSection l qop e    ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "("+            exactPC qop+            exactPC e+            printStringAt (pos b) ")"+         _ -> errorEP "ExactP: Exp: RightSection is given wrong number of srcInfoPoints"+    RecConstr l qn fups     -> do+        let pts = srcInfoPoints l+        exactP qn+        curlyList pts fups+    RecUpdate l e fups      -> do+        let pts = srcInfoPoints l+        exactP e+        curlyList pts fups+    EnumFrom l e            ->+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "["+            exactPC e+            printStringAt (pos b) ".."+            printStringAt (pos c) "]"+         _ -> errorEP "ExactP: Exp: EnumFrom is given wrong number of srcInfoPoints"+    EnumFromTo l e1 e2      ->+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "["+            exactPC e1+            printStringAt (pos b) ".."+            exactPC e2+            printStringAt (pos c) "]"+         _ -> errorEP "ExactP: Exp: EnumFromTo is given wrong number of srcInfoPoints"+    EnumFromThen l e1 e2    ->+        case srcInfoPoints l of+         [_,b,c,d] -> do+            printString "["+            exactPC e1+            printStringAt (pos b) ","+            exactPC e2+            printStringAt (pos c) ".."+            printStringAt (pos d) "]"+         _ -> errorEP "ExactP: Exp: EnumFromThen is given wrong number of srcInfoPoints"+    EnumFromThenTo l e1 e2 e3   ->+        case srcInfoPoints l of+         [_,b,c,d] -> do+            printString "["+            exactPC e1+            printStringAt (pos b) ","+            exactPC e2+            printStringAt (pos c) ".."+            exactPC e3+            printStringAt (pos d) "]"+         _ -> errorEP "ExactP: Exp: EnumFromToThen is given wrong number of srcInfoPoints"+    ParArrayFromTo l e1 e2      ->+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "[:"+            exactPC e1+            printStringAt (pos b) ".."+            exactPC e2+            printStringAt (pos c) ":]"+         _ -> errorEP "ExactP: Exp: ParArrayFromTo is given wrong number of srcInfoPoints"+    ParArrayFromThenTo l e1 e2 e3   ->+        case srcInfoPoints l of+         [_,b,c,d] -> do+            printString "[:"+            exactPC e1+            printStringAt (pos b) ","+            exactPC e2+            printStringAt (pos c) ".."+            exactPC e3+            printStringAt (pos d) ":]"+         _ -> errorEP "ExactP: Exp: ParArrayFromToThen is given wrong number of srcInfoPoints"+    ListComp l e qss            ->+        case srcInfoPoints l of+         _:pts -> do+            printString "["+            exactPC e+            bracketList ("|",",","]") pts qss+         _ -> errorEP "ExactP: Exp: ListComp is given too few srcInfoPoints"+    ParComp  l e qsss           ->+        case srcInfoPoints l of+         _:pts -> do+            let (strs, qss) = unzip $ pairUp qsss+            printString "["+            exactPC e+            printInterleaved (zip pts (strs ++ ["]"])) qss+         _ -> errorEP "ExactP: Exp: ParComp is given wrong number of srcInfoPoints"+      where pairUp [] = []+            pairUp ((a:as):xs) = ("|", a) : zip (repeat ",") as ++ pairUp xs+            pairUp _ = internalError "Exp -> ParComp -> pairUp"+    ParArrayComp  l e qsss           ->+        case srcInfoPoints l of+         _:pts -> do+            let (strs, qss) = unzip $ pairUp qsss+            printString "[:"+            exactPC e+            printInterleaved (zip pts (strs ++ [":]"])) qss+         _ -> errorEP "ExactP: Exp: ParArrayComp is given wrong number of srcInfoPoints"+      where pairUp [] = []+            pairUp ((a:as):xs) = ("|", a) : zip (repeat "|") as ++ pairUp xs+            pairUp _ = internalError "Exp -> ParArrayComp -> pairUp"++    ExpTypeSig l e t    ->+        case srcInfoPoints l of+         [a] -> do+            exactP e+            printStringAt (pos a) "::"+            exactPC t+         _ -> errorEP "ExactP: Exp: ExpTypeSig is given wrong number of srcInfoPoints"+    VarQuote _ qn   -> do+      printString "'"+      exactPC qn+    TypQuote _ qn -> do+      printString "''"+      exactPC qn+    BracketExp _ br -> exactP br+    SpliceExp _ sp  -> exactP sp+    QuasiQuote _ name qt    -> do+        let qtLines = lines qt+        printString $ "[" ++ name ++ "|"+        sequence_ (intersperse newLine $ map printString qtLines)+        printString "|]"+    XTag l xn attrs mat es  ->+        case srcInfoPoints l of+         [_,b,c,d,e] -> do+            printString "<"+            exactPC xn+            mapM_ exactPC attrs+            maybeEP exactPC mat+            printStringAt (pos b) ">"+            mapM_ exactPC es+            printStringAt (pos c) "</"+            printWhitespace (pos d)+            exactP xn+            printStringAt (pos e) ">"+         -- TODO: Fugly hack/duplication, should be refactored+         -- For the case when there's an optional semicolon+         [_,b,semi,c,d,e] -> do+            printString "<"+            exactPC xn+            mapM_ exactPC attrs+            maybeEP exactPC mat+            printStringAt (pos b) ">"+            mapM_ exactPC es+            printSemi semi+            printStringAt (pos c) "</"+            printWhitespace (pos d)+            exactP xn+            printStringAt (pos e) ">"+         _ -> errorEP "ExactP: Exp: XTag is given wrong number of srcInfoPoints"+    XETag l xn attrs mat    ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "<"+            exactPC xn+            mapM_ exactPC attrs+            maybeEP exactPC mat+            printStringAt (pos b) "/>"+         _ -> errorEP "ExactP: Exp: XETag is given wrong number of srcInfoPoints"+    XPcdata _ str   -> do+        let strLines = lines str+        sequence_ (intersperse newLine $ map printString strLines)+    XExpTag l e     ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "<%"+            exactPC e+            printStringAt (pos b) "%>"+         _ -> errorEP "ExactP: Exp: XExpTag is given wrong number of srcInfoPoints"+    XChildTag l es  ->+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "<%>"+            mapM_ exactPC es+            printStringAt (pos b) "</"+            printStringAt (pos c) "%>"+         -- Ugly duplication for when there's an optional semi+         [_,semi,b,c] -> do+            printString "<%>"+            mapM_ exactPC es+            printSemi semi+            printStringAt (pos b) "</"+            printStringAt (pos c) "%>"+         _ -> errorEP "ExactP: Exp: XChildTag is given wrong number of srcInfoPoints"+    CorePragma l      str e         ->+        case srcInfoPoints l of+         [_,b] -> do+            printString $ "{-# CORE " ++ show str+            printStringAt (pos b) "#-}"+            exactPC e+         _ -> errorEP "ExactP: Exp: CorePragma is given wrong number of srcInfoPoints"+    SCCPragma  l      str e         ->+        case srcInfoPoints l of+         [_,b] -> do+            printString $ "{-# SCC " ++ show str+            printStringAt (pos b) "#-}"+            exactPC e+         _ -> errorEP "ExactP: Exp: SCCPragma is given wrong number of srcInfoPoints"+    GenPragma  l      str (i1,i2) (i3,i4) e -> do+        printStrs $ zip (srcInfoPoints l) ["{-# GENERATED", show str, show i1, ":", show i2, "-", show i3, ":", show i4, "#-}"]+        exactPC e+    Proc            l p e   ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "proc"+            exactPC p+            printStringAt (pos b) "->"+            exactPC e+         _ -> errorEP "ExactP: Exp: Proc is given wrong number of srcInfoPoints"+    LeftArrApp      l e1 e2 ->+        case srcInfoPoints l of+         [a] -> do+            exactP e1+            printStringAt (pos a) "-<"+            exactPC e2+         _ -> errorEP "ExactP: Exp: LeftArrApp is given wrong number of srcInfoPoints"+    RightArrApp     l e1 e2 ->+        case srcInfoPoints l of+         [a] -> do+            exactP e1+            printStringAt (pos a) ">-"+            exactPC e2+         _ -> errorEP "ExactP: Exp: RightArrApp is given wrong number of srcInfoPoints"+    LeftArrHighApp  l e1 e2 ->+        case srcInfoPoints l of+         [a] -> do+            exactP e1+            printStringAt (pos a) "-<<"+            exactPC e2+         _ -> errorEP "ExactP: Exp: LeftArrHighApp is given wrong number of srcInfoPoints"+    RightArrHighApp l e1 e2 ->+        case srcInfoPoints l of+         [a] -> do+            exactP e1+            printStringAt (pos a) ">>-"+            exactPC e2+         _ -> errorEP "ExactP: Exp: RightArrHighApp is given wrong number of srcInfoPoints"++    ArrOp l e -> case srcInfoPoints l of+      [a, b] -> do+        printStringAt (pos a) "(|"+        exactPC e+        printStringAt (pos b) "|)"+      _ -> errorEP "ExactP: Exp: ArrOp is given wrong number of srcInfoPoints"++    LCase l alts   ->+        case srcInfoPoints l of+         _:b:pts -> do+            printString "\\"+            printStringAt (pos b) "case"+            layoutList pts alts+         _ -> errorEP "ExactP: Exp: LCase is given wrong number of srcInfoPoints"+    TypeApp _ ty -> printString "@" >> exactP ty++unboxedSumEP :: ExactP e => SrcSpanInfo -> Int -> Int -> e SrcSpanInfo -> EP ()+unboxedSumEP l b _a es = do+        let (opt:pts) = srcInfoPoints l+            (o, e) = ("(#", "#)")+            bars = zip (map pos (init pts)) (map printString (repeat "|"))+            open = (pos opt, printString o)+            close = (pos (last pts), printString e)+            fs = take b bars+            as = drop b bars+        printSeq $ open : fs ++ [((0, 0), exactPC es)] ++ as ++ [close]++instance ExactP FieldUpdate where+  exactP fup = case fup of+    FieldUpdate l qn e  ->+      case srcInfoPoints l of+       [a] -> do+          exactP qn+          printStringAt (pos a) "="+          exactPC e+       _ -> errorEP "ExactP: FieldUpdate is given wrong number of srcInfoPoints"+    FieldPun _ n    -> exactP n+    FieldWildcard _ -> printString ".."++instance ExactP Stmt where+  exactP stmt = case stmt of+    Generator l p e ->+      case srcInfoPoints l of+       [a] -> do+          exactP p+          printStringAt (pos a) "<-"+          exactPC e+       _ -> errorEP "ExactP: Stmt: Generator is given wrong number of srcInfoPoints"+    Qualifier _ e -> exactP e+    LetStmt _ bds   -> do+      printString "let"+      exactPC bds+    RecStmt l ss    ->+      case srcInfoPoints l of+       _:pts -> do+          printString "rec"+          layoutList pts ss+       _ -> errorEP "ExactP: Stmt: RecStmt is given too few srcInfoPoints"++instance ExactP QualStmt where+  exactP qstmt = case qstmt of+    QualStmt     _ stmt -> exactP stmt+    ThenTrans    _ e    -> printString "then" >> exactPC e+    ThenBy      l e1 e2 ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "then"+            exactPC e1+            printStringAt (pos b) "by"+            exactPC e2+         _ -> errorEP "ExactP: QualStmt: ThenBy is given wrong number of srcInfoPoints"+    GroupBy      l e        -> do+        printStrs $ zip (srcInfoPoints l) ["then","group","by"]+        exactPC e+    GroupUsing   l e        -> do+        printStrs $ zip (srcInfoPoints l) ["then","group","using"]+        exactPC e+    GroupByUsing l e1 e2    -> do+        let pts = srcInfoPoints l+        printStrs $ zip (init pts) ["then","group","by"]+        exactPC e1+        printStringAt (pos (last pts)) "using"+        exactPC e2++instance ExactP Bracket where+  exactP br = case br of+    ExpBracket l e  -> printBracket "ExpBracket" "[|" "|]" l e+    TExpBracket l e -> printBracket "TExpBracket" "[||" "||]" l e+    PatBracket l p  -> printBracket "PatBracket" "[p|" "|]" l p+    TypeBracket l t -> printBracket "TypeBracket" "[t|" "|]" l t+    DeclBracket l ds ->+        case srcInfoPoints l of+         pts@(_:_) -> do+            printString "[d|"+            layoutList (init pts) (sepFunBinds ds)+            printStringAt (pos (last pts)) "|]"+         _ -> errorEP "ExactP: Bracket: DeclBracket is given too few srcInfoPoints"++printBracket :: ExactP ast => String -> String -> String -> SrcSpanInfo -> ast SrcSpanInfo -> EP ()+printBracket con oBracket cBracket l c =+  case srcInfoPoints l of+    [_,b] -> do+      printString oBracket+      exactPC c+      printStringAt (pos b) cBracket+    _ -> errorEP $ "ExactP: Bracket: " ++ con ++ " is given wrong number of srcInfoPoints"++instance ExactP XAttr where+  exactP (XAttr l xn e) =+    case srcInfoPoints l of+     [a] -> do+        exactP xn+        printStringAt (pos a) "="+        exactPC e+     _ -> errorEP "ExactP: XAttr is given wrong number of srcInfoPoints"++instance ExactP Alt where+  exactP (Alt l p galts mbs) = do+    exactP p+    exactPC (GuardedAlts galts)+    maybeEP (\bs -> printStringAt (pos (head (srcInfoPoints l))) "where" >> exactPC bs) mbs++instance ExactP Match where+  exactP (Match l n ps rhs mbinds) = do+    let pts = srcInfoPoints l+        len = length pts+        pars = len `div` 2+        (oPars,cParsWh) = splitAt pars pts+        (cPars,_) = splitAt pars cParsWh    -- _§ is either singleton or empty+    printStrs (zip oPars (repeat "("))+    exactPC n+    printStreams (zip (map pos cPars) (repeat $ printString ")")) (map (pos . ann &&& exactPC) ps)+    exactPC rhs+    maybeEP (\bds -> printStringAt (pos (head pts)) "where" >> exactPC bds) mbinds+  exactP (InfixMatch l a n bs rhs mbinds) = do+    let pts = srcInfoPoints l+        len = length pts+        pars = len `div` 2+        (oPars,cParsWh) = splitAt pars pts+        (cPars,whPt) = splitAt pars cParsWh    -- whPt is either singleton or empty+    printStrs (zip oPars (repeat "("))+    exactPC a+    epInfixName n+    printInterleaved' (zip cPars (repeat ")")) bs+    exactPC rhs+    maybeEP (\bds -> printStringAt (pos (head whPt)) "where" >> exactPC bds) mbinds++instance ExactP Rhs where+  exactP (UnGuardedRhs _ e) = printString "=" >> exactPC e+  exactP (GuardedRhss  _ grhss) = mapM_ exactPC grhss++instance ExactP GuardedRhs where+  exactP (GuardedRhs l ss e) =+    case srcInfoPoints l of+     _:pts -> do+        printString "|"+        printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "=")]) ss+        exactPC e+     _ -> errorEP "ExactP: GuardedRhs is given wrong number of srcInfoPoints"++newtype GuardedAlts l = GuardedAlts (Rhs l)+    deriving (Functor, Show)+instance Annotated GuardedAlts where+    amap f (GuardedAlts v) = GuardedAlts (amap f v)+    ann (GuardedAlts v) = ann v++newtype GuardedAlt l = GuardedAlt (GuardedRhs l)+    deriving (Functor, Show)+instance Annotated GuardedAlt where+    amap f (GuardedAlt v) = GuardedAlt (amap f v)+    ann (GuardedAlt v) = ann v++instance ExactP GuardedAlts where+  exactP (GuardedAlts (UnGuardedRhs _ e)) = printString "->" >> exactPC e+  exactP (GuardedAlts (GuardedRhss  _ grhss)) = mapM_ (exactPC . GuardedAlt) grhss++instance ExactP GuardedAlt where+  exactP (GuardedAlt (GuardedRhs l ss e)) =+    case srcInfoPoints l of+     _:pts -> do+        printString "|"+        printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "->")]) ss+        exactPC e+     _ -> errorEP "ExactP: GuardedAlt is given wrong number of srcInfoPoints"++instance ExactP Pat where+  exactP pat = case pat of+    PVar l n    -> exactPC (fmap (const l) n)+    PLit _ sg lit -> exactPC sg >> exactPC lit+    PNPlusK l n k   ->+        case srcInfoPoints l of+         [a,b] -> do+            exactP n+            printStringAt (pos a) "+"+            printStringAt (pos b) (show k)+         _ -> errorEP "ExactP: Pat: PNPlusK is given wrong number of srcInfoPoints"+    PInfixApp _ pa qn pb -> exactP pa >> epInfixQName qn >> exactPC pb+    PApp _ qn ps    -> exactP qn >> mapM_ exactPC ps+    PTuple l bx ps ->+        case bx of+          Boxed   -> parenList (srcInfoPoints l) ps+          Unboxed -> parenHashList (srcInfoPoints l) ps+    PUnboxedSum l before after e ->+      unboxedSumEP l before after e+    PList l ps  -> squareList (srcInfoPoints l) ps+    PParen l p  -> parenList (srcInfoPoints l) [p]+    PRec l qn pfs   -> exactP qn >> curlyList (srcInfoPoints l) pfs+    PAsPat l n p    ->+        case srcInfoPoints l of+         [a] -> do+            exactP n+            printStringAt (pos a) "@"+            exactPC p+         _ -> errorEP "ExactP: Pat: PAsPat is given wrong number of srcInfoPoints"+    PWildCard _ -> printString "_"+    PIrrPat _ p -> printString "~" >> exactPC p+    PatTypeSig l p t ->+        case srcInfoPoints l of+         [a] -> do+            exactP p+            printStringAt (pos a) "::"+            exactPC t+         _ -> errorEP "ExactP: Pat: PatTypeSig is given wrong number of srcInfoPoints"+    PViewPat l e p ->+        case srcInfoPoints l of+         [a] -> do+            exactP e+            printStringAt (pos a) "->"+            exactPC p+         _ -> errorEP "ExactP: Pat: PViewPat is given wrong number of srcInfoPoints"+    PRPat l rps -> squareList (srcInfoPoints l) rps+    PXTag l xn attrs mat ps ->+        case srcInfoPoints l of+         [_,b,c,d,e] -> do+            printString "<"+            exactPC xn+            mapM_ exactPC attrs+            maybeEP exactPC mat+            printStringAt (pos b) ">"+            mapM_ exactPC ps+            printStringAt (pos c) "</"+            printWhitespace (pos d)+            exactP xn+            printStringAt (pos e) ">"+         -- Optional semi+         [_,b,semi,c,d,e] -> do+            printString "<"+            exactPC xn+            mapM_ exactPC attrs+            maybeEP exactPC mat+            printStringAt (pos b) ">"+            mapM_ exactPC ps+            printSemi semi+            printStringAt (pos c) "</"+            printWhitespace (pos d)+            exactP xn+            printStringAt (pos e) ">"+         _ -> errorEP "ExactP: Pat: PXTag is given wrong number of srcInfoPoints"+    PXETag l xn attrs mat ->+        case srcInfoPoints l of+         [_,b] -> do+            printString "<"+            exactPC xn+            mapM_ exactPC attrs+            maybeEP exactPC mat+            printStringAt (pos b) "/>"+         _ -> errorEP "ExactP: Pat: PXETag is given wrong number of srcInfoPoints"+    PXPcdata _ str -> printString str+    PXPatTag l p   ->+        case srcInfoPoints l of+         [_,_] -> do+            printString "<%"+            exactPC p+            printString "%>"+         _ -> errorEP "ExactP: Pat: PXPatTag is given wrong number of srcInfoPoints"+    PXRPats  l rps  -> bracketList ("<[",",","]>") (srcInfoPoints l) rps+    PSplice _ sp  -> exactP sp+    PQuasiQuote _ name qt   -> printString $ "[$" ++ name ++ "|" ++ qt ++ "]"+    PBangPat _ p    -> printString "!" >> exactPC p++instance ExactP PatField where+  exactP pf = case pf of+    PFieldPat l qn p        ->+        case srcInfoPoints l of+         [a] -> do+            exactP qn+            printStringAt (pos a) "="+            exactPC p+         _ -> errorEP "ExactP: PatField: PFieldPat is given wrong number of srcInfoPoints"+    PFieldPun _ n   -> exactP n+    PFieldWildcard _ -> printString ".."++instance ExactP RPat where+  exactP rpat = case rpat of+    RPOp _ rp op    -> exactP rp >> exactPC op+    RPEither l r1 r2 ->+      case srcInfoPoints l of+       [a] -> do+          exactP r1+          printStringAt (pos a) "|"+          exactPC r2+       _ -> errorEP "ExactP: RPat: RPEither is given wrong number of srcInfoPoints"+    RPSeq l rps -> bracketList ("(|",",","|)") (srcInfoPoints l) rps+    RPGuard l p stmts   ->+      case srcInfoPoints l of+       _:pts -> do+          printString "(|"+          exactPC p+          bracketList ("|",",","|)") pts stmts+       _ -> errorEP "ExactP: RPat: RPGuard is given wrong number of srcInfoPoints"+    RPCAs l n rp    ->+      case srcInfoPoints l of+       [a] -> do+          exactP n+          printStringAt (pos a) "@:"+          exactPC rp+       _ -> errorEP "ExactP: RPat: RPCAs is given wrong number of srcInfoPoints"+    RPAs l n rp     ->+      case srcInfoPoints l of+       [a] -> do+          exactP n+          printStringAt (pos a) "@"+          exactPC rp+       _ -> errorEP "ExactP: RPat: RPAs is given wrong number of srcInfoPoints"+    RPParen l rp    -> parenList (srcInfoPoints l) [rp]+    RPPat _ p   -> exactP p++instance ExactP RPatOp where+  exactP rop = printString $ case rop of+    RPStar  _  -> "*"+    RPStarG _  -> "*!"+    RPPlus  _  -> "+"+    RPPlusG _  -> "+!"+    RPOpt   _  -> "?"+    RPOptG  _  -> "?!"++instance ExactP PXAttr where+  exactP (PXAttr l xn p) =+    case srcInfoPoints l of+     [a] -> do+        exactP xn+        printStringAt (pos a) "="+        exactPC p+     _ -> errorEP "ExactP: PXAttr is given wrong number of srcInfoPoints"++instance ExactP XName where+  exactP xn = case xn of+    XName _ name -> printString name+    XDomName l dom name ->+        case srcInfoPoints l of+         [_,b,c] -> do+            printString dom+            printStringAt (pos b) ":"+            printStringAt (pos c) name+         _ -> errorEP "ExactP: XName: XDomName is given wrong number of srcInfoPoints"++instance ExactP Binds where+  exactP (BDecls  l ds)  = layoutList (srcInfoPoints l) (sepFunBinds ds)+  exactP (IPBinds l ips) = layoutList (srcInfoPoints l) ips++instance ExactP CallConv where+  exactP (StdCall    _) = printString "stdcall"+  exactP (CCall      _) = printString "ccall"+  exactP (CPlusPlus  _) = printString "cplusplus"+  exactP (DotNet     _) = printString "dotnet"+  exactP (Jvm        _) = printString "jvm"+  exactP (Js         _) = printString "js"+  exactP (JavaScript _) = printString "javascript"+  exactP (CApi       _) = printString "capi"++instance ExactP Safety where+  exactP (PlayRisky _) = printString "unsafe"+  exactP (PlaySafe _ b) = printString $ if b then "threadsafe" else "safe"+  exactP (PlayInterruptible _) = printString "interruptible"++instance ExactP Rule where+  exactP (Rule l str mact mrvs e1 e2) =+    case srcInfoPoints l of+     _:pts -> do+        printString (show str)+        maybeEP exactP mact+        pts1 <- case mrvs of+                Nothing -> return pts+                Just rvs ->+                    case pts of+                     a':b:pts' -> do+                        printStringAt (pos a') "forall"+                        mapM_ exactPC rvs+                        printStringAt (pos b) "."+                        return pts'+                     _ -> errorEP "ExactP: Rule is given too few srcInfoPoints"+        case pts1 of+         [x] -> do+            exactPC e1+            printStringAt (pos x) "="+            exactPC e2+         _ -> errorEP "ExactP: Rule is given wrong number of srcInfoPoints"+     _ -> errorEP "ExactP: Rule is given too few srcInfoPoints"++instance ExactP RuleVar where+  exactP (TypedRuleVar l n t) =+        case srcInfoPoints l of+         [_,b,c] -> do+            printString "("+            exactPC n+            printStringAt (pos b) "::"+            exactPC t+            printStringAt (pos c) ")"+         _ -> errorEP "ExactP: RuleVar: TypedRuleVar is given wrong number of srcInfoPoints"+  exactP (RuleVar _ n) = exactP n++instance ExactP Overlap where+  exactP (NoOverlap _) =+    printString "{-# NO_OVERLAP #-}"+  exactP (Overlap _) =+    printString "{-# OVERLAP #-}"+  exactP (Overlaps _) =+    printString "{-# OVERLAPS #-}"+  exactP (Overlapping _) =+    printString "{-# OVERLAPPING #-}"+  exactP (Overlappable _) =+    printString "{-# OVERLAPPABLE #-}"+  exactP (Incoherent _) =+    printString "{-# INCOHERENT #-}"++instance ExactP Activation where+  exactP (ActiveFrom   l i) =+    printPoints l ["[", show i, "]"]+  exactP (ActiveUntil  l i) =+    printPoints l ["[", "~", show i, "]"]++instance ExactP FieldDecl where+  exactP (FieldDecl l ns bt) = do+    let pts = srcInfoPoints l+    printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "::")]) ns+    exactPC bt++instance ExactP IPBind where+  exactP (IPBind l ipn e) =+    case srcInfoPoints l of+     [a] -> do+        exactP ipn+        printStringAt (pos a) "="+        exactPC e+     _ -> errorEP "ExactP: IPBind is given wrong number of srcInfoPoints"++-- Hopefully, this will never fire.+-- If it does, hopefully by that time https://github.com/sol/rewrite-with-location+-- will be implemented.+-- If not, then removing all calls to internalError should give a better+-- idea where the error comes from.+-- So far, it's necessary to eliminate non-exhaustive patterns warnings.+-- We don't want to turn them off, as we want unhandled AST nodes to be+-- reported.+internalError :: String -> a+internalError loc' = error $ unlines+    [ "haskell-src-exts: ExactPrint: internal error (non-exhaustive pattern)"+    , "Location: " ++ loc'+    , "This is either caused by supplying incorrect location information or by"+    , "a bug in haskell-src-exts. If this happens on an unmodified AST obtained"+    , "by the haskell-src-exts Parser it is a bug, please it report it at"+    , "https://github.com/haskell-suite/haskell-src-exts"]
src/Language/Haskell/Exts/ExtScheme.hs view
@@ -1,37 +1,39 @@-{-# OPTIONS_HADDOCK hide #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Language.Haskell.Exts.ExtScheme
--- Copyright   :  (c) Niklas Broberg 2009
--- License     :  BSD-style (see the file LICENSE.txt)
---
--- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se
--- Stability   :  stable
--- Portability :  portable
---
--- Internal scheme for handling extensions in a
--- convenient fashion.
---
------------------------------------------------------------------------------
-module Language.Haskell.Exts.ExtScheme where
-
-import Language.Haskell.Exts.Extension
-
-data ExtScheme = Any [Extension] | All [Extension]
-  deriving (Eq,Show)
-
-type MExtScheme = Maybe ExtScheme
-
-class Enabled a where
-  isEnabled :: a -> [Extension] -> Bool
-
-instance Enabled Extension where
-  isEnabled = elem
-
-instance Enabled ExtScheme where
-  isEnabled (Any exts) enabled = any (`elem` enabled) exts
-  isEnabled (All exts) enabled = all (`elem` enabled) exts
-
-instance Enabled a => Enabled (Maybe a) where
-  isEnabled Nothing  = const True
-  isEnabled (Just a) = isEnabled a
+{-# LANGUAGE Safe #-}+{-# OPTIONS_HADDOCK hide #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.ExtScheme+-- Copyright   :  (c) Niklas Broberg 2009+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+-- Stability   :  stable+-- Portability :  portable+--+-- Internal scheme for handling extensions in a+-- convenient fashion.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.ExtScheme where++import Language.Haskell.Exts.Extension++data ExtScheme = Any [KnownExtension] | All [KnownExtension]+  deriving (Eq,Show)++type MExtScheme = Maybe ExtScheme++class Enabled a where+  isEnabled :: a -> [KnownExtension] -> Bool++instance Enabled KnownExtension where+  isEnabled = elem++instance Enabled ExtScheme where+  isEnabled (Any exts) enabled = any (`elem` enabled) exts+  isEnabled (All exts) enabled = all (`elem` enabled) exts++instance Enabled a => Enabled (Maybe a) where+  isEnabled Nothing  = const True+  isEnabled (Just a) = isEnabled a
src/Language/Haskell/Exts/Extension.hs view
@@ -1,246 +1,750 @@------------------------------------------------------------------------------
--- |
--- Module      :  Language.Haskell.Exts.Extension
--- Copyright   :  (c) Niklas Broberg 2009
--- License     :  BSD-style (see the file LICENSE.txt)
---
--- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se
--- Stability   :  transient
--- Portability :  portable
---
--- This entire module should be replaced with
--- Language.Haskell.Extension from cabal, but we must
--- wait for a release of cabal that includes the
--- 'XmlSyntax' and 'RegularPatterns' extensions.
---
------------------------------------------------------------------------------
-module Language.Haskell.Exts.Extension (
-    -- * Extensions
-    Extension(..), classifyExtension, impliesExts,
-
-    -- * Extension groups
-    glasgowExts, knownExtensions
-
-    ) where
-
-
--- | This datatype is a copy of the one in Cabal's Language.Haskell.Extension module.
---   The intention is to eventually import it from Cabal, but we need to wait for
---   the next release of Cabal which includes XmlSyntax and RegularPatterns.
-data Extension
-  = OverlappingInstances
-  | UndecidableInstances
-  | IncoherentInstances
-  | RecursiveDo
-  | ParallelListComp
-  | MultiParamTypeClasses
-  | NoMonomorphismRestriction
-  | FunctionalDependencies
-  | ExplicitForall
-  | Rank2Types
-  | RankNTypes
-  | PolymorphicComponents
-  | ExistentialQuantification
-  | ScopedTypeVariables
-  | ImplicitParams
-  | FlexibleContexts
-  | FlexibleInstances
-  | EmptyDataDecls
-  | CPP
-
-  | KindSignatures
-  | BangPatterns
-  | TypeSynonymInstances
-  | TemplateHaskell
-  | ForeignFunctionInterface
-  | Arrows
-  | Generics
-  | NoImplicitPrelude
-  | NamedFieldPuns
-  | PatternGuards
-  | GeneralizedNewtypeDeriving
-
-  | ExtensibleRecords
-  | RestrictedTypeSynonyms
-  | HereDocuments
-  | MagicHash
-  | TypeFamilies
-  | StandaloneDeriving
-
-  | UnicodeSyntax
-  | PatternSignatures
-  | UnliftedFFITypes
-  | LiberalTypeSynonyms
-  | TypeOperators
-  | RecordWildCards
-  | RecordPuns -- should be deprecated
-  | DisambiguateRecordFields
-  | OverloadedStrings
-  | GADTs
-  | MonoPatBinds
-  | NoMonoPatBinds -- should be deprecated
-  | RelaxedPolyRec
-  | ExtendedDefaultRules
-  | UnboxedTuples
-  | DeriveDataTypeable
-  | ConstrainedClassMethods
-
-  | PackageImports
-
-  | ImpredicativeTypes
-  | NewQualifiedOperators
-  | PostfixOperators
-  | QuasiQuotes
-  | TransformListComp
-  | ViewPatterns
-
-  | XmlSyntax
-
-  | RegularPatterns
-
-  | TupleSections
-
-  | UnknownExtension String
-  deriving (Eq, Ord, Show, Read)
-
-
--- | Certain extensions imply other extensions, and this function
---   makes the implication explicit. This also handles deprecated
---   extensions, which imply their replacements.
---   The returned valued is the transitive closure of implied
---   extensions.
-impliesExts :: [Extension] -> [Extension]
-impliesExts = go
-  where go [] = []
-        go es = let xs = concatMap implE es
-                    ys = filter (not . flip elem es) xs
-                 in es ++ go ys
-
-        implE e = case e of
-                    TypeFamilies        -> [KindSignatures]
-                    ScopedTypeVariables -> [TypeOperators, ExplicitForall]
-                    XmlSyntax           -> [RegularPatterns]
-                    RegularPatterns     -> [PatternGuards]
-                    RankNTypes          -> [Rank2Types]
-                    Rank2Types          -> [PolymorphicComponents]
-                    PolymorphicComponents   -> [ExplicitForall]
-                    LiberalTypeSynonyms -> [ExplicitForall]
-                    -- Deprecations
-                    RecordPuns          -> [NamedFieldPuns]
-                    PatternSignatures   -> [ScopedTypeVariables]
-                    e                   -> []
-
--- | The list of extensions enabled by
---   GHC's portmanteau -fglasgow-exts flag.
-glasgowExts :: [Extension]
-glasgowExts = [
-      ForeignFunctionInterface
-    , UnliftedFFITypes
-    , GADTs
-    , ImplicitParams
-    , ScopedTypeVariables
-    , UnboxedTuples
-    , TypeSynonymInstances
-    , StandaloneDeriving
-    , DeriveDataTypeable
-    , FlexibleContexts
-    , FlexibleInstances
-    , ConstrainedClassMethods
-    , MultiParamTypeClasses
-    , FunctionalDependencies
-    , MagicHash
-    , PolymorphicComponents
-    , ExistentialQuantification
-    , UnicodeSyntax
-    , PostfixOperators
-    , PatternGuards
-    , LiberalTypeSynonyms
-    , RankNTypes
-    , ImpredicativeTypes
-    , TypeOperators
-    , RecursiveDo
-    , ParallelListComp
-    , EmptyDataDecls
-    , KindSignatures
-    , GeneralizedNewtypeDeriving
-    , TypeFamilies
-    ]
-
--- | List of all known extensions. Poor man's 'Enum' instance
---   (we can't enum with the 'UnknownExtension' constructor).
-knownExtensions :: [Extension]
-knownExtensions = 
-    [ OverlappingInstances
-    , UndecidableInstances
-    , IncoherentInstances
-    , RecursiveDo
-    , ParallelListComp
-    , MultiParamTypeClasses
-    , NoMonomorphismRestriction
-    , FunctionalDependencies
-    , ExplicitForall
-    , Rank2Types
-    , RankNTypes
-    , PolymorphicComponents
-    , ExistentialQuantification
-    , ScopedTypeVariables
-    , ImplicitParams
-    , FlexibleContexts
-    , FlexibleInstances
-    , EmptyDataDecls
-    , CPP
-    , KindSignatures
-    , BangPatterns
-    , TypeSynonymInstances
-    , TemplateHaskell
-    , ForeignFunctionInterface
-    , Arrows
-    , Generics
-    , NoImplicitPrelude
-    , NamedFieldPuns
-    , PatternGuards
-    , GeneralizedNewtypeDeriving
-    , ExtensibleRecords
-    , RestrictedTypeSynonyms
-    , HereDocuments
-    , MagicHash
-    , TypeFamilies
-    , StandaloneDeriving
-    , UnicodeSyntax
-    , PatternSignatures
-    , UnliftedFFITypes
-    , LiberalTypeSynonyms
-    , TypeOperators
-    , RecordWildCards
-    , RecordPuns -- should be deprecated
-    , DisambiguateRecordFields
-    , OverloadedStrings
-    , GADTs
-    , MonoPatBinds
-    , NoMonoPatBinds -- should be deprecated
-    , RelaxedPolyRec
-    , ExtendedDefaultRules
-    , UnboxedTuples
-    , DeriveDataTypeable
-    , ConstrainedClassMethods
-    , PackageImports
-    , ImpredicativeTypes
-    , NewQualifiedOperators
-    , PostfixOperators
-    , QuasiQuotes
-    , TransformListComp
-    , ViewPatterns
-    , XmlSyntax
-    , RegularPatterns
-    , TupleSections
-    ]
-
-
-
--- | A clever version of read that returns an 'UnknownExtension'
---   if the string is not recognised.
-classifyExtension :: String -> Extension
-classifyExtension str
-  = case readsPrec 0 str of
-      [(e,"")]     -> e
-      _            -> UnknownExtension str
+{-# LANGUAGE CPP, DeriveDataTypeable, Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.Extension+-- Copyright   :  (c) Niklas Broberg 2009+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, niklas.broberg@chalmers.se+-- Stability   :  transient+-- Portability :  portable+--+-- This module defines the list of recognized modular features+-- of Haskell, most often (sloppily) referred to as "extensions".+--+-- Closely mimicking the Language.Haskell.Extension module from+-- the Cabal library, this package also includes functionality for+-- "computing" languages as sets of features. Also, we make no+-- promise not to add extensions not yet recognized by Cabal.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.Extension (+    -- * Language definitions+    Language(..),+    knownLanguages,+    classifyLanguage,+    prettyLanguage,++    -- * Extensions+    Extension(..), KnownExtension(..),+    classifyExtension,+    parseExtension, prettyExtension,++    -- * Extension groups+    ghcDefault, glasgowExts,+    knownExtensions, deprecatedExtensions,++    -- * Semantics of extensions applied to languages+    impliesExts, toExtensionList++    ) where++#if __GLASGOW_HASKELL__ < 710+import Control.Applicative ((<$>), (<|>))+#else+import Control.Applicative ((<|>))+#endif+import Data.Array (Array, accumArray, bounds, Ix(inRange), (!))+import Data.List (nub)+import Data.Maybe (fromMaybe)+import Data.Data++-- Copyright notice from Cabal's Language.Haskell.Extension,+-- from which we borrow plenty of features:++{- All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are+met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of Isaac Jones nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -}++data Language =++  -- | The Haskell 98 language as defined by the Haskell 98 report.+  -- <http://haskell.org/onlinereport/>+     Haskell98++  -- | The Haskell 2010 language as defined by the Haskell 2010 report.+  -- <http://www.haskell.org/onlinereport/haskell2010>+  | Haskell2010++  -- | The minimal language resulting from disabling all recognized+  -- extensions - including ones that are part of all known language+  -- definitions e.g. MonomorphismRestriction.+  | HaskellAllDisabled++  -- | An unknown language, identified by its name.+  | UnknownLanguage String+  deriving (Show, Read, Eq, Ord, Data, Typeable)++knownLanguages :: [Language]+knownLanguages = [Haskell98, Haskell2010]++classifyLanguage :: String -> Language+classifyLanguage str = fromMaybe (UnknownLanguage str) $ lookup str langTable+  where+    langTable = [ (show lang, lang)+                | lang <- knownLanguages ]++prettyLanguage :: Language -> String+prettyLanguage (UnknownLanguage name) = name+prettyLanguage lang = show lang++-- | This represents language extensions beyond a base 'Language' definition+-- (such as 'Haskell98') that are supported by some implementations, usually+-- in some special mode.++data Extension =+  -- | Enable a known extension+    EnableExtension KnownExtension++  -- | Disable a known extension+  | DisableExtension KnownExtension++  -- | An unknown extension, identified by the name of its @LANGUAGE@+  -- pragma.+  | UnknownExtension String+  deriving (Show, Read, Eq, Ord)+++data KnownExtension =++  -- | [GHC &#xa7; 7.6.3.4] Allow overlapping class instances,+  -- provided there is a unique most specific instance for each use.+    OverlappingInstances++  -- | [GHC &#xa7; 7.6.3.3] Ignore structural rules guaranteeing the+  -- termination of class instance resolution.  Termination is+  -- guaranteed by a fixed-depth recursion stack, and compilation+  -- may fail if this depth is exceeded.+  | UndecidableInstances++  -- | [GHC &#xa7; 7.6.3.4] Implies 'OverlappingInstances'.  Allow the+  -- implementation to choose an instance even when it is possible+  -- that further instantiation of types will lead to a more specific+  -- instance being applicable.+  | IncoherentInstances++  -- | [GHC &#xa7; 7.6.3.5] Allow type signatures in instances.+  | InstanceSigs++  -- | [GHC &#xa7; 7.3.8] Deprecated in GHC.  Allows recursive+  -- bindings in @do@ blocks, using the @rec@ keyword.+  | DoRec++  -- | [GHC &#xa7; 7.3.8.2] Allows recursive bindings using @mdo@, a+  -- variant of @do@, and @rec@.+  | RecursiveDo++  -- | [GHC &#xa7; 7.3.9] Provide syntax for writing list+  -- comprehensions which iterate over several lists together, like+  -- the 'zipWith' family of functions.+  | ParallelListComp++  -- | [GHC &#xa7; 7.6.1.1] Allow multiple parameters in a type class.+  | MultiParamTypeClasses++  -- | [GHC &#xa7; 7.17] Enable the dreaded monomorphism restriction.+  | MonomorphismRestriction++  -- | [GHC &#xa7; 7.6.2] Allow a specification attached to a+  -- multi-parameter type class which indicates that some parameters+  -- are entirely determined by others. The implementation will check+  -- that this property holds for the declared instances, and will use+  -- this property to reduce ambiguity in instance resolution.+  | FunctionalDependencies++  -- | [GHC &#xa7; 7.8.5] Like 'RankNTypes' but does not allow a+  -- higher-rank type to itself appear on the left of a function+  -- arrow.+  | Rank2Types++  -- | [GHC &#xa7; 7.8.5] Allow a universally-quantified type to occur on+  -- the left of a function arrow.+  | RankNTypes++  -- | [GHC &#xa7; 7.8.5] Allow data constructors to have polymorphic+  -- arguments.  Unlike 'RankNTypes', does not allow this for ordinary+  -- functions.+  | PolymorphicComponents++  -- | [GHC &#xa7; 7.4.4] Allow existentially-quantified data constructors.+  | ExistentialQuantification++  -- | [GHC &#xa7; 7.8.7] Cause a type variable in a signature, which has an+  -- explicit @forall@ quantifier, to scope over the definition of the+  -- accompanying value declaration.+  | ScopedTypeVariables++  -- | Deprecated, use 'ScopedTypeVariables' instead.+  | PatternSignatures++  -- | [GHC &#xa7; 7.8.3] Enable implicit function parameters with dynamic+  -- scope.+  | ImplicitParams++  -- | [GHC &#xa7; 7.8.2] Relax some restrictions on the form of the context+  -- of a type signature.+  | FlexibleContexts++  -- | [GHC &#xa7; 7.6.3.2] Relax some restrictions on the form of the+  -- context of an instance declaration.+  | FlexibleInstances++  -- | [GHC &#xa7; 7.4.1] Allow data type declarations with no constructors.+  | EmptyDataDecls++  -- | [GHC &#xa7; 4.10.3] Run the C preprocessor on Haskell source code.+  | CPP++  -- | [GHC &#xa7; 7.8.4] Allow an explicit kind signature giving the kind of+  -- types over which a type variable ranges.+  | KindSignatures++  -- | [GHC &#xa7; 7.11] Enable a form of pattern which forces evaluation+  -- before an attempted match, and a form of strict @let@/@where@+  -- binding.+  | BangPatterns++  -- | [GHC &#xa7; 7.6.3.1] Allow type synonyms in instance heads.+  | TypeSynonymInstances++  -- | [GHC &#xa7; 7.9] Enable Template Haskell, a system for compile-time+  -- metaprogramming.+  | TemplateHaskell++  -- | [GHC &#xa7; 8] Enable the Foreign Function Interface.  In GHC,+  -- implements the standard Haskell 98 Foreign Function Interface+  -- Addendum, plus some GHC-specific extensions.+  | ForeignFunctionInterface++  -- | [GHC &#xa7; 7.10] Enable arrow notation.+  | Arrows++  -- | [GHC &#xa7; 7.16] Enable generic type classes, with default instances+  -- defined in terms of the algebraic structure of a type.+  | Generics++  -- | [GHC &#xa7; 7.3.11] Enable the implicit importing of the module+  -- @Prelude@.  When disabled, when desugaring certain built-in syntax+  -- into ordinary identifiers, use whatever is in scope rather than the+  -- @Prelude@ -- version.+  | ImplicitPrelude++  -- | [GHC &#xa7; 7.3.15] Enable syntax for implicitly binding local names+  -- corresponding to the field names of a record.  Puns bind specific+  -- names, unlike 'RecordWildCards'.+  | NamedFieldPuns++  -- | [GHC &#xa7; 7.3.5] Enable a form of guard which matches a pattern and+  -- binds variables.+  | PatternGuards++  -- | [GHC &#xa7; 7.5.4] Allow a type declared with @newtype@ to use+  -- @deriving@ for any class with an instance for the underlying type.+  | GeneralizedNewtypeDeriving++  -- | [GHC &#xa7; 9.6.10] Allow use of any typeclass in deriving clauses.+  | DeriveAnyClass++  -- | [Hugs &#xa7; 7.1] Enable the \"Trex\" extensible records system.+  | ExtensibleRecords++  -- | [Hugs &#xa7; 7.2] Enable type synonyms which are transparent in+  -- some definitions and opaque elsewhere, as a way of implementing+  -- abstract datatypes.+  | RestrictedTypeSynonyms++  -- | [Hugs &#xa7; 7.3] Enable an alternate syntax for string literals,+  -- with string templating.+  | HereDocuments++  -- | [GHC &#xa7; 7.3.2] Allow the character @#@ as a postfix modifier on+  -- identifiers.  Also enables literal syntax for unboxed values.+  | MagicHash++  -- | Binary integer literals+  | BinaryLiterals++  -- | [GHC &#xa7; 7.7] Allow data types and type synonyms which are+  -- indexed by types, i.e. ad-hoc polymorphism for types.+  | TypeFamilies++  -- | [GHC &#xa7; 7.5.2] Allow a standalone declaration which invokes the+  -- type class @deriving@ mechanism.+  | StandaloneDeriving++  -- | [GHC &#xa7; 7.3.1] Allow certain Unicode characters to stand for+  -- certain ASCII character sequences, e.g. keywords and punctuation.+  | UnicodeSyntax++  -- | [GHC &#xa7; 8.1.1] Allow the use of unboxed types as foreign types,+  -- e.g. in @foreign import@ and @foreign export@.+  | UnliftedFFITypes++  -- | [GHC &#xa7; 7.4.3] Defer validity checking of types until after+  -- expanding type synonyms, relaxing the constraints on how synonyms+  -- may be used.+  | LiberalTypeSynonyms++  -- | [GHC &#xa7; 7.4.2] Allow the name of a type constructor, type class,+  -- or type variable to be an infix operator.+  | TypeOperators++  -- | [GHC &#xa7; 7.26.5] Parallel arrays for Data Parallel Haskell.+  | ParallelArrays++  -- | [GHC &#xa7; 7.3.16] Enable syntax for implicitly binding local names+  -- corresponding to the field names of a record.  A wildcard binds+  -- all unmentioned names, unlike 'NamedFieldPuns'.+  | RecordWildCards++  -- | Deprecated, use 'NamedFieldPuns' instead.+  | RecordPuns++  -- | [GHC &#xa7; 7.3.14] Allow a record field name to be disambiguated+  -- by the type of the record it's in.+  | DisambiguateRecordFields++  -- | [GHC &#xa7; 7.6.4] Enable overloading of string literals using a+  -- type class, much like integer literals.+  | OverloadedStrings++  -- | [GHC &#xa7; 7.4.6] Enable generalized algebraic data types, in+  -- which type variables may be instantiated on a per-constructor+  -- basis. Implies GADTSyntax.+  | GADTs++{- GADTSyntax (the extension name) not yet supported by HSE++  -- | Enable GADT syntax for declaring ordinary algebraic datatypes.+  | GADTSyntax++-}++  -- | [GHC &#xa7; 7.17.2] Make pattern bindings monomorphic.+  | MonoPatBinds++  -- | [GHC &#xa7; 7.8.8] Relax the requirements on mutually-recursive+  -- polymorphic functions.+  | RelaxedPolyRec++  -- | [GHC &#xa7; 2.4.5] Allow default instantiation of polymorphic+  -- types in more situations.+  | ExtendedDefaultRules++  -- | [GHC &#xa7; 7.2.2] Enable unboxed tuples.+  | UnboxedTuples++  -- | [GHC &#xa7; 7.5.3] Enable @deriving@ for classes+  -- @Data.Typeable.Typeable@ and @Data.Generics.Data@.+  | DeriveDataTypeable++  -- | [GHC &#xa7; 7.6.1.3] Allow a class method's type to place+  -- additional constraints on a class type variable.+  | ConstrainedClassMethods++  -- | [GHC &#xa7; 7.3.18] Allow imports to be qualified by the package+  -- name the module is intended to be imported from, e.g.+  --+  -- > import "network" Network.Socket+  | PackageImports++  | ImportQualifiedPost++  | LambdaCase++  -- | [GHC &#xa7; 7.3.20] Allow case expressions with no alternatives.+  | EmptyCase++  -- | [GHC &#xa7; 7.8.6] Deprecated in GHC 6.12 and will be removed in+  -- GHC 7.  Allow a type variable to be instantiated at a+  -- polymorphic type.+  | ImpredicativeTypes++  -- | [GHC &#xa7; 7.3.3] Change the syntax for qualified infix+  -- operators.+  | NewQualifiedOperators++  -- | [GHC &#xa7; 7.3.12] Relax the interpretation of left operator+  -- sections to allow unary postfix operators.+  | PostfixOperators++  -- | [GHC &#xa7; 7.9.5] Enable quasi-quotation, a mechanism for defining+  -- new concrete syntax for expressions and patterns.+  | QuasiQuotes++  -- | [GHC &#xa7; 7.3.10] Enable generalized list comprehensions,+  -- supporting operations such as sorting and grouping.+  | TransformListComp++  -- | [GHC &#xa7; 7.3.6] Enable view patterns, which match a value by+  -- applying a function and matching on the result.+  | ViewPatterns++  -- | Allow concrete XML syntax to be used in expressions and patterns,+  -- as per the Haskell Server Pages extension language:+  -- <http://www.haskell.org/haskellwiki/HSP>. The ideas behind it are+  -- discussed in the paper \"Haskell Server Pages through Dynamic Loading\"+  -- by Niklas Broberg, from Haskell Workshop '05.+  | XmlSyntax++  -- | Allow regular pattern matching over lists, as discussed in the+  -- paper \"Regular Expression Patterns\" by Niklas Broberg, Andreas Farre+  -- and Josef Svenningsson, from ICFP '04.+  | RegularPatterns++  -- | Enables the use of tuple sections, e.g. @(, True)@ desugars into+  -- @\x -> (x, True)@.+  | TupleSections++  -- | Allows GHC primops, written in C--, to be imported into a Haskell+  -- file.+  | GHCForeignImportPrim++  -- | Support for patterns of the form @n + k@, where @k@ is an+  -- integer literal.+  | NPlusKPatterns++  -- | Improve the layout rule when @if@ expressions are used in a @do@+  -- block.+  | DoAndIfThenElse++  -- | Makes much of the Haskell sugar be desugared into calls to the+  -- function with a particular name that is in scope.+  | RebindableSyntax++  -- | Make @forall@ a keyword in types, which can be used to give the+  -- generalisation explicitly.+  | ExplicitForAll++  -- | Allow contexts to be put on datatypes, e.g. the @Eq a@ in+  -- @data Eq a => Set a = NilSet | ConsSet a (Set a)@.+  | DatatypeContexts++  -- | Local (@let@ and @where@) bindings are monomorphic.+  | MonoLocalBinds++  -- | Enable @deriving@ for the @Data.Functor.Functor@ class.+  | DeriveFunctor++  -- | [GHC &#xa7; 7.5.3] Enable @deriving@ for the @Generic@ and @Generic1@ classes.+  | DeriveGeneric++  -- | Enable @deriving@ for the @Data.Traversable.Traversable@ class.+  | DeriveTraversable++  -- | Enable @deriving@ for the @Data.Foldable.Foldable@ class.+  | DeriveFoldable++  -- | Enable non-decreasing indentation for 'do' blocks.+  | NondecreasingIndentation++  -- | [GHC &#xa7; 8.1.4] Enable interruptible FFI.+  | InterruptibleFFI++  -- | [GHC &#xa7; 8.1.5] Enable the 'capi' calling convention in the+  -- foreign function interface.+  | CApiFFI++  -- | GHCJS FFI extension with convenient import patterns,+  -- asynchronous FFI and a JSVal FFI type+  | JavaScriptFFI++  -- | [GHC &#xa7; 7.3.27] Enable explicit namespaces in import/export.+  | ExplicitNamespaces++  | DataKinds++  | PolyKinds++  -- | [GHC &#xa7; 7.3.16] Enable the multi-way if-expressions+  -- extension to accept conditional expressions with multiple branches.+  | MultiWayIf++  -- | [GHC &#xa7; 7.20.3] Allow imports to be qualified with a safe+  -- keyword that requires the imported module be trusted as according+  -- to the Safe Haskell definition of trust.+  --+  -- > import safe Network.Socket+  | SafeImports++  -- | [GHC &#xa7; 7.20] Compile a module in the Safe, Safe Haskell+  -- mode -- a restricted form of the Haskell language to ensure+  -- type safety.+  | Safe++  -- | [GHC &#xa7; 7.20] Compile a module in the Trustworthy, Safe+  -- Haskell mode -- no restrictions apply but the module is marked+  -- as trusted as long as the package the module resides in is+  -- trusted.+  | Trustworthy++  -- | [GHC &#xa7; 7.6.1.4] Allow default signatures in class+  -- definitions. They apply to default methods implemented in this+  -- class.+  | DefaultSignatures+++-- ConstraintKinds not generally supported by HSE. This flag makes RCategory2.hs+-- pass testing though.++  -- | [GHC &#xa7; 7.40] Allow type class/implicit parameter/equality+  -- constraints to be used as types with the special kind Constraint.+  -- Also generalise the (ctxt => ty) syntax so that any type of kind+  -- Constraint can occur before the arrow.+  | ConstraintKinds++  -- | [GHC &#xa7; 7.25.3] Allow role annotations.+  | RoleAnnotations+  -- | [GHC &#xa7; 7.3.8] Enable giving names to parametrized pattern+  -- schemes+  | PatternSynonyms++  -- | [GHC &#xa7; 7.15] Allow partial specified type signatures.+  -- Note that this extension does not affect parsing. It only affects whether the+  -- program is able to be run with partial signatures.+  | PartialTypeSignatures++  -- | [GHC &#xa7; 7.15.1.2] This extension treats type variables which+  -- start with an underscore as wildcards. For example, `foo :: _x` is+  -- equivalent to `foo :: _`.+  | NamedWildCards++  | TypeApplications++  | TypeFamilyDependencies++  | OverloadedLabels++  -- | Allow multiple @deriving@ clauses, each optionally qualified with a+  -- /strategy/.+  | DerivingStrategies++  | UnboxedSums++  | TypeInType++  | Strict++  | StrictData++  -- | Enable deriving instances via types of the same runtime representation.+  -- Implies 'DerivingStrategies'.+  | DerivingVia++  | QuantifiedConstraints++  | BlockArguments++  deriving (Show, Read, Eq, Ord, Enum, Bounded, Data, Typeable)++-- | Certain extensions imply other extensions, and this function+--   makes the implication explicit. This also handles deprecated+--   extensions, which imply their replacements.+--   The returned value is the transitive closure of implied+--   extensions.+{-impliesExts :: [Extension] -> [Extension]+impliesExts exts =+    let posExts = [ ke | EnableExtension  ke <- exts ]+        negExts = [ ke | DisableExtension ke <- exts ]++        implExts = impliesKnownExts posExts+     in+-}+impliesExts :: [KnownExtension] -> [KnownExtension]+impliesExts = go+  where go [] = []+        go es = let xs = concatMap implE es+                    ys = filter (not . flip elem es) xs+                 in es ++ go ys++        implE e = case e of+                    TypeFamilies        -> [KindSignatures]+                    ScopedTypeVariables -> [TypeOperators, ExplicitForAll]+                    XmlSyntax           -> [RegularPatterns]+                    RegularPatterns     -> [PatternGuards]+                    RankNTypes          -> [Rank2Types, ExplicitForAll]+                    Rank2Types          -> [PolymorphicComponents, ExplicitForAll]+                    PolymorphicComponents   -> [ExplicitForAll]+                    LiberalTypeSynonyms -> [ExplicitForAll]+                    ExistentialQuantification -> [ExplicitForAll]+                    ImpredicativeTypes   -> [ExplicitForAll]+                    PolyKinds           -> [KindSignatures]+                    TypeFamilyDependencies -> [TypeFamilies]+                    TypeInType          -> [PolyKinds, DataKinds, KindSignatures]+                    TypeOperators       -> [ExplicitNamespaces]+                    -- Deprecations+                    RecordPuns          -> [NamedFieldPuns]+                    PatternSignatures   -> [ScopedTypeVariables]+                    DerivingVia         -> [DerivingStrategies]+                    _                   -> []++-- | The list of extensions enabled by+--   GHC's portmanteau -fglasgow-exts flag.+glasgowExts :: [Extension]+glasgowExts = map EnableExtension [+      ForeignFunctionInterface+    , UnliftedFFITypes+    , GADTs+    , ImplicitParams+    , ScopedTypeVariables+    , UnboxedTuples+    , TypeSynonymInstances+    , StandaloneDeriving+    , DeriveDataTypeable+    , FlexibleContexts+    , FlexibleInstances+    , ConstrainedClassMethods+    , MultiParamTypeClasses+    , FunctionalDependencies+    , MagicHash+    , PolymorphicComponents+    , ExistentialQuantification+    , UnicodeSyntax+    , PostfixOperators+    , PatternGuards+    , LiberalTypeSynonyms+    , RankNTypes+    , ImpredicativeTypes+    , TypeOperators+    , RecursiveDo+    , ParallelListComp+    , EmptyDataDecls+    , KindSignatures+    , GeneralizedNewtypeDeriving+    , TypeFamilies+    ]++-- Not exported, just used locally in several places.+allLangDefault :: [KnownExtension]+allLangDefault = [MonomorphismRestriction, MonoPatBinds, ImplicitPrelude]++ghcDefault :: [Extension]+ghcDefault = map EnableExtension (NondecreasingIndentation:allLangDefault)++-- | List of all known extensions, both \"yes\" and \"no\" versions.+knownExtensions :: [Extension]+knownExtensions =+  concat [ [EnableExtension x, DisableExtension x] | x <- [minBound..maxBound] ]++-- | Extensions that have been deprecated, possibly paired with another+-- extension that replaces it.+--+deprecatedExtensions :: [(Extension, Maybe Extension)]+deprecatedExtensions =+  [ (EnableExtension RecordPuns, Just (EnableExtension NamedFieldPuns))+  , (EnableExtension PatternSignatures, Just (EnableExtension ScopedTypeVariables))+  ]++++-- | A clever version of read that returns an 'UnknownExtension'+--   if the string is not recognised.+classifyExtension :: String -> Extension+classifyExtension string+  = case classifyKnownExtension string of+    Just ext -> EnableExtension ext+    Nothing ->+        case string of+        'N':'o':string' ->+            case classifyKnownExtension string' of+            Just ext -> DisableExtension ext+            Nothing -> UnknownExtension string+        _ -> UnknownExtension string+++classifyKnownExtension :: String -> Maybe KnownExtension+classifyKnownExtension "" = Nothing+classifyKnownExtension string@(c : _)+  | inRange (bounds knownExtensionTable) c+  = lookup string (knownExtensionTable ! c)+  | otherwise = Nothing++knownExtensionTable :: Array Char [(String, KnownExtension)]+knownExtensionTable =+  accumArray (flip (:)) [] ('A', 'Z')+    [ (head str, (str, extension))+    | extension <- [toEnum 0 ..]+    , let str = show extension ]++-- | Parse an enabled or disabled extension; returns+-- 'UnknownExtension' if the parse fails.+parseExtension :: String -> Extension+parseExtension str = fromMaybe (UnknownExtension str) $+      EnableExtension  <$> readMay str+  <|> DisableExtension <$> (readMay =<< dropNo str)+  where+    dropNo ('N':'o':rest) = Just rest+    dropNo _              = Nothing++-- | Pretty print an extension. Disabled extensions are prefixed with+-- \'No\'.+prettyExtension :: Extension -> String+prettyExtension (EnableExtension  ext) = show ext+prettyExtension (DisableExtension ext) = "No" ++ show ext+prettyExtension (UnknownExtension str) = str++readMay :: Read a => String -> Maybe a+readMay s = case [x | (x,t) <- reads s, ("","") <- lex t] of+                [x] -> Just x+                _ -> Nothing++{-------------------------------------------+ -- Transform a 'Language', and possibly a modifying set of'Extension's, into a list+ -- of 'KnownExtension's, to be interpreted as modifying the language you get+ -- when all known extensions are disabled.+ -- Extensions are interpreted in a right-biased fashion, so the last instance+ -- of an occurence of 'EnableExtension' or 'DisableExtension' for a given+ -- 'KnownExtension' takes precedence.+ -------------------------------------------}++toExtensionList :: Language -> [Extension] -> [KnownExtension]+toExtensionList lang exts' =+    let langKes = case lang of+                    Haskell98 -> NPlusKPatterns:allLangDefault+                    Haskell2010 -> [DoAndIfThenElse+                                   , PatternGuards+                                   , ForeignFunctionInterface+                                   , EmptyDataDecls+                                   ] ++ allLangDefault+                    HaskellAllDisabled -> []+                    UnknownLanguage s ->+                        error $ "toExtensionList: Unknown language " ++ s+{-+        addExts = [ ke | EnableExtension  ke <- exts ]+        remExts = [ ke | DisableExtension ke <- exts ]+     in impliesExts $ nub $ (langKes ++ addExts) \\ remExts+-}+  in impliesExts $ nub $ go langKes exts'+    where go :: [KnownExtension] -> [Extension] -> [KnownExtension]+          go acc [] = acc+          go acc (DisableExtension x : exts) = go (filter (/= x) acc) exts+          go acc (EnableExtension  x : exts) = go (x : acc)           exts+          -- We just throw away UnknownExtensions+          go acc (_ : exts) = go acc exts
src/Language/Haskell/Exts/Fixity.hs view
@@ -1,397 +1,450 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Language.Haskell.Exts.Fixity
--- Copyright   :  (c) Niklas Broberg 2009
--- License     :  BSD-style (see the file LICENSE.txt)
---
--- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se
--- Stability   :  stable
--- Portability :  portable
---
--- Fixity information to give the parser so that infix operators can
--- be parsed properly.
---
------------------------------------------------------------------------------
-module Language.Haskell.Exts.Fixity
-    (
-    -- * Fixity representation
-      Fixity(..)
-    -- | The following three functions all create lists of
-    --   fixities from textual representations of operators.
-    --   The intended usage is e.g.
-    --
-    -- > fixs = infixr_ 0  ["$","$!","`seq`"]
-    --
-    --   Note that the operators are expected as you would
-    --   write them infix, i.e. with ` characters surrounding
-    --   /varid/ operators, and /varsym/ operators written as is.
-    , infix_, infixl_, infixr_
-    -- ** Collections of fixities
-    , preludeFixities, baseFixities
-
-    -- * Applying fixities to an AST
-    , AppFixity(..)
-    ) where
-
-import Language.Haskell.Exts.Syntax
-
-import Data.Char (isUpper)
-import Control.Monad (when, (<=<), liftM, liftM2, liftM3, liftM4)
-import Data.Traversable (mapM)
-import Prelude hiding (mapM)
-
-#ifdef __GLASGOW_HASKELL__
-#ifdef BASE4
-import Data.Data hiding (Fixity)
-#else
-import Data.Generics (Data(..),Typeable(..))
-#endif
-#endif
-
--- | Operator fixities are represented by their associativity
---   (left, right or none) and their precedence (0-9).
-data Fixity = Fixity Assoc Int Op
-#ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
-#else
-  deriving (Eq,Ord,Show)
-#endif
-
--- | All AST elements that may include expressions which in turn may
---   need fixity tweaking will be instances of this class.
-class AppFixity ast where
-  -- | Tweak any expressions in the element to account for the
-  --   fixities given. Assumes that all operator expressions are
-  --   fully left associative chains to begin with.
-  applyFixities :: Monad m => [Fixity] -- ^ The fixities to account for.
-                    -> ast  -- ^ The element to tweak.
-                    -> m ast  -- ^ The same element, but with operator expressions updated, or a failure.
-
-
-instance AppFixity Exp where
-  applyFixities fixs = infFix fixs <=< leafFix fixs
-    where -- This is the real meat case. We can assume a left-associative list to begin with.
-          infFix fixs (InfixApp a op2 z) = do
-              e <- infFix fixs a
-              case e of
-               InfixApp x op1 y -> do
-                  let (a1,p1) = askFixity fixs op1
-                      (a2,p2) = askFixity fixs op2
-                  when (p1 == p2 && (a1 /= a2 || a1 == AssocNone)) -- Ambiguous infix expression!
-                    $ fail "Ambiguous infix expression"
-                  if (p1 > p2 || p1 == p2 && (a1 == AssocLeft || a2 == AssocNone)) -- Already right order
-                   then return $ InfixApp e op2 z
-                   else liftM (InfixApp x op1) (infFix fixs $ InfixApp y op2 z)
-               _  -> return $ InfixApp e op2 z
-
-          infFix _ e = return e
-
-instance AppFixity Pat where
-  applyFixities fixs = infFix fixs <=< leafFixP fixs
-    where -- Same for patterns
-          infFix fixs (PInfixApp a op2 z) = do
-              p <- infFix fixs a
-              case p of
-               PInfixApp x op1 y -> do
-                  let (a1,p1) = askFixityP fixs op1
-                      (a2,p2) = askFixityP fixs op2
-                  when (p1 == p2 && (a1 /= a2 || a1 == AssocNone)) -- Ambiguous infix expression!
-                    $ fail "Ambiguous infix expression" 
-                  if (p1 > p2 || p1 == p2 && (a1 == AssocLeft || a2 == AssocNone)) -- Already right order
-                   then return $ PInfixApp p op2 z
-                   else liftM (PInfixApp x op1) (infFix fixs $ PInfixApp y op2 z)
-               _  -> return $ PInfixApp p op2 z
-
-          infFix _ p = return p
-
-
--- Internal: lookup associativity and precedence of an operator
-askFixity :: [Fixity] -> QOp -> (Assoc, Int)
-askFixity xs k = askFix xs (f k) -- undefined -- \k -> askFixityP xs (f k) -- lookupWithDefault (AssocLeft, 9) (f k) mp
-    where
-        f (QVarOp x) = VarOp (g x)
-        f (QConOp x) = ConOp (g x)
-
-        g (Qual _ x) = x
-        g (UnQual x) = x
-        g (Special Cons) = Symbol ":"
-
--- Same using patterns
-askFixityP :: [Fixity] -> QName -> (Assoc, Int)
-askFixityP xs qn = askFix xs (ConOp $ g qn)
-    where
-        g (Qual _ x) = x
-        g (UnQual x) = x
-        g (Special Cons) = Symbol ":"
-        
-askFix :: [Fixity] -> Op -> (Assoc, Int)
-askFix xs = \k -> lookupWithDefault (AssocLeft, 9) k mp
-    where
-        lookupWithDefault def k mp = case lookup k mp of
-            Nothing -> def
-            Just x  -> x
-
-        mp = [(x,(a,p)) | Fixity a p x <- xs]
-
-
--- | All fixities defined in the Prelude.
-preludeFixities :: [Fixity]
-preludeFixities = concat
-    [infixr_ 9  ["."]
-    ,infixl_ 9  ["!!"]
-    ,infixr_ 8  ["^","^^","**"]
-    ,infixl_ 7  ["*","/","`quot`","`rem`","`div`","`mod`",":%","%"]
-    ,infixl_ 6  ["+","-"]
-    ,infixr_ 5  [":","++"]
-    ,infix_  4  ["==","/=","<","<=",">=",">","`elem`","`notElem`"]
-    ,infixr_ 3  ["&&"]
-    ,infixr_ 2  ["||"]
-    ,infixl_ 1  [">>",">>="]
-    ,infixr_ 1  ["=<<"]
-    ,infixr_ 0  ["$","$!","`seq`"]
-    ]
-
--- | All fixities defined in the base package.
---
---   Note that the @+++@ operator appears in both Control.Arrows and
---   Text.ParserCombinators.ReadP. The listed precedence for @+++@ in
---   this list is that of Control.Arrows.
-baseFixities :: [Fixity]
-baseFixities = preludeFixities ++ concat
-    [infixl_ 9 ["!","//","!:"]
-    ,infixl_ 8 ["`shift`","`rotate`","`shiftL`","`shiftR`","`rotateL`","`rotateR`"]
-    ,infixl_ 7 [".&."]
-    ,infixl_ 6 ["`xor`"]
-    ,infix_  6 [":+"]
-    ,infixl_ 5 [".|."]
-    ,infixr_ 5 ["+:+","<++","<+>"] -- fixity conflict for +++ between ReadP and Arrow
-    ,infix_  5 ["\\\\"]
-    ,infixl_ 4 ["<$>","<$","<*>","<*","*>","<**>"]
-    ,infix_  4 ["`elemP`","`notElemP`"]
-    ,infixl_ 3 ["<|>"]
-    ,infixr_ 3 ["&&&","***"]
-    ,infixr_ 2 ["+++","|||"]
-    ,infixr_ 1 ["<=<",">=>",">>>","<<<","^<<","<<^","^>>",">>^"]
-    ,infixl_ 0 ["`on`"]
-    ,infixr_ 0 ["`par`","`pseq`"]
-    ]
-
-infixr_, infixl_, infix_ :: Int -> [String] -> [Fixity]
-infixr_ = fixity AssocRight
-infixl_ = fixity AssocLeft
-infix_  = fixity AssocNone
-
--- Internal: help function for the above definitions.
-fixity :: Assoc -> Int -> [String] -> [Fixity]
-fixity a p = map (Fixity a p . op)
-    where
-        op ('`':xs) = (if isUpper (head xs) then ConOp else VarOp) $ Ident $ init xs
-        op xs = (if head xs == ':' then ConOp else VarOp) $ Symbol xs
-
-
-
-
-
-
--------------------------------------------------------------------
--- Boilerplate - yuck!! Everything below here is internal stuff
-
-instance AppFixity Module where
-    applyFixities fixs (Module loc n prs mwt ext imp decls) =
-        liftM (Module loc n prs mwt ext imp) $ appFixDecls fixs decls
-
-instance AppFixity Decl where
-    applyFixities fixs decl = case decl of
-        ClassDecl loc ctxt n vars deps cdecls   -> liftM (ClassDecl loc ctxt n vars deps) $ mapM fix cdecls
-        InstDecl loc ctxt n ts idecls           -> liftM (InstDecl loc ctxt n ts) $ mapM fix idecls
-        SpliceDecl loc spl      -> liftM (SpliceDecl loc) $ fix spl
-        FunBind matches         -> liftM FunBind $ mapM fix matches
-        PatBind loc p mt rhs bs -> liftM3 (flip (PatBind loc) mt) (fix p) (fix rhs) (fix bs)
-        AnnPragma loc ann       -> liftM (AnnPragma loc) $ fix ann
-        _                       -> return decl
-      where fix x = applyFixities fixs x
-
-appFixDecls :: Monad m => [Fixity] -> [Decl] -> m [Decl]
-appFixDecls fixs decls =
-    let extraFixs = getFixities decls
-     in mapM (applyFixities (fixs++extraFixs)) decls
-  where getFixities = concatMap getFixity
-        getFixity (InfixDecl _ a p ops) = map (Fixity a p) ops
-        getFixity _ = []
-
-instance AppFixity Annotation where
-    applyFixities fixs ann = case ann of
-        Ann     n e   -> liftM (Ann n) $ fix e
-        TypeAnn n e   -> liftM (TypeAnn n) $ fix e
-        ModuleAnn e   -> liftM ModuleAnn $ fix e
-      where fix x = applyFixities fixs x
-
-instance AppFixity ClassDecl where
-    applyFixities fixs (ClsDecl decl) = liftM ClsDecl $ applyFixities fixs decl
-    applyFixities _ cdecl = return cdecl
-
-instance AppFixity InstDecl where
-    applyFixities fixs (InsDecl decl) = liftM InsDecl $ applyFixities fixs decl
-    applyFixities _ idecl = return idecl
-
-instance AppFixity Match where
-    applyFixities fixs (Match loc n ps mt rhs bs) = liftM3 (flip (Match loc n) mt) (mapM fix ps) (fix rhs) (fix bs)
-      where fix x = applyFixities fixs x
-
-instance AppFixity Rhs where
-    applyFixities fixs rhs = case rhs of
-        UnGuardedRhs e      -> liftM UnGuardedRhs $ fix e
-        GuardedRhss grhss   -> liftM GuardedRhss $ mapM fix grhss
-      where fix x = applyFixities fixs x
-
-instance AppFixity GuardedRhs where
-    applyFixities fixs (GuardedRhs loc stmts e) = liftM2 (GuardedRhs loc) (mapM fix stmts) $ fix e
-      where fix x = applyFixities fixs x
-
-instance AppFixity PatField where
-    applyFixities fixs (PFieldPat n p) = liftM (PFieldPat n) $ applyFixities fixs p
-    applyFixities _ pf = return pf
-
-instance AppFixity RPat where
-    applyFixities fixs rp = case rp of
-        RPOp rp op          -> liftM (flip RPOp op) (fix rp)
-        RPEither a b        -> liftM2 RPEither (fix a) (fix b)
-        RPSeq rps           -> liftM RPSeq $ mapM fix rps
-        RPGuard p stmts     -> liftM2 RPGuard (fix p) $ mapM fix stmts
-        RPCAs n rp          -> liftM (RPCAs n) $ fix rp
-        RPAs n rp           -> liftM (RPAs n) $ fix rp
-        RPParen rp          -> liftM RPParen $ fix rp
-        RPPat p             -> liftM RPPat $ fix p
-      where fix x = applyFixities fixs x
-
-instance AppFixity PXAttr where
-    applyFixities fixs (PXAttr n p) = liftM (PXAttr n) $ applyFixities fixs p
-
-instance AppFixity Stmt where
-    applyFixities fixs stmt = case stmt of
-        Generator loc p e   -> liftM2 (Generator loc) (fix p) (fix e)
-        Qualifier e         -> liftM Qualifier $ fix e
-        LetStmt bs          -> liftM LetStmt $ fix bs    -- special behavior
-        RecStmt stmts       -> liftM RecStmt $ mapM fix stmts
-      where fix x = applyFixities fixs x
-
-instance AppFixity Binds where
-    applyFixities fixs bs = case bs of
-        BDecls decls        -> liftM BDecls $ appFixDecls fixs decls  -- special behavior
-        IPBinds ips         -> liftM IPBinds $ mapM fix ips
-      where fix x = applyFixities fixs x
-
-
-instance AppFixity IPBind where
-    applyFixities fixs (IPBind loc n e) = liftM (IPBind loc n) $ applyFixities fixs e
-
-instance AppFixity FieldUpdate where
-    applyFixities fixs (FieldUpdate n e) = liftM (FieldUpdate n) $ applyFixities fixs e
-    applyFixities _ fup = return fup
-
-instance AppFixity Alt where
-    applyFixities fixs (Alt loc p galts bs) = liftM3 (Alt loc) (fix p) (fix galts) (fix bs)
-      where fix x = applyFixities fixs x
-
-instance AppFixity GuardedAlts where
-    applyFixities fixs galts = case galts of
-        UnGuardedAlt e      -> liftM UnGuardedAlt $ fix e
-        GuardedAlts  galts  -> liftM GuardedAlts $ mapM fix galts
-      where fix x = applyFixities fixs x
-
-instance AppFixity GuardedAlt where
-    applyFixities fixs (GuardedAlt loc stmts e) = liftM2 (GuardedAlt loc) (mapM fix stmts) (fix e)
-      where fix x = applyFixities fixs x
-
-instance AppFixity QualStmt where
-    applyFixities fixs qstmt = case qstmt of
-        QualStmt     s      -> liftM QualStmt $ fix s
-        ThenTrans    e      -> liftM ThenTrans $ fix e
-        ThenBy       e1 e2  -> liftM2 ThenBy (fix e1) (fix e2)
-        GroupBy      e      -> liftM GroupBy (fix e)
-        GroupUsing   e      -> liftM GroupUsing (fix e)
-        GroupByUsing e1 e2  -> liftM2 GroupByUsing (fix e1) (fix e2)
-      where fix x = applyFixities fixs x
-
-instance AppFixity Bracket where
-    applyFixities fixs br = case br of
-        ExpBracket e    -> liftM ExpBracket $ fix e
-        PatBracket p    -> liftM PatBracket $ fix p
-        DeclBracket ds  -> liftM DeclBracket $ mapM fix ds
-        _               -> return br
-      where fix x = applyFixities fixs x
-
-instance AppFixity Splice where
-    applyFixities fixs (ParenSplice e) = liftM ParenSplice $ applyFixities fixs e
-    applyFixities _ s = return s
-
-instance AppFixity XAttr where
-    applyFixities fixs (XAttr n e) = liftM (XAttr n) $ applyFixities fixs e
-
-
--- the boring boilerplate stuff for expressions too
--- Recursively fixes the "leaves" of the infix chains,
--- without yet touching the chain itself. We assume all chains are
--- left-associate to begin with.
-leafFix fixs e = case e of
-    InfixApp e1 op e2       -> liftM2 (flip InfixApp op) (leafFix fixs e1) (fix e2)
-    App e1 e2               -> liftM2 App (fix e1) (fix e2)
-    NegApp e                -> liftM NegApp $ fix e
-    Lambda loc pats e       -> liftM2 (Lambda loc) (mapM fix pats) $ fix e
-    Let bs e                -> liftM2 Let (fix bs) $ fix e
-    If e a b                -> liftM3 If (fix e) (fix a) (fix b)
-    Case e alts             -> liftM2 Case (fix e) $ mapM fix alts
-    Do stmts                -> liftM Do $ mapM fix stmts
-    MDo stmts               -> liftM MDo $ mapM fix stmts
-    Tuple exps              -> liftM Tuple $ mapM fix exps
-    List exps               -> liftM List $ mapM fix  exps
-    Paren e                 -> liftM Paren $ fix e
-    LeftSection e op        -> liftM (flip LeftSection op) (fix e)
-    RightSection op e       -> liftM (RightSection op) $ fix e
-    RecConstr n fups        -> liftM (RecConstr n) $ mapM fix fups
-    RecUpdate e fups        -> liftM2 RecUpdate (fix e) $ mapM fix fups
-    EnumFrom e              -> liftM EnumFrom $ fix e
-    EnumFromTo e1 e2        -> liftM2 EnumFromTo (fix e1) (fix e2)
-    EnumFromThen e1 e2      -> liftM2 EnumFromThen (fix e1) (fix e2)
-    EnumFromThenTo e1 e2 e3 -> liftM3 EnumFromThenTo (fix e1) (fix e2) (fix e3)
-    ListComp e quals        -> liftM2 ListComp (fix e) $ mapM fix quals
-    ParComp  e qualss       -> liftM2 ParComp (fix e) $ mapM (mapM fix) qualss
-    ExpTypeSig loc e t      -> liftM (flip (ExpTypeSig loc) t) (fix e)
-    BracketExp b            -> liftM BracketExp $ fix b
-    SpliceExp s             -> liftM SpliceExp $ fix s
-    XTag loc n ats mexp cs  -> liftM3 (XTag loc n) (mapM fix ats) (mapM fix mexp) (mapM fix cs)
-    XETag loc n ats mexp    -> liftM2 (XETag loc n) (mapM fix ats) (mapM fix mexp)
-    XExpTag e               -> liftM XExpTag $ fix e
-    Proc loc p e            -> liftM2 (Proc loc) (fix p) (fix e)
-    LeftArrApp e1 e2        -> liftM2 LeftArrApp (fix e1) (fix e2)
-    RightArrApp e1 e2       -> liftM2 RightArrApp (fix e1) (fix e2)
-    LeftArrHighApp e1 e2    -> liftM2 LeftArrHighApp (fix e1) (fix e2)
-    RightArrHighApp e1 e2   -> liftM2 RightArrHighApp (fix e1) (fix e2)
-    CorePragma s e          -> liftM (CorePragma s) (fix e)
-    SCCPragma s e           -> liftM (SCCPragma s) (fix e)
-    GenPragma s ab cd e     -> liftM (GenPragma s ab cd) (fix e)
-
-    _                       -> return e
-  where
-    fix x = applyFixities fixs x
-
-leafFixP fixs p = case p of
-        PNeg p                -> liftM PNeg $ fix p
-        PApp n ps             -> liftM (PApp n) $ mapM fix ps
-        PTuple ps             -> liftM PTuple $ mapM fix ps
-        PList ps              -> liftM PList $ mapM fix ps
-        PParen p              -> liftM PParen $ fix p
-        PRec n pfs            -> liftM (PRec n) $ mapM fix pfs
-        PAsPat n p            -> liftM (PAsPat n) $ fix p
-        PIrrPat p             -> liftM PIrrPat $ fix p
-        PatTypeSig loc p t    -> liftM (flip (PatTypeSig loc) t) (fix p)
-        PViewPat e p          -> liftM2 PViewPat (fix e) (fix p)
-        PRPat rps             -> liftM PRPat $ mapM fix rps
-        PXTag loc n ats mp ps -> liftM3 (PXTag loc n) (mapM fix ats) (mapM fix mp) (mapM fix ps)
-        PXETag loc n ats mp   -> liftM2 (PXETag loc n) (mapM fix ats) (mapM fix mp)
-        PXPatTag p            -> liftM PXPatTag $ fix p
-        PXRPats rps           -> liftM PXRPats $ mapM fix rps
-        PBangPat p            -> liftM PBangPat $ fix p
-        _                     -> return p
-      where fix x = applyFixities fixs x
+{-# LANGUAGE CPP, DeriveDataTypeable, Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.Fixity+-- Copyright   :  (c) Niklas Broberg 2009+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+-- Stability   :  stable+-- Portability :  portable+--+-- Fixity information to give the parser so that infix operators can+-- be parsed properly.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.Fixity+    (+    -- * Fixity representation+      Fixity(..)+    -- | The following three functions all create lists of+    --   fixities from textual representations of operators.+    --   The intended usage is e.g.+    --+    -- > fixs = infixr_ 0  ["$","$!","`seq`"]+    --+    --   Note that the operators are expected as you would+    --   write them infix, i.e. with ` characters surrounding+    --   /varid/ operators, and /varsym/ operators written as is.+    , infix_, infixl_, infixr_+    -- ** Collections of fixities+    , preludeFixities, baseFixities++    -- * Applying fixities to an AST+    , AppFixity(..)+    ) where++import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.SrcLoc++import Control.Monad (when, (<=<), liftM, liftM2, liftM3, liftM4)+import qualified Control.Monad.Fail as Fail+import Data.Traversable (mapM)+import Data.Maybe (fromMaybe)+import Data.Typeable+import Data.Data hiding (Fixity)+#if __GLASGOW_HASKELL__ < 710+import Control.Applicative ((<$))+#endif+import Prelude hiding (mapM)++-- | Operator fixities are represented by their associativity+--   (left, right or none) and their precedence (0-9).+data Fixity = Fixity (Assoc ()) Int (QName ())+  deriving (Eq,Ord,Show,Typeable,Data)++-- | All AST elements that may include expressions which in turn may+--   need fixity tweaking will be instances of this class.+class AppFixity ast where+  -- | Tweak any expressions in the element to account for the+  --   fixities given. Assumes that all operator expressions are+  --   fully left associative chains to begin with.+  applyFixities :: Fail.MonadFail m => [Fixity]  -- ^ The fixities to account for.+                    -> ast SrcSpanInfo           -- ^ The element to tweak.+                    -> m (ast SrcSpanInfo)       -- ^ The same element, but with operator expressions updated, or a failure.++assocNone, assocLeft, assocRight :: Assoc ()+assocNone = AssocNone ()+assocLeft = AssocLeft ()+assocRight = AssocRight ()++instance AppFixity Exp where+  applyFixities fixs' = infFix fixs' <=< leafFix fixs'+    where -- This is the real meat case. We can assume a left-associative list to begin with.+          infFix fixs (InfixApp l2 a op2 z) = do+              e <- infFix fixs a+              let fixup (a1,p1) (a2,p2) y pre = do+                      when (p1 == p2 && (a1 /= a2 || a1 == assocNone)) -- Ambiguous infix expression!+                           $ fail "Ambiguous infix expression"+                      if p1 > p2 || p1 == p2 && (a1 == assocLeft || a2 == assocNone) -- Already right order+                       then return $ InfixApp l2 e op2 z+                       else liftM pre (infFix fixs $ InfixApp (ann y <++> ann z) y op2 z)+              case e of+               InfixApp _ x op1 y -> fixup (askFixity fixs op1) (askFixity fixs op2) y (InfixApp l2 x op1)+               NegApp   _       y -> fixup prefixMinusFixity    (askFixity fixs op2) y (NegApp l2)+               _  -> return $ InfixApp l2 e op2 z++          infFix _ e = return e++--ambOps l = ParseFailed (getPointLoc l) $ "Ambiguous infix expression"++instance AppFixity Pat where+  applyFixities fixs' = infFix fixs' <=< leafFixP fixs'+    where -- This is the real meat case. We can assume a left-associative list to begin with.+          infFix fixs (PInfixApp l2 a op2 z) = do+              p <- infFix fixs a+              let fixup (a1,p1) (a2,p2) y pre = do+                      when (p1 == p2 && (a1 /= a2 || a1 == assocNone )) -- Ambiguous infix expression!+                           $ fail "Ambiguous infix expression"+                      if p1 > p2 || p1 == p2 && (a1 == assocLeft || a2 == assocNone) -- Already right order+                       then return $ PInfixApp l2 p op2 z+                       else liftM pre (infFix fixs $ PInfixApp (ann y <++> ann z) y op2 z)+              case p of+               PInfixApp _ x op1 y -> fixup (askFixityP fixs op1) (askFixityP fixs op2) y (PInfixApp l2 x op1)+               _  -> return $ PInfixApp l2 p op2 z++          infFix _ p = return p++-- Internal: lookup associativity and precedence of an operator+askFixity :: [Fixity] -> QOp l -> (Assoc (), Int)+askFixity xs k = askFix xs (f (() <$ k))+    where+        f (QVarOp _ x) = g x+        f (QConOp _ x) = g x++        g (Special _ (Cons _)) = UnQual () (Symbol () ":")+        g x                  = x++-- Same using patterns+askFixityP :: [Fixity] -> QName l -> (Assoc (), Int)+askFixityP xs qn = askFix xs (g (() <$ qn))+    where+        g (Special _ (Cons _)) = UnQual () (Symbol () ":")+        g x                  = x++askFix :: [Fixity] -> QName l -> (Assoc (), Int)+askFix xs = \k -> lookupWithDefault (assocLeft, 9) (() <$ k) mp+    where+        lookupWithDefault def k mp' = fromMaybe def $ lookup k mp'++        mp = [(x,(a,p)) | Fixity a p x <- xs]++++-- | Built-in fixity for prefix minus+prefixMinusFixity :: (Assoc (), Int)+prefixMinusFixity = (AssocLeft (), 6)++-- | All fixities defined in the Prelude.+preludeFixities :: [Fixity]+preludeFixities = concat+    [infixr_ 9  ["."]+    ,infixl_ 9  ["!!"]+    ,infixr_ 8  ["^","^^","**"]+    ,infixl_ 7  ["*","/","`quot`","`rem`","`div`","`mod`"]+    ,infixl_ 6  ["+","-"]+    ,infixr_ 5  [":","++"]+    ,infix_  4  ["==","/=","<","<=",">=",">","`elem`","`notElem`"]+    ,infixl_ 4  ["<$>","<$","<*>","<*","*>"]+    ,infixr_ 3  ["&&"]+    ,infixr_ 2  ["||"]+    ,infixl_ 1  [">>",">>="]+    ,infixr_ 1  ["=<<"]+    ,infixr_ 0  ["$","$!","`seq`"]+    ]++-- | All fixities defined in the base package.+--+--   Note that the @+++@ operator appears in both Control.Arrows and+--   Text.ParserCombinators.ReadP. The listed precedence for @+++@ in+--   this list is that of Control.Arrows.+baseFixities :: [Fixity]+baseFixities = preludeFixities ++ concat+    [infixl_ 9 ["!","//","!:"]+    ,infixr_ 9 ["`Compose`"]+    ,infixl_ 8 ["`shift`","`rotate`","`shiftL`","`shiftR`","`rotateL`","`rotateR`"]+    ,infixl_ 7 [".&.","%"]+    ,infixr_ 6 ["<>"]+    ,infixl_ 6 ["`xor`"]+    ,infix_  6 [":+"]+    ,infixl_ 5 [".|."]+    ,infixr_ 5 ["+:+","<++","<+>","<|"] -- fixity conflict for +++ between ReadP and Arrow+    ,infix_  5 ["\\\\"]+    ,infixl_ 4 ["<**>","$>","<$","<$!>"]+    ,infix_  4 ["`elemP`","`notElemP`",":~:",":~~:"]+    ,infixl_ 3 ["<|>"]+    ,infixr_ 3 ["&&&","***"]+    ,infixr_ 2 ["+++","|||"]+    ,infixr_ 1 ["<=<",">=>",">>>","<<<","^<<","<<^","^>>",">>^"]+    ,infixl_ 1 ["&"]+    ,infixl_ 0 ["`on`"]+    ,infixr_ 0 ["`par`","`pseq`"]+    ]++infixr_, infixl_, infix_ :: Int -> [String] -> [Fixity]+infixr_ = fixity  assocRight+infixl_ = fixity  assocLeft+infix_  = fixity  assocNone++-- Internal: help function for the above definitions.+fixity :: Assoc () -> Int -> [String] -> [Fixity]+fixity a p = map (Fixity a p . op)+    where+        op ('`':xs) = UnQual () $ Ident () $ init xs+        op xs = UnQual () $ Symbol () xs+++++++++-------------------------------------------------------------------+-- Boilerplate - yuck!! Everything below here is internal stuff++instance AppFixity Module where+    applyFixities fixs (Module l mmh prs imp decls) =+        liftM (Module l mmh prs imp) $ appFixDecls mmn fixs decls+      where mmn = getMmn mmh+            getMmn (Just (ModuleHead _ n _ _)) = Just n+            getMmn _ = Nothing+    applyFixities fixs (XmlPage l mn os xn xas mexp cs) =+        liftM3 (XmlPage l mn os xn) (fix xas) (fix mexp) (fix cs)+      where fix xs = mapM (applyFixities fixs) xs+    applyFixities fixs (XmlHybrid l mmh prs imp decls xn xas mexp cs) =+        liftM4 (flip (XmlHybrid l mmh prs imp) xn) (appFixDecls mmn fixs decls)+                (fixe xas) (fixe mexp) (fixe cs)+      where mmn = getMmn mmh+            getMmn (Just (ModuleHead _ n _ _)) = Just n+            getMmn _ = Nothing+            fixe xs = let extraFixs = getFixities mmn decls+                       in mapM (applyFixities (fixs++extraFixs)) xs++instance AppFixity Decl where+    applyFixities fixs decl = case decl of+        ClassDecl l ctxt dh deps cdecls   -> liftM (ClassDecl l ctxt dh deps) $ mapM (mapM fix) cdecls+        InstDecl  l olp ih idecls         -> liftM (InstDecl  l olp ih)  $ mapM (mapM fix) idecls+        SpliceDecl l spl        -> liftM (SpliceDecl l) $ fix spl+        FunBind l matches       -> liftM (FunBind l) $ mapM fix matches+        PatBind l p rhs bs      ->+         let extraFix x = applyFixities (fixs ++ maybe [] getBindFixities bs) x+          in liftM3 (PatBind l) (extraFix p) (extraFix rhs) (mapM extraFix bs)+        AnnPragma l ann'         -> liftM (AnnPragma l) $ fix ann'+        PatSyn l p1 p2 dir -> liftM (PatSyn l p1 p2) (fix dir)+        _                       -> return decl+      where fix x = applyFixities fixs x++instance AppFixity PatternSynDirection where+  applyFixities fixs dir = case dir of+    ExplicitBidirectional l ds -> liftM (ExplicitBidirectional l) (mapM fix ds)+    _ -> return dir+    where fix x = applyFixities fixs x++appFixDecls :: Fail.MonadFail m => Maybe (ModuleName SrcSpanInfo) -> [Fixity] -> [Decl SrcSpanInfo] -> m [Decl SrcSpanInfo]+appFixDecls mmdl fixs decls =+    let extraFixs = getFixities mmdl decls+     in mapM (applyFixities (fixs++extraFixs)) decls++getFixities :: Maybe (ModuleName l) -> [Decl l] -> [Fixity]+getFixities mmdl = concatMap (getFixity mmdl)++getFixity :: Maybe (ModuleName l) -> Decl l -> [Fixity]+getFixity mmdl d =+  case d of+    InfixDecl _ a mp ops  -> let p = fromMaybe 9 mp+                              in map (Fixity (scrub a) p) (concatMap g (map scrub ops))+    ClassDecl _ _ _ _ cds -> maybe [] (concatMap getClassFixity) cds+    _ -> []+  where g (VarOp _ x) = f x+        g (ConOp _ x) = f x+        f x = case mmdl of+              Nothing -> [UnQual () x]+              Just m  -> [Qual () (scrub m) x, UnQual () x]+        getClassFixity (ClsDecl _ cd) = getFixity mmdl cd+        getClassFixity _              = []++scrub :: Functor f => f a -> f ()+scrub f = () <$ f++getBindFixities :: Binds l -> [Fixity]+getBindFixities bs = case bs of+                        BDecls _ ds -> getFixities Nothing ds+                        _           -> []++instance AppFixity Annotation where+    applyFixities fixs ann' = case ann' of+        Ann     l n e   -> liftM (Ann l n) $ fix e+        TypeAnn l n e   -> liftM (TypeAnn l n) $ fix e+        ModuleAnn l e   -> liftM (ModuleAnn l) $ fix e+      where fix x = applyFixities fixs x++instance AppFixity ClassDecl where+    applyFixities fixs (ClsDecl l decl) = liftM (ClsDecl l) $ applyFixities fixs decl+    applyFixities _ cdecl = return cdecl++instance AppFixity InstDecl where+    applyFixities fixs (InsDecl l decl) = liftM (InsDecl l) $ applyFixities fixs decl+    applyFixities _ idecl = return idecl++instance AppFixity Match where+    applyFixities fixs match = case match of+        Match l n ps rhs bs -> liftM3 (Match l n) (mapM (fix bs) ps) (fix bs rhs) (mapM (fix bs) bs)+        InfixMatch l a n ps rhs bs -> liftM4 (flip (InfixMatch l) n) (fix bs a) (mapM (fix bs) ps) (fix bs rhs) (mapM (fix bs) bs)+      where fix bs x = applyFixities fixs' x+             where fixs' = fixs ++ maybe [] getBindFixities bs++instance AppFixity Rhs where+    applyFixities fixs rhs = case rhs of+        UnGuardedRhs l e      -> liftM (UnGuardedRhs l) $ fix e+        GuardedRhss l grhss   -> liftM (GuardedRhss l) $ mapM fix grhss+      where fix x = applyFixities fixs x++instance AppFixity GuardedRhs where+    applyFixities fixs (GuardedRhs l stmts e) = liftM2 (GuardedRhs l) (mapM fix stmts) $ fix e+      where fix x = applyFixities fixs x++instance AppFixity PatField where+    applyFixities fixs (PFieldPat l n p) = liftM (PFieldPat l n) $ applyFixities fixs p+    applyFixities _ pf = return pf++instance AppFixity RPat where+    applyFixities fixs rp' = case rp' of+        RPOp l rp op          -> liftM (flip (RPOp l) op) $ fix rp+        RPEither l a b        -> liftM2 (RPEither l) (fix a) (fix b)+        RPSeq l rps           -> liftM (RPSeq l) $ mapM fix rps+        RPGuard l p stmts     -> liftM2 (RPGuard l) (fix p) $ mapM fix stmts+        RPCAs l n rp          -> liftM (RPCAs l n) $ fix rp+        RPAs l n rp           -> liftM (RPAs l n) $ fix rp+        RPParen l rp          -> liftM (RPParen l) $ fix rp+        RPPat l p             -> liftM (RPPat l) $ fix p+      where fix x = applyFixities fixs x++instance AppFixity PXAttr where+    applyFixities fixs (PXAttr l n p) = liftM (PXAttr l n) $ applyFixities fixs p++instance AppFixity Stmt where+    applyFixities fixs stmt = case stmt of+        Generator l p e       -> liftM2 (Generator l) (fix p) (fix e)+        Qualifier l e         -> liftM (Qualifier l) $ fix e+        LetStmt l bs          -> liftM (LetStmt l) $ fix bs    -- special behavior+        RecStmt l stmts       -> liftM (RecStmt l) $ mapM fix stmts+      where fix x = applyFixities fixs x++instance AppFixity Binds where+    applyFixities fixs bs = case bs of+        BDecls l decls        -> liftM (BDecls l) $ appFixDecls Nothing fixs decls  -- special behavior+        IPBinds l ips         -> liftM (IPBinds l) $ mapM fix ips+      where fix x = applyFixities fixs x+++instance AppFixity IPBind where+    applyFixities fixs (IPBind l n e) = liftM (IPBind l n) $ applyFixities fixs e++instance AppFixity FieldUpdate where+    applyFixities fixs (FieldUpdate l n e) = liftM (FieldUpdate l n) $ applyFixities fixs e+    applyFixities _ fup = return fup++instance AppFixity Alt where+    applyFixities fixs (Alt l p galts bs) = liftM3 (Alt l) (fix p) (fix galts) (mapM fix bs)+      where fix x = applyFixities fixs x++instance AppFixity QualStmt where+    applyFixities fixs qstmt = case qstmt of+        QualStmt     l s      -> liftM (QualStmt l) $ fix s+        ThenTrans    l e      -> liftM (ThenTrans l) $ fix e+        ThenBy       l e1 e2  -> liftM2 (ThenBy l) (fix e1) (fix e2)+        GroupBy      l e      -> liftM (GroupBy l) (fix e)+        GroupUsing   l e      -> liftM (GroupUsing l) (fix e)+        GroupByUsing l e1 e2  -> liftM2 (GroupByUsing l) (fix e1) (fix e2)+      where fix x = applyFixities fixs x++instance AppFixity Bracket where+    applyFixities fixs br = case br of+        ExpBracket l e    -> liftM (ExpBracket l) $ fix e+        PatBracket l p    -> liftM (PatBracket l) $ fix p+        DeclBracket l ds  -> liftM (DeclBracket l) $ mapM fix ds+        _                 -> return br+      where fix x = applyFixities fixs x++instance AppFixity Splice where+    applyFixities fixs (ParenSplice l e) = liftM (ParenSplice l) $ applyFixities fixs e+    applyFixities _ s = return s++instance AppFixity XAttr where+    applyFixities fixs (XAttr l n e) = liftM (XAttr l n) $ applyFixities fixs e+++-- the boring boilerplate stuff for expressions too+-- Recursively fixes the "leaves" of the infix chains,+-- without yet touching the chain itself. We assume all chains are+-- left-associate to begin with.+leafFix :: Fail.MonadFail m => [Fixity] -> Exp SrcSpanInfo -> m (Exp SrcSpanInfo)+leafFix fixs e' = case e' of+    InfixApp l e1 op e2       -> liftM2 (flip (InfixApp l) op) (leafFix fixs e1) (fix e2)+    App l e1 e2               -> liftM2 (App l) (fix e1) (fix e2)+    NegApp l e                -> liftM (NegApp l) $ fix e+    Lambda l pats e           -> liftM2 (Lambda l) (mapM fix pats) $ fix e+    Let l bs e                ->+        let extraFix x = applyFixities (fixs ++ getBindFixities bs) x+         in liftM2 (Let l) (extraFix bs) $ extraFix e+    If l e a b                -> liftM3 (If l) (fix e) (fix a) (fix b)+    MultiIf l alts            -> liftM (MultiIf l) (mapM fix alts)+    Case l e alts             -> liftM2 (Case l) (fix e) $ mapM fix alts+    Do l stmts                -> liftM (Do l) $ mapM fix stmts+    MDo l stmts               -> liftM (MDo l) $ mapM fix stmts+    Tuple l bx exps           -> liftM (Tuple l bx) $ mapM fix exps+    List l exps               -> liftM (List l) $ mapM fix  exps+    Paren l e                 -> liftM (Paren l) $ fix e+    LeftSection l e op        -> liftM (flip (LeftSection l) op) (fix e)+    RightSection l op e       -> liftM (RightSection l op) $ fix e+    RecConstr l n fups        -> liftM (RecConstr l n) $ mapM fix fups+    RecUpdate l e fups        -> liftM2 (RecUpdate l) (fix e) $ mapM fix fups+    EnumFrom l e              -> liftM (EnumFrom l) $ fix e+    EnumFromTo l e1 e2        -> liftM2 (EnumFromTo l) (fix e1) (fix e2)+    EnumFromThen l e1 e2      -> liftM2 (EnumFromThen l) (fix e1) (fix e2)+    EnumFromThenTo l e1 e2 e3 -> liftM3 (EnumFromThenTo l) (fix e1) (fix e2) (fix e3)+    ListComp l e quals        -> liftM2 (ListComp l) (fix e) $ mapM fix quals+    ParComp  l e qualss       -> liftM2 (ParComp l) (fix e) $ mapM (mapM fix) qualss+    ExpTypeSig l e t          -> liftM (flip (ExpTypeSig l) t) (fix e)+    BracketExp l b            -> liftM (BracketExp l) $ fix b+    SpliceExp l s             -> liftM (SpliceExp l) $ fix s+    XTag l n ats mexp cs      -> liftM3 (XTag l n) (mapM fix ats) (mapM fix mexp) (mapM fix cs)+    XETag l n ats mexp        -> liftM2 (XETag l n) (mapM fix ats) (mapM fix mexp)+    XExpTag l e               -> liftM (XExpTag l) $ fix e+    XChildTag l cs            -> liftM (XChildTag l) $ mapM fix cs+    Proc l p e                -> liftM2 (Proc l) (fix p) (fix e)+    LeftArrApp l e1 e2        -> liftM2 (LeftArrApp l) (fix e1) (fix e2)+    RightArrApp l e1 e2       -> liftM2 (RightArrApp l) (fix e1) (fix e2)+    LeftArrHighApp l e1 e2    -> liftM2 (LeftArrHighApp l) (fix e1) (fix e2)+    RightArrHighApp l e1 e2   -> liftM2 (RightArrHighApp l) (fix e1) (fix e2)+    CorePragma l s e          -> liftM (CorePragma l s) (fix e)+    SCCPragma l s e           -> liftM (SCCPragma l s) (fix e)+    GenPragma l s ab cd e     -> liftM (GenPragma l s ab cd) (fix e)+    LCase l alts              -> liftM (LCase l) $ mapM fix alts++    _                         -> return e'+  where+    fix x = applyFixities fixs x++leafFixP :: Fail.MonadFail m => [Fixity] -> Pat SrcSpanInfo -> m (Pat SrcSpanInfo)+leafFixP fixs p' = case p' of+        PInfixApp l p1 op p2    -> liftM2 (flip (PInfixApp l) op) (leafFixP fixs p1) (fix p2)+        PApp l n ps             -> liftM (PApp l n) $ mapM fix ps+        PTuple l bx ps          -> liftM (PTuple l bx) $ mapM fix ps+        PList l ps              -> liftM (PList l) $ mapM fix ps+        PParen l p              -> liftM (PParen l) $ fix p+        PRec l n pfs            -> liftM (PRec l n) $ mapM fix pfs+        PAsPat l n p            -> liftM (PAsPat l n) $ fix p+        PIrrPat l p             -> liftM (PIrrPat l) $ fix p+        PatTypeSig l p t        -> liftM (flip (PatTypeSig l) t) (fix p)+        PViewPat l e p          -> liftM2 (PViewPat l) (fix e) (fix p)+        PRPat l rps             -> liftM (PRPat l) $ mapM fix rps+        PXTag l n ats mp ps     -> liftM3 (PXTag l n) (mapM fix ats) (mapM fix mp) (mapM fix ps)+        PXETag l n ats mp       -> liftM2 (PXETag l n) (mapM fix ats) (mapM fix mp)+        PXPatTag l p            -> liftM (PXPatTag l) $ fix p+        PXRPats l rps           -> liftM (PXRPats l) $ mapM fix rps+        PBangPat l p            -> liftM (PBangPat l) $ fix p+        _                       -> return p'+      where fix x = applyFixities fixs x
+ src/Language/Haskell/Exts/InternalLexer.hs view
@@ -0,0 +1,1497 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE BangPatterns #-}+{-# OPTIONS_HADDOCK hide #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.Annotated.InternalLexer+-- Copyright   :  (c) The GHC Team, 1997-2000+--                (c) Niklas Broberg, 2004-2009+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+-- Stability   :  stable+-- Portability :  portable+--+-- Lexer for Haskell, with some extensions.+--+-----------------------------------------------------------------------------++-- ToDo: Introduce different tokens for decimal, octal and hexadecimal (?)+-- ToDo: FloatTok should have three parts (integer part, fraction, exponent) (?)+-- ToDo: Use a lexical analyser generator (lx?)++module Language.Haskell.Exts.InternalLexer (Token(..), showToken, lexer, topLexer) where++import Language.Haskell.Exts.ParseMonad+import Language.Haskell.Exts.SrcLoc hiding (loc)+import Language.Haskell.Exts.Comments+import Language.Haskell.Exts.Extension+import Language.Haskell.Exts.ExtScheme++import Prelude hiding (id, exponent)+import Data.Char+import Data.Ratio+import Data.List (intercalate, isPrefixOf)+import Control.Monad (when)++-- import Debug.Trace (trace)++data Token+        = VarId String+        | LabelVarId String+        | QVarId (String,String)+        | IDupVarId (String)        -- duplicable implicit parameter+        | ILinVarId (String)        -- linear implicit parameter+        | ConId String+        | QConId (String,String)+        | DVarId [String]       -- to enable varid's with '-' in them+        | VarSym String+        | ConSym String+        | QVarSym (String,String)+        | QConSym (String,String)+        | IntTok (Integer, String)+        | FloatTok (Rational, String)+        | Character (Char, String)+        | StringTok (String, String)+        | IntTokHash (Integer, String)        -- 1#+        | WordTokHash (Integer, String)       -- 1##+        | FloatTokHash (Rational, String)     -- 1.0#+        | DoubleTokHash (Rational, String)    -- 1.0##+        | CharacterHash (Char, String)        -- c#+        | StringHash (String, String)         -- "Hello world!"#++-- Symbols++        | LeftParen+        | RightParen+        | LeftHashParen+        | RightHashParen+        | SemiColon+        | LeftCurly+        | RightCurly+        | VRightCurly           -- a virtual close brace+        | LeftSquare+        | RightSquare+        | ParArrayLeftSquare -- [:+        | ParArrayRightSquare -- :]+        | Comma+        | Underscore+        | BackQuote++-- Reserved operators++        | Dot           -- reserved for use with 'forall x . x'+        | DotDot+        | Colon+        | QuoteColon+        | DoubleColon+        | Equals+        | Backslash+        | Bar+        | LeftArrow+        | RightArrow+        | At+        | TApp -- '@' but have to check for preceeding whitespace+        | Tilde+        | DoubleArrow+        | Minus+        | Exclamation+        | Star+        | LeftArrowTail         -- -<+        | RightArrowTail        -- >-+        | LeftDblArrowTail      -- -<<+        | RightDblArrowTail     -- >>-+        | OpenArrowBracket      -- (|+        | CloseArrowBracket     -- |)++-- Template Haskell+        | THExpQuote            -- [| or [e|+        | THTExpQuote           -- [|| or [e||+        | THPatQuote            -- [p|+        | THDecQuote            -- [d|+        | THTypQuote            -- [t|+        | THCloseQuote          -- |]+        | THTCloseQuote         -- ||]+        | THIdEscape (String)   -- dollar x+        | THParenEscape         -- dollar (+        | THTIdEscape String    -- dollar dollar x+        | THTParenEscape        -- double dollar (+        | THVarQuote            -- 'x (but without the x)+        | THTyQuote             -- ''T (but without the T)+        | THQuasiQuote (String,String)  -- [$...|...]++-- HaRP+        | RPGuardOpen       -- (|+        | RPGuardClose      -- |)+        | RPCAt             -- @:++-- Hsx+        | XCodeTagOpen      -- <%+        | XCodeTagClose     -- %>+        | XStdTagOpen       -- <+        | XStdTagClose      -- >+        | XCloseTagOpen     -- </+        | XEmptyTagClose    -- />+        | XChildTagOpen     -- <%> (note that close doesn't exist, it's XCloseTagOpen followed by XCodeTagClose)+        | XPCDATA String+        | XRPatOpen             -- <[+        | XRPatClose            -- ]>++-- Pragmas++        | PragmaEnd                     -- #-}+        | RULES+        | INLINE Bool+        | INLINE_CONLIKE+        | SPECIALISE+        | SPECIALISE_INLINE Bool+        | SOURCE+        | DEPRECATED+        | WARNING+        | SCC+        | GENERATED+        | CORE+        | UNPACK+        | NOUNPACK+        | OPTIONS (Maybe String,String)+--        | CFILES  String+--        | INCLUDE String+        | LANGUAGE+        | ANN+        | MINIMAL+        | NO_OVERLAP+        | OVERLAP+        | OVERLAPPING+        | OVERLAPPABLE+        | OVERLAPS+        | INCOHERENT+        | COMPLETE++-- Reserved Ids++        | KW_As+        | KW_By         -- transform list comprehensions+        | KW_Case+        | KW_Class+        | KW_Data+        | KW_Default+        | KW_Deriving+        | KW_Do+        | KW_MDo+        | KW_Else+        | KW_Family     -- indexed type families+        | KW_Forall     -- universal/existential types+        | KW_Group      -- transform list comprehensions+        | KW_Hiding+        | KW_If+        | KW_Import+        | KW_In+        | KW_Infix+        | KW_InfixL+        | KW_InfixR+        | KW_Instance+        | KW_Let+        | KW_Module+        | KW_NewType+        | KW_Of+        | KW_Proc       -- arrows+        | KW_Rec        -- arrows+        | KW_Role+        | KW_Then+        | KW_Type+        | KW_Using      -- transform list comprehensions+        | KW_Where+        | KW_Qualified+        | KW_Pattern+        | KW_Stock+        | KW_Anyclass+        | KW_Via++                -- FFI+        | KW_Foreign+        | KW_Export+        | KW_Safe+        | KW_Unsafe+        | KW_Threadsafe+        | KW_Interruptible+        | KW_StdCall+        | KW_CCall+        | KW_CPlusPlus+        | KW_DotNet+        | KW_Jvm+        | KW_Js+        | KW_JavaScript+        | KW_CApi++        | EOF+        deriving (Eq,Show)++reserved_ops :: [(String,(Token, Maybe ExtScheme))]+reserved_ops = [+ ( "..", (DotDot,       Nothing) ),+ ( ":",  (Colon,        Nothing) ),+ ( "::", (DoubleColon,  Nothing) ),+ ( "=",  (Equals,       Nothing) ),+ ( "\\", (Backslash,    Nothing) ),+ ( "|",  (Bar,          Nothing) ),+ ( "<-", (LeftArrow,    Nothing) ),+ ( "->", (RightArrow,   Nothing) ),+ ( "@",  (At,           Nothing) ),+ ( "@:", (RPCAt,        Just (Any [RegularPatterns])) ),+ ( "~",  (Tilde,        Nothing) ),+ ( "=>", (DoubleArrow,  Nothing) ),+ ( "*",  (Star,         Just (Any [KindSignatures])) ),+ -- Parallel arrays+ ( "[:", (ParArrayLeftSquare,   Just (Any [ParallelArrays])) ),+ ( ":]", (ParArrayRightSquare,  Just (Any [ParallelArrays])) ),+ -- Arrows notation+ ( "-<",  (LeftArrowTail,       Just (Any [Arrows])) ),+ ( ">-",  (RightArrowTail,      Just (Any [Arrows])) ),+ ( "-<<", (LeftDblArrowTail,    Just (Any [Arrows])) ),+ ( ">>-", (RightDblArrowTail,   Just (Any [Arrows])) ),+ -- Unicode notation+ ( "\x2190",    (LeftArrow,     Just (Any  [UnicodeSyntax])) ),+ ( "\x2192",    (RightArrow,    Just (Any  [UnicodeSyntax])) ),+ ( "\x21d2",    (DoubleArrow,   Just (Any  [UnicodeSyntax])) ),+ ( "\x2237",    (DoubleColon,   Just (Any  [UnicodeSyntax])) ),+ ( "\x2919",    (LeftArrowTail,     Just (All [UnicodeSyntax, Arrows])) ),+ ( "\x291a",    (RightArrowTail,    Just (All [UnicodeSyntax, Arrows])) ),+ ( "\x291b",    (LeftDblArrowTail,  Just (All [UnicodeSyntax, Arrows])) ),+ ( "\x291c",    (RightDblArrowTail, Just (All [UnicodeSyntax, Arrows])) ),+ ( "\x2605",    (Star,              Just (All [UnicodeSyntax, KindSignatures])) ),+ ( "\x2200",    (KW_Forall,         Just (All [UnicodeSyntax, ExplicitForAll])) )+ ]++special_varops :: [(String,(Token, Maybe ExtScheme))]+special_varops = [+ -- the dot is only a special symbol together with forall, but can still be used as function composition+ ( ".",  (Dot,          Just (Any [ExplicitForAll, ExistentialQuantification])) ),+ ( "-",  (Minus,        Nothing) ),+ ( "!",  (Exclamation,  Nothing) )+ ]++reserved_ids :: [(String,(Token, Maybe ExtScheme))]+reserved_ids = [+ ( "_",         (Underscore,    Nothing) ),+ ( "by",        (KW_By,         Just (Any [TransformListComp])) ),+ ( "case",      (KW_Case,       Nothing) ),+ ( "class",     (KW_Class,      Nothing) ),+ ( "data",      (KW_Data,       Nothing) ),+ ( "default",   (KW_Default,    Nothing) ),+ ( "deriving",  (KW_Deriving,   Nothing) ),+ ( "do",        (KW_Do,         Nothing) ),+ ( "else",      (KW_Else,       Nothing) ),+ ( "family",    (KW_Family,     Just (Any [TypeFamilies])) ),        -- indexed type families+ ( "forall",    (KW_Forall,     Just (Any [ExplicitForAll, ExistentialQuantification])) ),    -- universal/existential quantification+ ( "group",     (KW_Group,      Just (Any [TransformListComp])) ),+ ( "if",        (KW_If,         Nothing) ),+ ( "import",    (KW_Import,     Nothing) ),+ ( "in",        (KW_In,         Nothing) ),+ ( "infix",     (KW_Infix,      Nothing) ),+ ( "infixl",    (KW_InfixL,     Nothing) ),+ ( "infixr",    (KW_InfixR,     Nothing) ),+ ( "instance",  (KW_Instance,   Nothing) ),+ ( "let",       (KW_Let,        Nothing) ),+ ( "mdo",       (KW_MDo,        Just (Any [RecursiveDo])) ),+ ( "module",    (KW_Module,     Nothing) ),+ ( "newtype",   (KW_NewType,    Nothing) ),+ ( "of",        (KW_Of,         Nothing) ),+ ( "proc",      (KW_Proc,       Just (Any [Arrows])) ),+ ( "rec",       (KW_Rec,        Just (Any [Arrows, RecursiveDo, DoRec])) ),+ ( "then",      (KW_Then,       Nothing) ),+ ( "type",      (KW_Type,       Nothing) ),+ ( "using",     (KW_Using,      Just (Any [TransformListComp])) ),+ ( "where",     (KW_Where,      Nothing) ),+ ( "role",      (KW_Role,       Just (Any [RoleAnnotations]))),+ ( "pattern",   (KW_Pattern,    Just (Any [PatternSynonyms]))),+ ( "stock",     (KW_Stock,      Just (Any [DerivingStrategies]))),+ ( "anyclass",  (KW_Anyclass,   Just (Any [DerivingStrategies]))),+ ( "via",       (KW_Via,        Just (Any [DerivingVia]))),++-- FFI+ ( "foreign",   (KW_Foreign,    Just (Any [ForeignFunctionInterface])) )+ ]+++special_varids :: [(String,(Token, Maybe ExtScheme))]+special_varids = [+ ( "as",        (KW_As,         Nothing) ),+ ( "qualified", (KW_Qualified,  Nothing) ),+ ( "hiding",    (KW_Hiding,     Nothing) ),++-- FFI+ ( "export",        (KW_Export,        Just (Any [ForeignFunctionInterface])) ),+ ( "safe",          (KW_Safe,          Just (Any [ForeignFunctionInterface, SafeImports, Safe, Trustworthy])) ),+ ( "unsafe",        (KW_Unsafe,        Just (Any [ForeignFunctionInterface])) ),+ ( "threadsafe",    (KW_Threadsafe,    Just (Any [ForeignFunctionInterface])) ),+ ( "interruptible", (KW_Interruptible, Just (Any [InterruptibleFFI])) ),+ ( "stdcall",       (KW_StdCall,       Just (Any [ForeignFunctionInterface])) ),+ ( "ccall",         (KW_CCall,         Just (Any [ForeignFunctionInterface])) ),+ ( "cplusplus",     (KW_CPlusPlus,     Just (Any [ForeignFunctionInterface])) ),+ ( "dotnet",        (KW_DotNet,        Just (Any [ForeignFunctionInterface])) ),+ ( "jvm",           (KW_Jvm,           Just (Any [ForeignFunctionInterface])) ),+ ( "js",            (KW_Js,            Just (Any [ForeignFunctionInterface])) ),+ ( "javascript",    (KW_JavaScript,    Just (Any [ForeignFunctionInterface])) ),+ ( "capi",          (KW_CApi,          Just (Any [CApiFFI])) )+ ]++pragmas :: [(String,Token)]+pragmas = [+ ( "rules",             RULES           ),+ ( "inline",            INLINE True     ),+ ( "noinline",          INLINE False    ),+ ( "notinline",         INLINE False    ),+ ( "specialise",        SPECIALISE      ),+ ( "specialize",        SPECIALISE      ),+ ( "source",            SOURCE          ),+ ( "deprecated",        DEPRECATED      ),+ ( "warning",           WARNING         ),+ ( "ann",               ANN             ),+ ( "scc",               SCC             ),+ ( "generated",         GENERATED       ),+ ( "core",              CORE            ),+ ( "unpack",            UNPACK          ),+ ( "nounpack",          NOUNPACK        ),+ ( "language",          LANGUAGE        ),+ ( "minimal",           MINIMAL         ),+ ( "no_overlap",        NO_OVERLAP      ),+ ( "overlap",           OVERLAP         ),+ ( "overlaps",          OVERLAPS        ),+ ( "overlapping",       OVERLAPPING     ),+ ( "overlappable",      OVERLAPPABLE    ),+ ( "incoherent",        INCOHERENT      ),+ ( "complete",          COMPLETE      ),+ ( "options",           OPTIONS undefined ) -- we'll tweak it before use - promise!+-- ( "cfiles",            CFILES  undefined ), -- same here...+-- ( "include",           INCLUDE undefined )  -- ...and here!+ ]++isIdent, isHSymbol, isPragmaChar :: Char -> Bool+isIdent   c = isAlphaNum c || c == '\'' || c == '_'++isHSymbol c = c `elem` ":!#%&*./?@\\-" || ((isSymbol c || isPunctuation c) && not (c `elem` "(),;[]`{}_\"'"))++isPragmaChar c = isAlphaNum c || c == '_'++isIdentStart :: Char -> Bool+isIdentStart c = isAlpha c && not (isUpper c) || c == '_'+++-- Used in the lexing of type applications+-- Why is it like this? I don't know exactly but this is how it is in+-- GHC's parser.+-- Symbol `:` is added so that `@:` is lexed as `VarSym "@:"`. See Issue #326+isOpSymbol :: Char -> Bool+isOpSymbol c = c `elem` ":!#$%&*+./<=>?@\\^|-~"++-- | Checks whether the character would be legal in some position of a qvar.+--   Means that '..' and "AAA" will pass the test.+isPossiblyQvar :: Char -> Bool+isPossiblyQvar c = isIdent (toLower c) || c == '.'++matchChar :: Char -> String -> Lex a ()+matchChar c msg = do+    s <- getInput+    if null s || head s /= c then fail msg else discard 1++-- The top-level lexer.+-- We need to know whether we are at the beginning of the line to decide+-- whether to insert layout tokens.++lexer :: (Loc Token -> P a) -> P a+lexer = runL topLexer++topLexer :: Lex a (Loc Token)+topLexer = do+    b <- pullCtxtFlag+    if b then -- trace (show cf ++ ": " ++ show VRightCurly) $+              -- the lex context state flags that we must do an empty {} - UGLY+              setBOL >> getSrcLocL >>= \l -> return (Loc (mkSrcSpan l l) VRightCurly)+     else do+        bol <- checkBOL+        (bol', ws) <- lexWhiteSpace bol+        -- take care of whitespace in PCDATA+        ec <- getExtContext+        case ec of+         -- if there was no linebreak, and we are lexing PCDATA,+         -- then we want to care about the whitespace.+         -- We don't bother to test for XmlSyntax, since we+         -- couldn't end up in ChildCtxt otherwise.+         Just ChildCtxt | not bol' && ws -> getSrcLocL >>= \l -> return $ Loc (mkSrcSpan l l) $ XPCDATA " "+         _ -> do startToken+                 sl <- getSrcLocL+                 t <- if bol' then lexBOL    -- >>= \t -> trace ("BOL: " ++ show t) (return t)+                              else lexToken  -- >>= \t -> trace (show t) (return t)+                 el <- getSrcLocL+                 return $ Loc (mkSrcSpan sl el) t++lexWhiteSpace :: Bool -> Lex a (Bool, Bool)+lexWhiteSpace bol = do+    s <- getInput+    ignL <- ignoreLinePragmasL+    case s of+        -- If we find a recognised pragma, we don't want to treat it as a comment.+        '{':'-':'#':rest | isRecognisedPragma rest -> return (bol, False)+                         | isLinePragma rest && not ignL -> do+                            (l, fn) <- lexLinePragma+                            setSrcLineL l+                            setLineFilenameL fn+                            lexWhiteSpace True+        '{':'-':_ -> do+            loc <- getSrcLocL+            discard 2+            (bol1, c) <- lexNestedComment bol ""+            loc2 <- getSrcLocL+            pushComment $ Comment True (mkSrcSpan loc loc2) (reverse c)+            (bol2, _) <- lexWhiteSpace bol1+            return (bol2, True)+        '-':'-':s1 | all (== '-') (takeWhile isHSymbol s1) -> do+            loc    <- getSrcLocL+            discard 2+            dashes <- lexWhile (== '-')+            rest   <- lexWhile (/= '\n')+            s' <- getInput+            loc2 <- getSrcLocL+            let com = Comment False (mkSrcSpan loc loc2) $ dashes ++ rest+            case s' of+                [] -> pushComment com >> return (False, True)+                _ -> do+                    pushComment com+                    lexNewline+                    lexWhiteSpace_ True+                    return (True, True)+        '\n':_ -> do+            lexNewline+            lexWhiteSpace_ True+            return (True, True)+        '\t':_ -> do+            lexTab+            (bol', _) <- lexWhiteSpace bol+            return (bol', True)+        c:_ | isSpace c -> do+            discard 1+            (bol', _) <- lexWhiteSpace bol+            return (bol', True)+        _ -> return (bol, False)++-- | lexWhiteSpace without the return value.+lexWhiteSpace_ :: Bool -> Lex a ()+lexWhiteSpace_ bol =  do _ <- lexWhiteSpace bol+                         return ()++isRecognisedPragma, isLinePragma :: String -> Bool+isRecognisedPragma str = let pragma = takeWhile isPragmaChar . dropWhile isSpace $ str+                          in case lookupKnownPragma pragma of+                              Nothing -> False+                              _       -> True++isLinePragma str = let pragma = map toLower . takeWhile isAlphaNum . dropWhile isSpace $ str+                    in case pragma of+                        "line"  -> True+                        _       -> False++lexLinePragma :: Lex a (Int, String)+lexLinePragma = do+    discard 3   -- {-#+    lexWhile_ isSpace+    discard 4   -- LINE+    lexWhile_ isSpace+    i <- lexWhile isDigit+    when (null i) $ fail "Improperly formatted LINE pragma"+    lexWhile_ isSpace+    matchChar '"' "Improperly formatted LINE pragma"+    fn <- lexWhile (/= '"')+    matchChar '"' "Impossible - lexLinePragma"+    lexWhile_ isSpace+    mapM_ (flip matchChar "Improperly formatted LINE pragma") "#-}"+    lexNewline+    return (read i, fn)++lexNestedComment :: Bool -> String -> Lex a (Bool, String)+lexNestedComment bol str = do+    s <- getInput+    case s of+        '-':'}':_ -> discard 2 >> return (bol, str)+        '{':'-':_ -> do+            discard 2+            (bol', c) <- lexNestedComment bol ("-{" ++ str) -- rest of the subcomment+            lexNestedComment bol' ("}-" ++ c  ) -- rest of this comment+        '\t':_    -> lexTab >> lexNestedComment bol ('\t':str)+        '\n':_    -> lexNewline >> lexNestedComment True ('\n':str)+        c:_       -> discard 1 >> lexNestedComment bol (c:str)+        []        -> fail "Unterminated nested comment"++-- When we are lexing the first token of a line, check whether we need to+-- insert virtual semicolons or close braces due to layout.++lexBOL :: Lex a Token+lexBOL = do+    pos <- getOffside+    -- trace ("Off: " ++ (show pos)) $ do+    case pos of+        LT -> do+                -- trace "layout: inserting '}'\n" $+            -- Set col to 0, indicating that we're still at the+            -- beginning of the line, in case we need a semi-colon too.+            -- Also pop the context here, so that we don't insert+            -- another close brace before the parser can pop it.+            setBOL+            popContextL "lexBOL"+            return VRightCurly+        EQ ->+            -- trace "layout: inserting ';'\n" $+            return SemiColon+        GT -> lexToken++lexToken :: Lex a Token+lexToken = do+    ec <- getExtContext+    -- we don't bother to check XmlSyntax since we couldn't+    -- have ended up in a non-Nothing context if it wasn't+    -- enabled.+    case ec of+     Just HarpCtxt     -> lexHarpToken+     Just TagCtxt      -> lexTagCtxt+     Just CloseTagCtxt -> lexCloseTagCtxt+     Just ChildCtxt    -> lexChildCtxt+     Just CodeTagCtxt  -> lexCodeTagCtxt+     _         -> lexStdToken+++lexChildCtxt :: Lex a Token+lexChildCtxt = do+    -- if we ever end up here, then XmlSyntax must be on.+    s <- getInput+    case s of+        '<':'%':'>':_ -> do discard 3+                            pushExtContextL ChildCtxt+                            return XChildTagOpen+        '<':'%':_ -> do discard 2+                        pushExtContextL CodeTagCtxt+                        return XCodeTagOpen+        '<':'/':_ -> do discard 2+                        popExtContextL "lexChildCtxt"+                        pushExtContextL CloseTagCtxt+                        return XCloseTagOpen+        '<':'[':_ -> do discard 2+                        pushExtContextL HarpCtxt+                        return XRPatOpen+        '<':_     -> do discard 1+                        pushExtContextL TagCtxt+                        return XStdTagOpen+        _     -> lexPCDATA+++lexPCDATA :: Lex a Token+lexPCDATA = do+    -- if we ever end up here, then XmlSyntax must be on.+    s <- getInput+    case s of+        [] -> return EOF+        _  -> case s of+            '\n':_ -> do+                x <- lexNewline >> lexPCDATA+                case x of+                 XPCDATA p -> return $ XPCDATA $ '\n':p+                 EOF -> return EOF+                 _ -> fail $ "lexPCDATA: unexpected token: " ++ show x+            '<':_ -> return $ XPCDATA ""+            _ -> do let pcd = takeWhile (\c -> c `notElem` "<\n") s+                        l = length pcd+                    discard l+                    x <- lexPCDATA+                    case x of+                     XPCDATA pcd' -> return $ XPCDATA $ pcd ++ pcd'+                     EOF -> return EOF+                     _ -> fail $ "lexPCDATA: unexpected token: " ++ show x+++lexCodeTagCtxt :: Lex a Token+lexCodeTagCtxt = do+    -- if we ever end up here, then XmlSyntax must be on.+    s <- getInput+    case s of+        '%':'>':_ -> do discard 2+                        popExtContextL "lexCodeTagContext"+                        return XCodeTagClose+        _     -> lexStdToken++lexCloseTagCtxt :: Lex a Token+lexCloseTagCtxt = do+    -- if we ever end up here, then XmlSyntax must be on.+    s <- getInput+    case s of+        '%':'>':_ -> do discard 2+                        popExtContextL "lexCloseTagCtxt"+                        return XCodeTagClose+        '>':_     -> do discard 1+                        popExtContextL "lexCloseTagCtxt"+                        return XStdTagClose+        _     -> lexStdToken++lexTagCtxt :: Lex a Token+lexTagCtxt = do+    -- if we ever end up here, then XmlSyntax must be on.+    s <- getInput+    case s of+        '/':'>':_ -> do discard 2+                        popExtContextL "lexTagCtxt: Empty tag"+                        return XEmptyTagClose+        '>':_     -> do discard 1+                        popExtContextL "lexTagCtxt: Standard tag"+                        pushExtContextL ChildCtxt+                        return XStdTagClose+        _     -> lexStdToken++lexHarpToken :: Lex a Token+lexHarpToken = do+    -- if we ever end up here, then RegularPatterns must be on.+    s <- getInput+    case s of+        ']':'>':_ -> do discard 2+                        popExtContextL "lexHarpToken"+                        return XRPatClose+        _     -> lexStdToken++lexStdToken :: Lex a Token+lexStdToken = do+    s <- getInput+    exts <- getExtensionsL+    let intHash = lexHash IntTok IntTokHash (Right WordTokHash)+    case s of+        [] -> return EOF++        '0':c:d:_ | toLower c == 'o' && isOctDigit d -> do+                        discard 2+                        (n, str) <- lexOctal+                        con <- intHash+                        return (con (n, '0':c:str))+                  | toLower c == 'b' && isBinDigit d && BinaryLiterals `elem` exts -> do+                        discard 2+                        (n, str) <- lexBinary+                        con <- intHash+                        return (con (n, '0':c:str))+                  | toLower c == 'x' && isHexDigit d -> do+                        discard 2+                        (n, str) <- lexHexadecimal+                        con <- intHash+                        return (con (n, '0':c:str))++        -- implicit parameters+        '?':c:_ | isIdentStart c && ImplicitParams `elem` exts -> do+                        discard 1+                        id <- lexWhile isIdent+                        return $ IDupVarId id++        '%':c:_ | isIdentStart c && ImplicitParams `elem` exts -> do+                        discard 1+                        id <- lexWhile isIdent+                        return $ ILinVarId id+        -- end implicit parameters++        -- harp+        '(':'|':c:_ | RegularPatterns `elem` exts && not (isHSymbol c) ->+                        discard 2 >> return RPGuardOpen+                    | Arrows `elem` exts && not (isHSymbol c) ->+                        discard 2 >> return OpenArrowBracket+        '|':')':_ | RegularPatterns `elem` exts -> discard 2 >> return RPGuardClose+                  | Arrows `elem` exts -> discard 2 >> return CloseArrowBracket+        {- This is handled by the reserved_ops above.+        '@':':':_ | RegularPatterns `elem` exts ->+                     do discard 2+                        return RPCAt -}+++        -- template haskell+        '[':'|':'|':_ | TemplateHaskell `elem` exts -> do+                discard 3+                return THTExpQuote++        '[':'e':'|':'|':_ | TemplateHaskell `elem` exts -> do+                discard 4+                return THTExpQuote++        '[':'|':_ | TemplateHaskell `elem` exts -> do+                discard 2+                return THExpQuote++        '[':c:'|':_ | c == 'e' && TemplateHaskell `elem` exts -> do+                        discard 3+                        return THExpQuote+                    | c == 'p' && TemplateHaskell `elem` exts -> do+                        discard 3+                        return THPatQuote+                    | c == 'd' && TemplateHaskell `elem` exts -> do+                        discard 3+                        return THDecQuote+                    | c == 't' && TemplateHaskell `elem` exts -> do+                        discard 3+                        return THTypQuote+        '[':'$':c:_ | isIdentStart c && QuasiQuotes `elem` exts ->+                        discard 2 >> lexQuasiQuote c++        '[':c:s' | isIdentStart c && QuasiQuotes `elem` exts && case dropWhile isIdent s' of { '|':_ -> True;_->False} ->+                        discard 1 >> lexQuasiQuote c+                 | isUpper c && QuasiQuotes `elem` exts && case dropWhile isPossiblyQvar s' of { '|':_ -> True;_->False} ->+                        discard 1 >> lexQuasiQuote c++        '|':'|':']':_ | TemplateHaskell `elem` exts -> do+                        discard 3+                        return THTCloseQuote+        '|':']':_ | TemplateHaskell `elem` exts -> do+                        discard 2+                        return THCloseQuote++        '$':c1:c2:_ | isIdentStart c1 && TemplateHaskell `elem` exts -> do+                        discard 1+                        id <- lexWhile isIdent+                        return $ THIdEscape id+                    | c1 == '(' && TemplateHaskell `elem` exts -> do+                        discard 2+                        return THParenEscape+                    | c1 == '$' && isIdentStart c2 && TemplateHaskell `elem` exts -> do+                        discard 2+                        id <- lexWhile isIdent+                        return $ THTIdEscape id+                    | c1 == '$' && c2 == '(' && TemplateHaskell `elem` exts -> do+                        discard 3+                        return THTParenEscape+        -- end template haskell++        -- hsx+        '<':'%':c:_ | XmlSyntax `elem` exts ->+                        case c of+                         '>' -> do discard 3+                                   pushExtContextL ChildCtxt+                                   return XChildTagOpen+                         _   -> do discard 2+                                   pushExtContextL CodeTagCtxt+                                   return XCodeTagOpen+        '<':c:_ | isAlpha c && XmlSyntax `elem` exts -> do+                        discard 1+                        pushExtContextL TagCtxt+                        return XStdTagOpen+        -- end hsx++        '(':'#':c:_ | unboxed exts && not (isHSymbol c) -> discard 2 >> return LeftHashParen++        '#':')':_   | unboxed exts -> discard 2 >> return RightHashParen++        -- pragmas++        '{':'-':'#':_ -> saveExtensionsL >> discard 3 >> lexPragmaStart++        '#':'-':'}':_ -> restoreExtensionsL >> discard 3 >> return PragmaEnd++        -- Parallel arrays++        '[':':':_ | ParallelArrays `elem` exts -> discard 2 >> return ParArrayLeftSquare++        ':':']':_ | ParallelArrays `elem` exts -> discard 2 >> return ParArrayRightSquare++        -- Lexed seperately to deal with visible type applciation++        '@':c:_ | TypeApplications `elem` exts+                   -- Operator starting with an '@'+                   && not (isOpSymbol c) -> do+                                                lc <- getLastChar+                                                if isIdent lc+                                                  then discard 1 >> return At+                                                  else discard 1 >> return TApp++        '#':c:_ | OverloadedLabels `elem` exts+                   && isIdentStart c -> do+                                                  discard 1+                                                  [ident] <- lexIdents+                                                  return $ LabelVarId ident+++        c:_ | isDigit c -> lexDecimalOrFloat++            | isUpper c -> lexConIdOrQual ""++            | isIdentStart c -> do+                    idents <- lexIdents+                    case idents of+                     [ident] -> case lookup ident (reserved_ids ++ special_varids) of+                                 Just (keyword, scheme) ->+                                    -- check if an extension keyword is enabled+                                    if isEnabled scheme exts+                                     then flagKW keyword >> return keyword+                                     else return $ VarId ident+                                 Nothing -> return $ VarId ident+                     _ -> return $ DVarId idents++            | isHSymbol c -> do+                    sym <- lexWhile isHSymbol+                    return $ case lookup sym (reserved_ops ++ special_varops) of+                              Just (t , scheme) ->+                                -- check if an extension op is enabled+                                if isEnabled scheme exts+                                 then t+                                 else case c of+                                        ':' -> ConSym sym+                                        _   -> VarSym sym+                              Nothing -> case c of+                                          ':' -> ConSym sym+                                          _   -> VarSym sym++            | otherwise -> do+                    discard 1+                    case c of++                        -- First the special symbols+                        '(' ->  return LeftParen+                        ')' ->  return RightParen+                        ',' ->  return Comma+                        ';' ->  return SemiColon+                        '[' ->  return LeftSquare+                        ']' ->  return RightSquare+                        '`' ->  return BackQuote+                        '{' -> do+                            pushContextL NoLayout+                            return LeftCurly+                        '}' -> do+                            popContextL "lexStdToken"+                            return RightCurly++                        '\'' -> lexCharacter+                        '"' ->  lexString++                        _ ->    fail ("Illegal character \'" ++ show c ++ "\'\n")++      where lexIdents :: Lex a [String]+            lexIdents = do+                ident <- lexWhile isIdent+                s <- getInput+                exts <- getExtensionsL+                case s of+                 -- This is the only way we can get more than one ident in the list+                 -- and it requires XmlSyntax to be on.+                 '-':c:_ | XmlSyntax `elem` exts && isAlpha c -> do+                        discard 1+                        idents <- lexIdents+                        return $ ident : idents+                 '#':_ | MagicHash `elem` exts -> do+                        hashes <- lexWhile (== '#')+                        return [ident ++ hashes]+                 _ -> return [ident]++            lexQuasiQuote :: Char -> Lex a Token+            lexQuasiQuote c = do+                -- We've seen and dropped [$ already+                ident <- lexQuoter+                matchChar '|' "Malformed quasi-quote quoter"+                body <- lexQQBody+                return $ THQuasiQuote (ident, body)+                  where lexQuoter+                         | isIdentStart c = lexWhile isIdent+                         | otherwise = do+                            qualThing <- lexConIdOrQual ""+                            case qualThing of+                                QVarId (s1,s2) -> return $ s1 ++ '.':s2+                                QVarSym (s1, s2) -> return $ s1 ++ '.':s2+                                _                -> fail "Malformed quasi-quote quoter"++            lexQQBody :: Lex a String+            lexQQBody = do+                s <- getInput+                case s of+                  '\\':']':_ -> do discard 2+                                   str <- lexQQBody+                                   return (']':str)+                  '\\':'|':_ -> do discard 2+                                   str <- lexQQBody+                                   return ('|':str)+                  '|':']':_  -> discard 2 >> return ""+                  '|':_ -> do discard 1+                              str <- lexQQBody+                              return ('|':str)+                  ']':_ -> do discard 1+                              str <- lexQQBody+                              return (']':str)+                  '\\':_ -> do discard 1+                               str <- lexQQBody+                               return ('\\':str)+                  '\n':_ -> do lexNewline+                               str <- lexQQBody+                               return ('\n':str)+                  []     -> fail "Unexpected end of input while lexing quasi-quoter"+                  _ -> do str <- lexWhile (not . (`elem` "\\|\n"))+                          rest <- lexQQBody+                          return (str++rest)++unboxed :: [KnownExtension] -> Bool+unboxed exts = UnboxedSums `elem` exts || UnboxedTuples `elem` exts++-- Underscores are used in some pragmas. Options pragmas are a special case+-- with our representation: the thing after the underscore is a parameter.+-- Strip off the parameters to option pragmas by hand here, everything else+-- sits in the pragmas map.+lookupKnownPragma :: String -> Maybe Token+lookupKnownPragma s =+    case map toLower s of+      x | "options_" `isPrefixOf` x -> Just $ OPTIONS (Just $ drop 8 s, undefined)+        | "options" == x            -> Just $ OPTIONS (Nothing, undefined)+        | otherwise                 -> lookup x pragmas++lexPragmaStart :: Lex a Token+lexPragmaStart = do+    lexWhile_ isSpace+    pr <- lexWhile isPragmaChar+    case lookupKnownPragma pr of+     Just (INLINE True) -> do+            s <- getInput+            case map toLower s of+             ' ':'c':'o':'n':'l':'i':'k':'e':_  -> do+                      discard 8+                      return INLINE_CONLIKE+             _ -> return $ INLINE True+     Just SPECIALISE -> do+            s <- getInput+            case dropWhile isSpace $ map toLower s of+             'i':'n':'l':'i':'n':'e':_ -> do+                      lexWhile_ isSpace+                      discard 6+                      return $ SPECIALISE_INLINE True+             'n':'o':'i':'n':'l':'i':'n':'e':_ -> do+                        lexWhile_ isSpace+                        discard 8+                        return $ SPECIALISE_INLINE False+             'n':'o':'t':'i':'n':'l':'i':'n':'e':_ -> do+                        lexWhile_ isSpace+                        discard 9+                        return $ SPECIALISE_INLINE False+             _ -> return SPECIALISE++     Just (OPTIONS opt) ->     -- see, I promised we'd mask out the 'undefined'+            -- We do not want to store necessary whitespace in the datatype+            -- but if the pragma starts with a newline then we must keep+            -- it to differentiate the two cases.+            let dropIfSpace (' ':xs) = xs+                dropIfSpace xs       = xs+             in+              case fst opt of+                Just opt' -> do+                  rest <- lexRawPragma+                  return $ OPTIONS (Just opt', dropIfSpace rest)+                Nothing -> do+                  s <- getInput+                  case s of+                    x:_ | isSpace x -> do+                      rest <- lexRawPragma+                      return $ OPTIONS (Nothing, dropIfSpace rest)+                    _  -> fail "Malformed Options pragma"+     Just RULES -> do -- Rules enable ScopedTypeVariables locally.+            addExtensionL ScopedTypeVariables+            return RULES+{-     Just (CFILES _) -> do+            rest <- lexRawPragma+            return $ CFILES rest+     Just (INCLUDE _) -> do+            rest <- lexRawPragma+            return $ INCLUDE rest -}+     Just p ->  return p++     _      -> fail "Internal error: Unrecognised recognised pragma"+                  -- do rawStr <- lexRawPragma+                  -- return $ PragmaUnknown (pr, rawStr) -- no support for unrecognized pragmas, treat as comment+                  -- discard 3 -- #-}+                  -- topLexer -- we just discard it as a comment for now and restart -}++lexRawPragma :: Lex a String+lexRawPragma = lexRawPragmaAux+ where lexRawPragmaAux = do+        rpr <- lexWhile (/='#')+        s <- getInput+        case s of+         '#':'-':'}':_  -> return rpr+         "" -> fail "End-of-file inside pragma"+         _ -> do+            discard 1+            rpr' <- lexRawPragma+            return $ rpr ++ '#':rpr'++lexDecimalOrFloat :: Lex a Token+lexDecimalOrFloat = do+    ds <- lexWhile isDigit+    rest <- getInput+    exts <- getExtensionsL+    case rest of+        ('.':d:_) | isDigit d -> do+                discard 1+                frac <- lexWhile isDigit+                let num = parseInteger 10 (ds ++ frac)+                    decimals = toInteger (length frac)+                (exponent, estr) <- do+                    rest2 <- getInput+                    case rest2 of+                        'e':_ -> lexExponent+                        'E':_ -> lexExponent+                        _     -> return (0,"")+                con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)+                return $ con ((num%1) * 10^^(exponent - decimals), ds ++ '.':frac ++ estr)+        e:_ | toLower e == 'e' -> do+                (exponent, estr) <- lexExponent+                con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)+                return $ con ((parseInteger 10 ds%1) * 10^^exponent, ds ++ estr)+        '#':'#':_ | MagicHash `elem` exts -> discard 2 >> return (WordTokHash (parseInteger 10 ds, ds))+        '#':_     | MagicHash `elem` exts -> discard 1 >> return (IntTokHash  (parseInteger 10 ds, ds))+        _         ->              return (IntTok      (parseInteger 10 ds, ds))++    where+    lexExponent :: Lex a (Integer, String)+    lexExponent = do+        (e:r) <- getInput+        discard 1   -- 'e' or 'E'+        case r of+         '+':d:_ | isDigit d -> do+            discard 1+            (n, str) <- lexDecimal+            return (n, e:'+':str)+         '-':d:_ | isDigit d -> do+            discard 1+            (n, str) <- lexDecimal+            return (negate n, e:'-':str)+         d:_ | isDigit d -> lexDecimal >>= \(n,str) -> return (n, e:str)+         _ -> fail "Float with missing exponent"++lexHash :: (b -> Token) -> (b -> Token) -> Either String (b -> Token) -> Lex a (b -> Token)+lexHash a b c = do+    exts <- getExtensionsL+    if MagicHash `elem` exts+     then do+        r <- getInput+        case r of+         '#':'#':_ -> case c of+                       Right c' -> discard 2 >> return c'+                       Left s  -> fail s+         '#':_     -> discard 1 >> return b+         _         ->              return a+     else return a++lexConIdOrQual :: String -> Lex a Token+lexConIdOrQual qual = do+        con <- lexWhile isIdent+        let conid | null qual = ConId con+                  | otherwise = QConId (qual,con)+            qual' | null qual = con+                  | otherwise = qual ++ '.':con+        just_a_conid <- alternative (return conid)+        rest <- getInput+        exts <- getExtensionsL+        case rest of+          '.':c:_+             | isIdentStart c -> do  -- qualified varid?+                    discard 1+                    ident <- lexWhile isIdent+                    s <- getInput+                    exts' <- getExtensionsL+                    ident' <- case s of+                               '#':_ | MagicHash `elem` exts' -> discard 1 >> return (ident ++ "#")+                               _ -> return ident+                    case lookup ident' reserved_ids of+                       -- cannot qualify a reserved word+                       Just (_,scheme) | isEnabled scheme exts'  -> just_a_conid+                       _ -> return (QVarId (qual', ident'))++             | isUpper c -> do      -- qualified conid?+                    discard 1+                    lexConIdOrQual qual'++             | isHSymbol c -> do    -- qualified symbol?+                    discard 1+                    sym <- lexWhile isHSymbol+                    exts' <- getExtensionsL+                    case lookup sym reserved_ops of+                        -- cannot qualify a reserved operator+                        Just (_,scheme) | isEnabled scheme exts' -> just_a_conid+                        _        -> return $ case c of+                                              ':' -> QConSym (qual', sym)+                                              _   -> QVarSym (qual', sym)++          '#':cs+            | null cs ||+              not (isHSymbol $ head cs) &&+              not (isIdent $ head cs) && MagicHash `elem` exts -> do+                discard 1+                case conid of+                 ConId con' -> return $ ConId $ con' ++ "#"+                 QConId (q,con') -> return $ QConId (q,con' ++ "#")+                 _ -> fail $ "lexConIdOrQual: unexpected token: " ++ show conid+          _ ->  return conid -- not a qualified thing++lexCharacter :: Lex a Token+lexCharacter = do   -- We need to keep track of not only character constants but also TH 'x and ''T+        -- We've seen ' so far+        s <- getInput+        exts <- getExtensionsL+        case s of+         '\'':_ | TemplateHaskell `elem` exts -> discard 1 >> return THTyQuote+         '\\':_ -> do+                    (c,raw) <- lexEscape+                    matchQuote+                    con <- lexHash Character CharacterHash+                            (Left "Double hash not available for character literals")+                    return (con (c, '\\':raw))+         c:'\'':_ -> do+                    discard 2+                    con <- lexHash Character CharacterHash+                            (Left "Double hash not available for character literals")+                    return (con (c, [c]))+         _ | any (`elem` exts) [TemplateHaskell, DataKinds] -> return THVarQuote+         _ -> fail "Improper character constant or misplaced \'"++    where matchQuote = matchChar '\'' "Improperly terminated character constant"+++lexString :: Lex a Token+lexString = loop [] []+    where+    loop !s !raw = do+        r <- getInput+        exts <- getExtensionsL+        case r of+            '\\':'&':_ -> do+                    discard 2+                    loop s ('&':'\\':raw)+            '\\':c:_ | isSpace c -> do+                        discard 1+                        wcs <- lexWhiteChars+                        matchChar '\\' "Illegal character in string gap"+                        loop s ('\\':revAppend wcs ('\\':raw))+                     | otherwise -> do+                        (ce, str) <- lexEscape+                        loop (ce `seq` ce : s) (revAppend str ('\\':raw))+            '"':'#':_ | MagicHash `elem` exts -> do+                        discard 2+                        return (StringHash (reverse s, reverse raw))+            '"':_ -> do+                discard 1+                return (StringTok (reverse s, reverse raw))+            c:_ | c /= '\n' -> do+                discard 1+                loop (c:s) (c:raw)+            _ ->   fail "Improperly terminated string"++    revAppend :: [a] -> [a] -> [a]+    revAppend []     ys = ys+    revAppend (x:xs) ys = revAppend xs (x:ys)++    lexWhiteChars :: Lex a String+    lexWhiteChars = do+        s <- getInput+        case s of+            '\n':_ -> do+                    lexNewline+                    wcs <- lexWhiteChars+                    return $ '\n':wcs+            '\t':_ -> do+                    lexTab+                    wcs <- lexWhiteChars+                    return $ '\t':wcs+            c:_ | isSpace c -> do+                    discard 1+                    wcs <- lexWhiteChars+                    return $ c:wcs+            _ -> return ""++lexEscape :: Lex a (Char, String)+lexEscape = do+    discard 1+    r <- getInput+    case r of++-- Production charesc from section B.2 (Note: \& is handled by caller)++        'a':_           -> discard 1 >> return ('\a', "a")+        'b':_           -> discard 1 >> return ('\b', "b")+        'f':_           -> discard 1 >> return ('\f', "f")+        'n':_           -> discard 1 >> return ('\n', "n")+        'r':_           -> discard 1 >> return ('\r', "r")+        't':_           -> discard 1 >> return ('\t', "t")+        'v':_           -> discard 1 >> return ('\v', "v")+        '\\':_          -> discard 1 >> return ('\\', "\\")+        '"':_           -> discard 1 >> return ('\"', "\"")+        '\'':_          -> discard 1 >> return ('\'', "\'")++-- Production ascii from section B.2++        '^':c:_         -> discard 2 >> cntrl c+        'N':'U':'L':_   -> discard 3 >> return ('\NUL', "NUL")+        'S':'O':'H':_   -> discard 3 >> return ('\SOH', "SOH")+        'S':'T':'X':_   -> discard 3 >> return ('\STX', "STX")+        'E':'T':'X':_   -> discard 3 >> return ('\ETX', "ETX")+        'E':'O':'T':_   -> discard 3 >> return ('\EOT', "EOT")+        'E':'N':'Q':_   -> discard 3 >> return ('\ENQ', "ENQ")+        'A':'C':'K':_   -> discard 3 >> return ('\ACK', "ACK")+        'B':'E':'L':_   -> discard 3 >> return ('\BEL', "BEL")+        'B':'S':_       -> discard 2 >> return ('\BS',  "BS")+        'H':'T':_       -> discard 2 >> return ('\HT',  "HT")+        'L':'F':_       -> discard 2 >> return ('\LF',  "LF")+        'V':'T':_       -> discard 2 >> return ('\VT',  "VT")+        'F':'F':_       -> discard 2 >> return ('\FF',  "FF")+        'C':'R':_       -> discard 2 >> return ('\CR',  "CR")+        'S':'O':_       -> discard 2 >> return ('\SO',  "SO")+        'S':'I':_       -> discard 2 >> return ('\SI',  "SI")+        'D':'L':'E':_   -> discard 3 >> return ('\DLE', "DLE")+        'D':'C':'1':_   -> discard 3 >> return ('\DC1', "DC1")+        'D':'C':'2':_   -> discard 3 >> return ('\DC2', "DC2")+        'D':'C':'3':_   -> discard 3 >> return ('\DC3', "DC3")+        'D':'C':'4':_   -> discard 3 >> return ('\DC4', "DC4")+        'N':'A':'K':_   -> discard 3 >> return ('\NAK', "NAK")+        'S':'Y':'N':_   -> discard 3 >> return ('\SYN', "SYN")+        'E':'T':'B':_   -> discard 3 >> return ('\ETB', "ETB")+        'C':'A':'N':_   -> discard 3 >> return ('\CAN', "CAN")+        'E':'M':_       -> discard 2 >> return ('\EM',  "EM")+        'S':'U':'B':_   -> discard 3 >> return ('\SUB', "SUB")+        'E':'S':'C':_   -> discard 3 >> return ('\ESC', "ESC")+        'F':'S':_       -> discard 2 >> return ('\FS',  "FS")+        'G':'S':_       -> discard 2 >> return ('\GS',  "GS")+        'R':'S':_       -> discard 2 >> return ('\RS',  "RS")+        'U':'S':_       -> discard 2 >> return ('\US',  "US")+        'S':'P':_       -> discard 2 >> return ('\SP',  "SP")+        'D':'E':'L':_   -> discard 3 >> return ('\DEL', "DEL")++-- Escaped numbers++        'o':c:_ | isOctDigit c -> do+                    discard 1+                    (n, raw) <- lexOctal+                    n' <- checkChar n+                    return (n', 'o':raw)+        'x':c:_ | isHexDigit c -> do+                    discard 1+                    (n, raw) <- lexHexadecimal+                    n' <- checkChar n+                    return (n', 'x':raw)+        c:_ | isDigit c -> do+                    (n, raw) <- lexDecimal+                    n' <- checkChar n+                    return (n', raw)++        _       -> fail "Illegal escape sequence"++    where+    checkChar n | n <= 0x10FFFF = return (chr (fromInteger n))+    checkChar _                 = fail "Character constant out of range"++-- Production cntrl from section B.2++    cntrl :: Char -> Lex a (Char, String)+    cntrl c | c >= '@' && c <= '_' = return (chr (ord c - ord '@'), '^':c:[])+    cntrl _                        = fail "Illegal control character"++-- assumes at least one octal digit+lexOctal :: Lex a (Integer, String)+lexOctal = do+    ds <- lexWhile isOctDigit+    return (parseInteger 8 ds, ds)++-- assumes at least one binary digit+lexBinary :: Lex a (Integer, String)+lexBinary = do+    ds <- lexWhile isBinDigit+    return (parseInteger 2 ds, ds)++-- assumes at least one hexadecimal digit+lexHexadecimal :: Lex a (Integer, String)+lexHexadecimal = do+    ds <- lexWhile isHexDigit+    return (parseInteger 16 ds, ds)++-- assumes at least one decimal digit+lexDecimal :: Lex a (Integer, String)+lexDecimal = do+    ds <- lexWhile isDigit+    return (parseInteger 10 ds, ds)++-- Stolen from Hugs's Prelude+parseInteger :: Integer -> String -> Integer+parseInteger radix = go 0+  where+    go !acc []     = acc+    go !acc (d:ds) = go (acc * radix + toInteger (digitToInt d)) ds++flagKW :: Token -> Lex a ()+flagKW t =+  when (t `elem` [KW_Do, KW_MDo]) $ do+       exts <- getExtensionsL+       when (NondecreasingIndentation `elem` exts) flagDo++-- | Selects ASCII binary digits, i.e. @\'0\'@..@\'1\'@.+isBinDigit :: Char -> Bool+isBinDigit c =  c >= '0' && c <= '1'+------------------------------------------------------------------+-- "Pretty" printing for tokens++showToken :: Token -> String+showToken t = case t of+  VarId s           -> s+  LabelVarId s      -> '#':s+  QVarId (q,s)      -> q ++ '.':s+  IDupVarId s       -> '?':s+  ILinVarId s       -> '%':s+  ConId s           -> s+  QConId (q,s)      -> q ++ '.':s+  DVarId ss         -> intercalate "-" ss+  VarSym s          -> s+  ConSym s          -> s+  QVarSym (q,s)     -> q ++ '.':s+  QConSym (q,s)     -> q ++ '.':s+  IntTok (_, s)         -> s+  FloatTok (_, s)       -> s+  Character (_, s)      -> '\'':s ++ "'"+  StringTok (_, s)      -> '"':s ++ "\""+  IntTokHash (_, s)     -> s ++ "#"+  WordTokHash (_, s)    -> s ++ "##"+  FloatTokHash (_, s)   -> s ++ "#"+  DoubleTokHash (_, s)  -> s ++ "##"+  CharacterHash (_, s)  -> '\'':s ++ "'#"+  StringHash (_, s)     -> '"':s ++ "\"#"+  LeftParen         -> "("+  RightParen        -> ")"+  LeftHashParen     -> "(#"+  RightHashParen    -> "#)"+  SemiColon         -> ";"+  LeftCurly         -> "{"+  RightCurly        -> "}"+  VRightCurly       -> "virtual }"+  LeftSquare        -> "["+  RightSquare       -> "]"+  ParArrayLeftSquare -> "[:"+  ParArrayRightSquare -> ":]"+  Comma             -> ","+  Underscore        -> "_"+  BackQuote         -> "`"+  QuoteColon        -> "':"+  Dot               -> "."+  DotDot            -> ".."+  Colon             -> ":"+  DoubleColon       -> "::"+  Equals            -> "="+  Backslash         -> "\\"+  Bar               -> "|"+  LeftArrow         -> "<-"+  RightArrow        -> "->"+  At                -> "@"+  TApp              -> "@"+  Tilde             -> "~"+  DoubleArrow       -> "=>"+  Minus             -> "-"+  Exclamation       -> "!"+  Star              -> "*"+  LeftArrowTail     -> "-<"+  RightArrowTail    -> ">-"+  LeftDblArrowTail  -> "-<<"+  RightDblArrowTail -> ">>-"+  OpenArrowBracket  -> "(|"+  CloseArrowBracket -> "|)"+  THExpQuote        -> "[|"+  THTExpQuote       -> "[||"+  THPatQuote        -> "[p|"+  THDecQuote        -> "[d|"+  THTypQuote        -> "[t|"+  THCloseQuote      -> "|]"+  THTCloseQuote     -> "||]"+  THIdEscape s      -> '$':s+  THParenEscape     -> "$("+  THTIdEscape s     -> "$$" ++ s+  THTParenEscape    -> "$$("+  THVarQuote        -> "'"+  THTyQuote         -> "''"+  THQuasiQuote (n,q) -> "[$" ++ n ++ "|" ++ q ++ "]"+  RPGuardOpen       -> "(|"+  RPGuardClose      -> "|)"+  RPCAt             -> "@:"+  XCodeTagOpen      -> "<%"+  XCodeTagClose     -> "%>"+  XStdTagOpen       -> "<"+  XStdTagClose      -> ">"+  XCloseTagOpen     -> "</"+  XEmptyTagClose    -> "/>"+  XPCDATA s         -> "PCDATA " ++ s+  XRPatOpen         -> "<["+  XRPatClose        -> "]>"+  PragmaEnd         -> "#-}"+  RULES             -> "{-# RULES"+  INLINE b          -> "{-# " ++ if b then "INLINE" else "NOINLINE"+  INLINE_CONLIKE    -> "{-# " ++ "INLINE CONLIKE"+  SPECIALISE        -> "{-# SPECIALISE"+  SPECIALISE_INLINE b -> "{-# SPECIALISE " ++ if b then "INLINE" else "NOINLINE"+  SOURCE            -> "{-# SOURCE"+  DEPRECATED        -> "{-# DEPRECATED"+  WARNING           -> "{-# WARNING"+  SCC               -> "{-# SCC"+  GENERATED         -> "{-# GENERATED"+  CORE              -> "{-# CORE"+  UNPACK            -> "{-# UNPACK"+  NOUNPACK          -> "{-# NOUNPACK"+  OPTIONS (mt,_)    -> "{-# OPTIONS" ++ maybe "" (':':) mt ++ " ..."+--  CFILES  s         -> "{-# CFILES ..."+--  INCLUDE s         -> "{-# INCLUDE ..."+  LANGUAGE          -> "{-# LANGUAGE"+  ANN               -> "{-# ANN"+  MINIMAL           -> "{-# MINIMAL"+  NO_OVERLAP        -> "{-# NO_OVERLAP"+  OVERLAP           -> "{-# OVERLAP"+  OVERLAPPING       -> "{-# OVERLAPPING"+  OVERLAPPABLE      -> "{-# OVERLAPPABLE"+  OVERLAPS          -> "{-# OVERLAPS"+  INCOHERENT        -> "{-# INCOHERENT"+  COMPLETE          -> "{-# COMPLETE"+  KW_As         -> "as"+  KW_By         -> "by"+  KW_Case       -> "case"+  KW_Class      -> "class"+  KW_Data       -> "data"+  KW_Default    -> "default"+  KW_Deriving   -> "deriving"+  KW_Do         -> "do"+  KW_MDo        -> "mdo"+  KW_Else       -> "else"+  KW_Family     -> "family"+  KW_Forall     -> "forall"+  KW_Group      -> "group"+  KW_Hiding     -> "hiding"+  KW_If         -> "if"+  KW_Import     -> "import"+  KW_In         -> "in"+  KW_Infix      -> "infix"+  KW_InfixL     -> "infixl"+  KW_InfixR     -> "infixr"+  KW_Instance   -> "instance"+  KW_Let        -> "let"+  KW_Module     -> "module"+  KW_NewType    -> "newtype"+  KW_Of         -> "of"+  KW_Proc       -> "proc"+  KW_Rec        -> "rec"+  KW_Then       -> "then"+  KW_Type       -> "type"+  KW_Using      -> "using"+  KW_Where      -> "where"+  KW_Qualified  -> "qualified"+  KW_Foreign    -> "foreign"+  KW_Export     -> "export"+  KW_Safe       -> "safe"+  KW_Unsafe     -> "unsafe"+  KW_Threadsafe -> "threadsafe"+  KW_Interruptible -> "interruptible"+  KW_StdCall    -> "stdcall"+  KW_CCall      -> "ccall"+  XChildTagOpen -> "<%>"+  KW_CPlusPlus  -> "cplusplus"+  KW_DotNet     -> "dotnet"+  KW_Jvm        -> "jvm"+  KW_Js         -> "js"+  KW_JavaScript -> "javascript"+  KW_CApi       -> "capi"+  KW_Role       -> "role"+  KW_Pattern    -> "pattern"+  KW_Stock      -> "stock"+  KW_Anyclass   -> "anyclass"+  KW_Via        -> "via"++  EOF           -> "EOF"
src/Language/Haskell/Exts/InternalParser.ly view
@@ -1,1822 +1,2275 @@ > {-> {-# OPTIONS_HADDOCK hide #-}-> ------------------------------------------------------------------------------> -- |-> -- Module      :  Language.Haskell.Exts.Annotated.Parser-> -- Copyright   :  (c) Niklas Broberg 2004-2009,-> --                Original (c) Simon Marlow, Sven Panne 1997-2000-> -- License     :  BSD-style (see the file LICENSE.txt)-> ---> -- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se-> -- Stability   :  stable-> -- Portability :  portable-> ---> ---> ------------------------------------------------------------------------------>-> module Language.Haskell.Exts.InternalParser (->               -- * General parsing->               ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult,->               -- * Parsing of specific AST elements->               -- ** Modules->               parseModule, parseModuleWithMode, parseModuleWithComments,->               -- ** Expressions->               parseExp, parseExpWithMode, parseExpWithComments,->               -- ** Statements->               parseStmt, parseStmtWithMode, parseStmtWithComments,->               -- ** Patterns->               parsePat, parsePatWithMode, parsePatWithComments,->               -- ** Declarations->               parseDecl, parseDeclWithMode, parseDeclWithComments,->               -- ** Types->               parseType, parseTypeWithMode, parseTypeWithComments,->               -- ** Multiple modules in one file->               parseModules, parseModulesWithMode, parseModulesWithComments,->               -- ** Option pragmas->               getTopPragmas->               ) where->-> import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )-> import Language.Haskell.Exts.Annotated.Syntax ( Type, Exp, Asst )-> import Language.Haskell.Exts.ParseMonad-> import Language.Haskell.Exts.Lexer-> import Language.Haskell.Exts.ParseUtils-> import Language.Haskell.Exts.Annotated.Fixity-> import Language.Haskell.Exts.SrcLoc-> import Language.Haskell.Exts.Comments ( Comment )-> import Language.Haskell.Exts.Extension--> import Control.Monad ( liftM, (<=<) )-import Debug.Trace (trace)--> }--------------------------------------------------------------------------------This module comprises a parser for Haskell 98 with the following extensions--* Multi-parameter type classes with functional dependencies-* Implicit parameters-* Pattern guards-* Mdo notation-* FFI-* HaRP-* HSP--Most of the code is blatantly stolen from the GHC module Language.Haskell.Parser.-Some of the code for extensions is greatly influenced by GHC's internal parser-library, ghc/compiler/parser/Parser.y.-------------------------------------------------------------------------------Conflicts: 6 shift/reduce--2 for ambiguity in 'case x of y | let z = y in z :: Bool -> b'  [State 12, 244]-        (don't know whether to reduce 'Bool' as a btype or shift the '->'.-         Similarly lambda and if. The default resolution in favour of the-         shift means that a guard can never end with a type signature.-         In mitigation: it's a rare case and no Haskell implementation-         allows these, because it would require unbounded lookahead.)-        There are 2 conflicts rather than one because contexts are parsed-        as btypes (cf ctype).--1 for ambiguity in 'let ?x ...'                     [State 712]-        the parser can't tell whether the ?x is the lhs of a normal binding or-        an implicit binding. Fortunately resolving as shift gives it the only-        sensible meaning, namely the lhs of an implicit binding.--1 for ambiguity using hybrid modules                [State 116]-        For HSP pages that start with a <% %> block, the parser cannot tell whether-        to reduce a srcloc or shift the starting <%. Since any other body could not-        start with <%, shifting is the only sensible thing to do.--1 for ambiguity using toplevel xml modules          [State 119]-        For HSP xml pages starting with a <, the parser cannot tell whether to shift-        that < or reduce an implicit 'open'. Since no other body could possibly start-        with <, shifting is the only sensible thing to do.--1 for ambiguity in '{-# RULES "name" [ ... #-}'     [State 318]-    we don't know whether the '[' starts the activation or not: it-    might be the start of the declaration with the activation being-    empty. Resolving with shift means the declaration cannot start with '['.---------------------------------------------------------------------------------> %token->       VARID    { Loc _ (VarId _) }->       QVARID   { Loc _ (QVarId _) }->       IDUPID   { Loc _ (IDupVarId _) }       -- duplicable implicit parameter ?x->       ILINID   { Loc _ (ILinVarId _) }       -- linear implicit parameter %x->       CONID    { Loc _ (ConId _) }->       QCONID   { Loc _ (QConId _) }->       DVARID   { Loc _ (DVarId _) }          -- VARID containing dashes->       VARSYM   { Loc _ (VarSym _) }->       CONSYM   { Loc _ (ConSym _) }->       QVARSYM  { Loc _ (QVarSym _) }->       QCONSYM  { Loc _ (QConSym _) }->       INT      { Loc _ (IntTok _) }->       RATIONAL { Loc _ (FloatTok _) }->       CHAR     { Loc _ (Character _) }->       STRING   { Loc _ (StringTok _) }-->       PRIMINT     { Loc _ (IntTokHash _) }->       PRIMWORD    { Loc _ (WordTokHash _) }->       PRIMFLOAT   { Loc _ (FloatTokHash _) }->       PRIMDOUBLE  { Loc _ (DoubleTokHash _) }->       PRIMCHAR    { Loc _ (CharacterHash _) }->       PRIMSTRING  { Loc _ (StringHash _) }--Symbols-->       '('     { Loc $$ LeftParen }->       ')'     { Loc $$ RightParen }->       '(#'    { Loc $$ LeftHashParen }->       '#)'    { Loc $$ RightHashParen }->       '{|'    { Loc $$ LeftCurlyBar }->       '|}'    { Loc $$ RightCurlyBar }->       ';'     { Loc $$ SemiColon }->       '{'     { Loc $$ LeftCurly }->       '}'     { Loc $$ RightCurly }->       vccurly { Loc $$ VRightCurly }                 -- a virtual close brace->       '['     { Loc $$ LeftSquare }->       ']'     { Loc $$ RightSquare }->       ','     { Loc $$ Comma }->       '_'     { Loc $$ Underscore }->       '`'     { Loc $$ BackQuote }--Reserved operators-->       '.'     { Loc $$ Dot }->       '..'    { Loc $$ DotDot }->       ':'     { Loc $$ Colon }->       '::'    { Loc $$ DoubleColon }->       '='     { Loc $$ Equals }->       '\\'    { Loc $$ Backslash }->       '|'     { Loc $$ Bar }->       '<-'    { Loc $$ LeftArrow }->       '->'    { Loc $$ RightArrow }->       '@'     { Loc $$ At }->       '~'     { Loc $$ Tilde }->       '=>'    { Loc $$ DoubleArrow }->       '-'     { Loc $$ Minus }->       '!'     { Loc $$ Exclamation }->       '*'     { Loc $$ Star }--Arrows-->       '-<'    { Loc $$ LeftArrowTail }->       '>-'    { Loc $$ RightArrowTail }->       '-<<'   { Loc $$ LeftDblArrowTail }->       '>>-'   { Loc $$ RightDblArrowTail }--Harp-->       '(|'    { Loc $$ RPGuardOpen }->       '|)'    { Loc $$ RPGuardClose }->       '@:'    { Loc $$ RPCAt }--Template Haskell-->       IDSPLICE        { Loc _ (THIdEscape _) }   -- $x->       '$('            { Loc $$ THParenEscape }->       '[|'            { Loc $$ THExpQuote }->       '[p|'           { Loc $$ THPatQuote }->       '[t|'           { Loc $$ THTypQuote }->       '[d|'           { Loc $$ THDecQuote }->       '|]'            { Loc $$ THCloseQuote }->       VARQUOTE        { Loc $$ THVarQuote }      -- 'x->       TYPQUOTE        { Loc $$ THTyQuote }       -- ''T->       QUASIQUOTE      { Loc _ (THQuasiQuote _) }--Hsx-->       PCDATA          { Loc _ (XPCDATA _) }->       '<'             { Loc $$ XStdTagOpen }->       '</'            { Loc $$ XCloseTagOpen }->       '<%'            { Loc $$ XCodeTagOpen }->       '>'             { Loc $$ XStdTagClose }->       '/>'            { Loc $$ XEmptyTagClose }->       '%>'            { Loc $$ XCodeTagClose }->       '<['            { Loc $$ XRPatOpen }->       ']>'            { Loc $$ XRPatClose }--FFI-->       'foreign'       { Loc $$ KW_Foreign }->       'export'        { Loc $$ KW_Export }->       'safe'          { Loc $$ KW_Safe }->       'unsafe'        { Loc $$ KW_Unsafe }->       'threadsafe'    { Loc $$ KW_Threadsafe }->       'stdcall'       { Loc $$ KW_StdCall }->       'ccall'         { Loc $$ KW_CCall }--Reserved Ids-->       'as'            { Loc $$ KW_As }->       'by'            { Loc $$ KW_By }       -- transform list comprehensions->       'case'          { Loc $$ KW_Case }->       'class'         { Loc $$ KW_Class }->       'data'          { Loc $$ KW_Data }->       'default'       { Loc $$ KW_Default }->       'deriving'      { Loc $$ KW_Deriving }->       'do'            { Loc $$ KW_Do }->       'else'          { Loc $$ KW_Else }->       'family'        { Loc $$ KW_Family }   -- indexed type families->       'forall'        { Loc $$ KW_Forall }   -- universal/existential qualification->       'group'         { Loc $$ KW_Group }    -- transform list comprehensions->       'hiding'        { Loc $$ KW_Hiding }->       'if'            { Loc $$ KW_If }->       'import'        { Loc $$ KW_Import }->       'in'            { Loc $$ KW_In }->       'infix'         { Loc $$ KW_Infix }->       'infixl'        { Loc $$ KW_InfixL }->       'infixr'        { Loc $$ KW_InfixR }->       'instance'      { Loc $$ KW_Instance }->       'let'           { Loc $$ KW_Let }->       'mdo'           { Loc $$ KW_MDo }->       'module'        { Loc $$ KW_Module }->       'newtype'       { Loc $$ KW_NewType }->       'of'            { Loc $$ KW_Of }->       'proc'          { Loc $$ KW_Proc }     -- arrows->       'rec'           { Loc $$ KW_Rec }      -- arrows->       'then'          { Loc $$ KW_Then }->       'type'          { Loc $$ KW_Type }->       'using'         { Loc $$ KW_Using }    -- transform list comprehensions->       'where'         { Loc $$ KW_Where }->       'qualified'     { Loc $$ KW_Qualified }--Pragmas-->       '{-# INLINE'            { Loc _ (INLINE _) }->       '{-# INLINE_CONLIKE'    { Loc $$ INLINE_CONLIKE }->       '{-# SPECIALISE'        { Loc $$ SPECIALISE }->       '{-# SPECIALISE_INLINE' { Loc _ (SPECIALISE_INLINE _) }->       '{-# SOURCE'            { Loc $$ SOURCE }->       '{-# RULES'             { Loc $$ RULES }->       '{-# CORE'              { Loc $$ CORE }->       '{-# SCC'               { Loc $$ SCC }->       '{-# GENERATED'         { Loc $$ GENERATED }->       '{-# DEPRECATED'        { Loc $$ DEPRECATED }->       '{-# WARNING'           { Loc $$ WARNING }->       '{-# UNPACK'            { Loc $$ UNPACK }->       '{-# OPTIONS'           { Loc _ (OPTIONS _) }-       '{-# CFILES'            { Loc _ (CFILES  _) }-       '{-# INCLUDE'           { Loc _ (INCLUDE _) }->       '{-# LANGUAGE'          { Loc $$ LANGUAGE }->       '{-# ANN'               { Loc $$ ANN }->       '#-}'                   { Loc $$ PragmaEnd }---> %monad { P }-> %lexer { lexer } { Loc _ EOF }-> %error { parseError }-> %name mparseModule page-> %name mparseExp trueexp-> %name mparsePat pat-> %name mparseDecl topdecl-> %name mparseType truectype-> %name mparseStmt stmt-> %name mparseModules modules-> %partial mfindOptPragmas toppragmas-> %tokentype { Loc Token }-> %expect 6-> %%--------------------------------------------------------------------------------Testing multiple modules in one file--> modules :: { [Module L] }->         : toppragmas modules1         { let (os,ss,l) = $1 in map (\x -> x os ss l) $2 }--> modules1 :: { [[ModulePragma L] -> [S] -> L -> Module L] }->         : module modules1             { $1 : $2 }->         | module                      { [$1] }--------------------------------------------------------------------------------HSP Pages--Any HSP-specific parts requiring the XmlSyntax extension enabled will-be governed by the lexing, since all productions require at least one-special lexeme.--TODO: Yuck, this is messy, needs fixing in the AST!--> page :: { Module L }->       : toppragmas topxml                            {% checkPageModule $2 $1 }->       | toppragmas '<%' module '%>' topxml           {% let (os,ss,l) = $1 in checkHybridModule $5 ($3 os ss l) $2 $4 }->       | toppragmas module                            { let (os,ss,l) = $1 in $2 os ss l }--> topxml :: { PExp L }->       : '<' name attrs mattr '>' children '</' name '>'        {% do { n <- checkEqNames $2 $8;->                                                                        let { cn = reverse $6;->                                                                              as = reverse $3; };->                                                                        return $ XTag ($1 <^^> $9 <** [$1,$5,$7,$9]) n as $4 cn } }->       | '<' name attrs mattr '/>'                              { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }---> toppragmas :: { ([ModulePragma L],[S],L) }->           : open toppragmasaux close          { let (os,ss,ml) = $2 in (os,$1:ss++[$3],$1 <^^> $3) }--> toppragmasaux :: { ([ModulePragma L],[S],Maybe L) }->               : toppragma ';' toppragmasaux         { let (os,ss,ml) = $3 in ($1 : os, $2 : ss, Just $ ann $1 <++> nIS $2 <+?> ml) }->               | {- nothing -}                         { ([],[],Nothing) }--> toppragma :: { ModulePragma L }->           : '{-# LANGUAGE' conids optsemis '#-}'   { LanguagePragma ($1 <^^> $4 <** ($1:snd $2 ++ reverse $3 ++ [$4])) (fst $2) }->           | '{-# OPTIONS' optsemis '#-}'           { let Loc l (OPTIONS (mc, s)) = $1->                                                       in OptionsPragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) (readTool mc) s }->           | '{-# ANN' annotation '#-}'             { AnnModulePragma ($1 <^^> $3 <** [$1,$3]) $2 }---> conids    :: { ([Name L],[S]) }->          : conid ',' conids                  { ($1 : fst $3, $2 : snd $3) }->          | conid                             { ([$1],[]) }--------------------------------------------------------------------------------Module Header--> module :: { [ModulePragma L] -> [S] -> L -> Module L }->       : optmodulehead body->               { let (is,ds,ss1,inf) = $2->                  in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) $1 os is ds }--> optmodulehead :: { Maybe (ModuleHead L) }->       : 'module' modid maybemodwarning maybeexports 'where'   { Just $ ModuleHead ($1 <^^> $5 <** [$1,$5]) $2 $3 $4 }->       | {- empty -}                                           { Nothing }--> maybemodwarning ::  { Maybe (WarningText L) }->       : '{-# DEPRECATED' STRING '#-}'         { let Loc l (StringTok (s,_)) = $2 in Just $ DeprText ($1 <^^> $3 <** [$1,l,$3]) s }->       | '{-# WARNING'    STRING '#-}'         { let Loc l (StringTok (s,_)) = $2 in Just $ WarnText ($1 <^^> $3 <** [$1,l,$3]) s }->       | {- empty -}                           { Nothing }--> body :: { ([ImportDecl L],[Decl L],[S],L) }->       : '{'  bodyaux '}'                      { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }->       | open bodyaux close                    { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }--> bodyaux :: { ([ImportDecl L],[Decl L],[S]) }->       : optsemis impdecls semis topdecls      { (reverse (fst $2), fst $4, reverse $1 ++ snd $2 ++ reverse $3 ++ snd $4) }->       | optsemis                topdecls      { ([], fst $2, reverse $1 ++ snd $2) }->       | optsemis impdecls optsemis            { (reverse (fst $2), [], reverse $1 ++ snd $2 ++ reverse $3) }->       | optsemis                              { ([], [], reverse $1) }--> semis :: { [S] }->       : optsemis ';'                          { $2 : $1 }--> optsemis :: { [S] }->       : semis                                 { $1 }->       | {- empty -}                           { [] }--------------------------------------------------------------------------------The Export List--> maybeexports :: { Maybe (ExportSpecList L) }->       :  exports                              { Just $1 }->       |  {- empty -}                          { Nothing }--> exports :: { ExportSpecList L }->       : '(' exportlist optcomma ')'           { ExportSpecList ($1 <^^> $4 <** ($1:reverse (snd $2) ++ $3 ++ [$4])) (reverse (fst $2)) }->       | '(' optcomma ')'                      { ExportSpecList ($1 <^^> $3 <** ($1:$2++[$3])) [] }--> optcomma :: { [S] }->       : ','                                   { [$1] }->       | {- empty -}                           { [  ] }--> exportlist :: { ([ExportSpec L],[S]) }->       :  exportlist ',' export                { ($3 : fst $1, $2 : snd $1) }->       |  export                               { ([$1],[])  }--> export :: { ExportSpec L }->       :  qvar                                 { EVar (ann $1) $1 }->       |  qtyconorcls                          { EAbs (ann $1) $1 }->       |  qtyconorcls '(' '..' ')'             { EThingAll  (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }->       |  qtyconorcls '(' ')'                  { EThingWith (ann $1 <++> nIS $3 <** [$2,$3])    $1 [] }->       |  qtyconorcls '(' cnames ')'           { EThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }->       |  'module' modid                       { EModuleContents (nIS $1 <++> ann $2 <** [$1]) $2 }--------------------------------------------------------------------------------Import Declarations--> impdecls :: { ([ImportDecl L],[S]) }->       : impdecls semis impdecl                { ($3 : fst $1, snd $1 ++ reverse $2) }->       | impdecl                               { ([$1],[]) }--> impdecl :: { ImportDecl L }->       : 'import' optsrc optqualified maybepkg modid maybeas maybeimpspec->                               { let { (mmn,ss,ml) = $6 ;->                                       l = nIS $1 <++> ann $5 <+?> ml <+?> (fmap ann) $7 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ ss)}->                                  in ImportDecl l $5 (fst $3) (fst $2) (fst $4) mmn $7 }--> optsrc :: { (Bool,[S]) }->       : '{-# SOURCE' '#-}'                    { (True,[$1,$2]) }->       | {- empty -}                           { (False,[]) }--> optqualified :: { (Bool,[S]) }->       : 'qualified'                           { (True,[$1]) }->       | {- empty -}                           { (False, []) }--Requires the PackageImports extension enabled.-> maybepkg :: { (Maybe String,[S]) }->       : STRING                                {% do { checkEnabled PackageImports ;->                                                       let { Loc l (StringTok (s,_)) = $1 } ;->                                                       return $ (Just s,[l]) } }->       | {- empty -}                           { (Nothing,[]) }--> maybeas :: { (Maybe (ModuleName L),[S],Maybe L) }->       : 'as' modid                            { (Just $2,[$1],Just (nIS $1 <++> ann $2)) }->       | {- empty -}                           { (Nothing,[],Nothing) }---> maybeimpspec :: { Maybe (ImportSpecList L) }->       : impspec                               { Just $1 }->       | {- empty -}                           { Nothing }--> impspec :: { ImportSpecList L }->       : opthiding '(' importlist optcomma ')' { let {(b,ml,s) = $1 ;->                                                       l = (ml <?+> ($2 <^^> $5)) <** (s ++ $2:reverse (snd $3) ++ $4 ++ [$5])}->                                                  in ImportSpecList l b (reverse (fst $3)) }->       | opthiding '(' optcomma ')'            { let {(b,ml,s) = $1 ; l = (ml <?+> ($2 <^^> $4)) <** (s ++ $2:$3 ++ [$4])}->                                                  in ImportSpecList l b [] }--> opthiding :: { (Bool, Maybe L,[S]) }->       : 'hiding'                              { (True,Just (nIS $1),[$1]) }->       | {- empty -}                           { (False,Nothing,[])  }--> importlist :: { ([ImportSpec L],[S]) }->       :  importlist ',' importspec            { ($3 : fst $1, $2 : snd $1) }->       |  importspec                           { ([$1],[])  }--> importspec :: { ImportSpec L }->       :  var                                  { IVar (ann $1) $1 }->       |  tyconorcls                           { IAbs (ann $1) $1 }->       |  tyconorcls '(' '..' ')'              { IThingAll  (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }->       |  tyconorcls '(' ')'                   { IThingWith (ann $1 <++> nIS $3 <** [$2,$3])    $1 [] }->       |  tyconorcls '(' cnames ')'            { IThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }--> cnames :: { ([CName L],[S]) }->       :  cnames ',' cname                     { ($3 : fst $1, $2 : snd $1) }->       |  cname                                { ([$1],[])  }--> cname :: { CName L }->       :  var                                  { VarName (ann $1) $1 }->       |  con                                  { ConName (ann $1) $1 }--------------------------------------------------------------------------------Fixity Declarations--> fixdecl :: { Decl L }->       : infix prec ops                        { let (ops,ss,l) = $3->                                                  in InfixDecl (ann $1 <++> l <** (snd $2 ++ reverse ss)) $1 (fst $2) (reverse ops) }--> prec :: { (Maybe Int, [S]) }->       : {- empty -}                           { (Nothing, []) }->       | INT                                   {% let Loc l (IntTok (i,_)) = $1 in checkPrec i >>= \i -> return (Just i, [l]) }--> infix :: { Assoc L }->       : 'infix'                               { AssocNone  $ nIS $1 }->       | 'infixl'                              { AssocLeft  $ nIS $1 }->       | 'infixr'                              { AssocRight $ nIS $1 }--> ops   :: { ([Op L],[S],L) }->       : ops ',' op                            { let (ops,ss,l) = $1 in ($3 : ops, $2 : ss, l <++> ann $3) }->       | op                                    { ([$1],[],ann $1) }--------------------------------------------------------------------------------Top-Level Declarations--Note: The report allows topdecls to be empty. This would result in another-shift/reduce-conflict, so we don't handle this case here, but in bodyaux.--> topdecls :: { ([Decl L],[S]) }->       : topdecls1 optsemis            {% checkRevDecls (fst $1) >>= \ds -> return (ds, snd $1 ++ reverse $2) }--> topdecls1 :: { ([Decl L],[S]) }->       : topdecls1 semis topdecl       { ($3 : fst $1, snd $1 ++ reverse $2) }->       | topdecl                       { ([$1],[]) }--> topdecl :: { Decl L }->       : 'type' dtype '=' truectype->                {% do { dh <- checkSimpleType $2;->                        let {l = nIS $1 <++> ann $4 <** [$1,$3]};->                        return (TypeDecl l dh $4) } }--Requires the TypeFamilies extension enabled, but the lexer will handle-that through the 'family' keyword.->       | 'type' 'family' type optkind->                {% do { dh <- checkSimpleType $3;->                        let {l = nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4) <** ($1:$2:snd $4)};->                        return (TypeFamDecl l dh (fst $4)) } }--Here there is no special keyword so we must do the check.->       | 'type' 'instance' truedtype '=' truectype->                {% do { -- no checkSimpleType $4 since dtype may contain type patterns->                        checkEnabled TypeFamilies ;->                        let {l = nIS $1 <++> ann $5 <** [$1,$2,$4]};->                        return (TypeInsDecl l $3 $5) } }->       | data_or_newtype ctype constrs0 deriving->                {% do { (cs,dh) <- checkDataHeader $2;->                        let { (qds,ss,minf) = $3;->                              l = $1 <> $2 <+?> minf <+?> fmap ann $4 <** ss};->                        checkDataOrNew $1 qds;->                        return (DataDecl l $1 cs dh (reverse qds) $4) } }--Requires the GADTs extension enabled, handled in gadtlist.->       | data_or_newtype ctype optkind gadtlist deriving->                {% do { (cs,dh) <- checkDataHeader $2;->                        let { (gs,ss,minf) = $4;->                              l = ann $1 <+?> minf <+?> fmap ann $5 <** (snd $3 ++ ss)};->                        checkDataOrNew $1 gs;->                        case (gs, fst $3) of->                         ([], Nothing) -> return (DataDecl l $1 cs dh [] $5)->                         _ -> checkEnabled GADTs >> return (GDataDecl l $1 cs dh (fst $3) (reverse gs) $5) } }--Same as above, lexer will handle it through the 'family' keyword.->       | 'data' 'family' ctype optkind->                {% do { (cs,dh) <- checkDataHeader $3;->                        let {l = nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4) <** ($1:$2:snd $4)};->                        return (DataFamDecl l cs dh (fst $4)) } }--Here we must check for TypeFamilies.->       | data_or_newtype 'instance' truectype constrs0 deriving->                {% do { -- (cs,c,t) <- checkDataHeader $4;->                        checkEnabled TypeFamilies ;->                        let { (qds,ss,minf) = $4 ;->                              l = $1 <> $3 <+?> minf <+?> fmap ann $5 <** $2:ss };->                        checkDataOrNew $1 qds;->                        return (DataInsDecl l $1 $3 (reverse qds) $5) } }--This style requires both TypeFamilies and GADTs, the latter is handled in gadtlist.->       | data_or_newtype 'instance' truectype optkind gadtlist deriving->                {% do { -- (cs,c,t) <- checkDataHeader $4;->                        checkEnabled TypeFamilies ;->                        let {(gs,ss,minf) = $5;->                             l = ann $1 <+?> minf <+?> fmap ann $6 <** ($2:snd $4 ++ ss)};->                        checkDataOrNew $1 gs;->                        return (GDataInsDecl l $1 $3 (fst $4) (reverse gs) $6) } }->       | 'class' ctype fds optcbody->                {% do { (cs,dh) <- checkClassHeader $2;->                        let {(fds,ss1,minf1) = $3;(mcs,ss2,minf2) = $4} ;->                        let { l = nIS $1 <++> ann $2 <+?> minf1 <+?> minf2 <** ($1:ss1 ++ ss2)} ;->                        return (ClassDecl l cs dh fds mcs) } }->       | 'instance' ctype optvaldefs->                {% do { (cs,ih) <- checkInstHeader $2;->                        let {(mis,ss,minf) = $3};->                        return (InstDecl (nIS $1 <++> ann $2 <+?> minf <** ($1:ss)) cs ih mis) } }--Requires the StandaloneDeriving extension enabled.->       | 'deriving' 'instance' ctype->                {% do { checkEnabled StandaloneDeriving ;->                        (cs, ih) <- checkInstHeader $3;->                        let {l = nIS $1 <++> ann $3 <** [$1,$2]};->                        return (DerivDecl l cs ih) } }->       | 'default' '(' typelist ')'->                { DefaultDecl ($1 <^^> $4 <** ($1:$2 : snd $3 ++ [$4])) (fst $3) }--Requires the TemplateHaskell extension, but the lexer will handle that-through the '$(' lexeme.-CHANGE: Arbitrary top-level expressions are considered implicit splices->       | exp0             {% checkEnabled TemplateHaskell >> checkExpr $1 >>= \e -> return (SpliceDecl (ann e) e) }--       | '$(' trueexp ')'  { let l = $1 <^^> $3 <** [$1,$3] in SpliceDecl l $ ParenSplice l $2 }--These require the ForeignFunctionInterface extension, handled by the-lexer through the 'foreign' (and 'export') keyword.->       | 'foreign' 'import' callconv safety fspec->                { let (s,n,t,ss) = $5 in ForImp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 $4 s n t }->       | 'foreign' 'export' callconv fspec->                { let (s,n,t,ss) = $4 in ForExp (nIS $1 <++> ann t <** ($1:$2:ss)) $3    s n t }-->       | '{-# RULES'      rules      '#-}'     { RulePragmaDecl ($1 <^^> $3 <** [$1,$3]) $ reverse $2 }->       | '{-# DEPRECATED' warndeprs  '#-}'     { DeprPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }->       | '{-# WARNING'    warndeprs  '#-}'     { WarnPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }->       | '{-# ANN'        annotation '#-}'     { AnnPragma      ($1 <^^> $3 <** [$1,$3]) $2 }->       | decl          { $1 }--> data_or_newtype :: { DataOrNew L }->       : 'data'    { DataType $ nIS $1 }->       | 'newtype' { NewType  $ nIS $1 }--> typelist :: { ([Type L],[S]) }->       : types                         {% do { ts <- mapM checkType (fst $1);->                                               return $ (reverse ts, reverse (snd $1)) } }->       | truetype                      { ([$1],[]) }->       | {- empty -}                   { ([],[]) }--> decls :: { ([Decl L],[S]) }->       : optsemis decls1 optsemis      {% checkRevDecls (fst $2) >>= \ds -> return (ds, reverse $1 ++ snd $2 ++ reverse $3) }->       | optsemis                      { ([],reverse $1) }--> decls1 :: { ([Decl L],[S]) }->       : decls1 semis decl             { ($3 : fst $1, snd $1 ++ reverse $2) }->       | decl                          { ([$1],[]) }--> decl :: { Decl L }->       : signdecl                      { $1 }->       | fixdecl                       { $1 }->       | valdef                        { $1 }--> decllist :: { Binds L }->       : '{'  decls '}'                { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }->       | open decls close              { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }--> signdecl :: { Decl L }->       : exp0b '::' truectype                           {% do { v <- checkSigVar $1;->                                                                return $ TypeSig ($1 <> $3 <** [$2]) [v] $3 } }->       | exp0b ',' vars '::' truectype                  {% do { v <- checkSigVar $1;->                                                                let {(vs,ss,_) = $3 ; l = $1 <> $5 <** ($2 : reverse ss ++ [$4]) } ;->                                                                return $ TypeSig l (v : reverse vs) $5 } }->       | specinldecl                   { $1 }--> specinldecl :: { Decl L }->       : '{-# INLINE' activation qvar '#-}'             { let Loc l (INLINE s) = $1 in InlineSig (l <^^> $4 <** [l,$4]) s $2 $3 }->       | '{-# INLINE_CONLIKE' activation qvar '#-}'     { InlineConlikeSig ($1 <^^> $4 <** [$1,$4]) $2 $3 }->       | '{-# SPECIALISE' qvar '::' sigtypes '#-}'      { SpecSig ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 (fst $4) }->       | '{-# SPECIALISE_INLINE' activation qvar '::' sigtypes '#-}'->                                                        { let Loc l (SPECIALISE_INLINE s) = $1->                                                           in SpecInlineSig (l <^^> $6 <** (l:$4:snd $5++[$6])) s $2 $3 (fst $5) }->       | '{-# SPECIALISE' 'instance' ctype '#-}'        {% do { (cs,ih) <- checkInstHeader $3;->                                                                let {l = $1 <^^> $4 <** [$1,$2,$4]};->                                                                return $ InstSig l cs ih } }--> sigtypes :: { ([Type L],[S]) }->       : sigtype                           { ([$1],[]) }->       | sigtype ',' sigtypes              { ($1 : fst $3, $2 : snd $3) }--> sigtype :: { Type L }->       : ctype                             {% checkType $ mkTyForall (ann $1) Nothing Nothing $1 }--Binding can be either of implicit parameters, or it can be a normal sequence-of declarations. The two kinds cannot be mixed within the same block of-binding.--> binds :: { Binds L }->       : decllist                      { $1 }->       | '{' ipbinds '}'               { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }->       | open ipbinds close            { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }--ATTENTION: Dirty Hackery Ahead! If the second alternative of vars is var-instead of qvar, we get another shift/reduce-conflict. Consider the-following programs:--   { (+) :: ... }          only var-   { (+) x y  = ... }      could (incorrectly) be qvar--We re-use expressions for patterns, so a qvar would be allowed in patterns-instead of a var only (which would be correct). But deciding what the + is,-would require more lookahead. So let's check for ourselves...--> vars  :: { ([Name L],[S],L) }->       : vars ',' var                  { let (ns,ss,l) = $1 in ($3 : ns, $2 : ss, l <++> ann $3) }->       | qvar                          {% do { n <- checkUnQual $1;->                                               return ([n],[],ann n) } }--------------------------------------------------------------------------------FFI--These will only be called on in the presence of a 'foreign' keyword,-so no need to check for extensions.--> callconv :: { CallConv L }->          : 'stdcall'                  { StdCall (nIS $1) }->          | 'ccall'                    { CCall   (nIS $1) }--> safety :: { Maybe (Safety L) }->        : 'safe'                       { Just $ PlaySafe  (nIS $1) False }->        | 'unsafe'                     { Just $ PlayRisky (nIS $1) }->        | 'threadsafe'                 { Just $ PlaySafe  (nIS $1) True }->        | {- empty -}                  { Nothing }--> fspec :: { (Maybe String, Name L, Type L, [S]) }->       : STRING var_no_safety '::' truedtype               { let Loc l (StringTok (s,_)) = $1 in (Just s, $2, $4, [l,$3]) }->       |        var_no_safety '::' truedtype               { (Nothing, $1, $3, [$2]) }--------------------------------------------------------------------------------Pragmas--> rules :: { [Rule L] }->       : rules ';'rule         { $3 : $1 }->       | rules ';'             { $1 }->       | rule                  { [$1] }->       | {- empty -}           { [] }--> rule :: { Rule L }->      : STRING activation ruleforall exp0 '=' trueexp      {% do { let {Loc l (StringTok (s,_)) = $1};->                                                                   e <- checkRuleExpr $4;->                                                                   return $ Rule (nIS l <++> ann $6 <** l:snd $3 ++ [$5]) s $2 (fst $3) e $6 } }--> activation :: { Maybe (Activation L) }->        : {- empty -}          { Nothing }->        | '[' INT ']'          { let Loc l (IntTok (i,_)) = $2 in Just $ ActiveFrom  ($1 <^^> $3 <** [$1,l,$3])    (fromInteger i) }->        | '[' '~' INT ']'      { let Loc l (IntTok (i,_)) = $3 in Just $ ActiveUntil ($1 <^^> $4 <** [$1,$2,l,$4]) (fromInteger i) }--> ruleforall :: { (Maybe [RuleVar L],[S]) }->       : {- empty -}                           { (Nothing,[]) }->       | 'forall' rulevars '.'                 { (Just $2,[$1,$3]) }--> rulevars :: { [RuleVar L] }->       : rulevar                       { [$1] }->       | rulevar rulevars              { $1 : $2 }--> rulevar :: { RuleVar L }->       : varid                             { RuleVar (ann $1) $1 }->       | '(' varid '::' truectype ')'      { TypedRuleVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }--> warndeprs :: { ([([Name L],String)],[S]) }->   : warndeprs ';' warndepr            { (fst $3 : fst $1, snd $1 ++ ($2:snd $3)) }->   | warndeprs ';'                     { (fst $1, snd $1 ++ [$2]) }->   | warndepr                          { ([fst $1],snd $1) }->   | {- empty -}                       { ([],[]) }--> warndepr :: { (([Name L], String),[S]) }->       : namevars STRING               { let Loc l (StringTok (s,_)) = $2 in ((fst $1,s),snd $1 ++ [l]) }--> namevars :: { ([Name L],[S]) }->           : namevar                   { ([$1],[]) }->           | namevar ',' namevars      { ($1 : fst $3, $2 : snd $3) }--> namevar :: { Name L }->         : con                         { $1 }->         | var                         { $1 }--> annotation :: { Annotation L }->       : 'type' conid aexp             {% checkExpr $3 >>= \e -> return (TypeAnn   (nIS $1 <++> ann e <** [$1]) $2 e) }->       | 'module' aexp                 {% checkExpr $2 >>= \e -> return (ModuleAnn (nIS $1 <++> ann e <** [$1])    e) }->       | namevar aexp                  {% checkExpr $2 >>= \e -> return (Ann ($1 <> e) $1 e) }--------------------------------------------------------------------------------Types--Type equality contraints need the TypeFamilies extension.--> truedtype :: { Type L }->       : dtype                         {% checkType $1 }--> dtype :: { PType L }->       : btype                         { $1 }->       | btype qtyconop dtype          { TyInfix ($1 <> $3) $1 $2 $3 }->       | btype qtyvarop dtype          { TyInfix ($1 <> $3) $1 $2 $3 } -- FIXME->       | btype '->' ctype              { TyFun ($1 <> $3 <** [$2]) $1 $3 }->       | btype '~' btype               {% do { checkEnabled TypeFamilies ;->                                               let {l = $1 <> $3 <** [$2]};->                                               return $ TyPred l $ EqualP l $1 $3 } }--Implicit parameters can occur in normal types, as well as in contexts.--> truetype :: { Type L }->       : type                          {% checkType $1 }--> type :: { PType L }->       : ivar '::' dtype               { let l = ($1 <> $3 <** [$2]) in TyPred l $ IParam l $1 $3 }->       | dtype                         { $1 }--> truebtype :: { Type L }->       : btype                         {% checkType $1 }--> btype :: { PType L }->       : btype atype                   { TyApp ($1 <> $2) $1 $2 }->       | atype                         { $1 }--UnboxedTuples requires the extension, but that will be handled through-the (# and #) lexemes. Kinds will be handled at the kind rule.--> trueatype :: { Type L }->       : atype                         {% checkType $1 }--> atype :: { PType L }->       : gtycon                        { TyCon   (ann $1) $1 }->       | tyvar                         { TyVar   (ann $1) $1 }->       | '(' types ')'                 { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Boxed   (reverse (fst $2)) }->       | '(#' types1 '#)'              { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Unboxed (reverse (fst $2)) }->       | '[' type ']'                  { TyList  ($1 <^^> $3 <** [$1,$3]) $2 }->       | '(' ctype ')'                 { TyParen ($1 <^^> $3 <** [$1,$3]) $2 }->       | '(' ctype '::' kind ')'       { TyKind  ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }--> gtycon :: { QName L }->       : otycon                        { $1 }->       | '(' ')'                       { unit_tycon_name              ($1 <^^> $2 <** [$1,$2]) }->       | '(' '->' ')'                  { fun_tycon_name               ($1 <^^> $3 <** [$1,$2,$3]) }->       | '[' ']'                       { list_tycon_name              ($1 <^^> $2 <** [$1,$2]) }->       | '(' commas ')'                { tuple_tycon_name             ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Boxed (length $2) }->       | '(#' '#)'                     { unboxed_singleton_tycon_name ($1 <^^> $2 <** [$1,$2]) }->       | '(#' commas '#)'              { tuple_tycon_name             ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Unboxed (length $2) }--> otycon :: { QName L }->       : qconid                        { $1 }->       | '(' gconsym ')'               { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--These are for infix types--> qtyconop :: { QName L }->       : qconop                        { $1 }---(Slightly edited) Comment from GHC's hsparser.y:-"context => type" vs  "type" is a problem, because you can't distinguish between--        foo :: (Baz a, Baz a)-        bar :: (Baz a, Baz a) => [a] -> [a] -> [a]--with one token of lookahead.  The HACK is to parse the context as a btype-(more specifically as a tuple type), then check that it has the right form-C a, or (C1 a, C2 b, ... Cn z) and convert it into a context.  Blaach!--Forall-quantified types require some extension to enable them, which-is any of the keyword-enabling ones, except ExistentialQuantification.--> truectype :: { Type L }->       : ctype                         {% checkType $1 }--> ctype :: { PType L }->       : 'forall' ktyvars '.' ctype    { TyForall (nIS $1 <++> ann $4 <** [$1,$3]) (Just (reverse (fst $2))) Nothing $4 }->       | context ctype                 { TyForall ($1 <> $2) Nothing (Just $1) $2 }->       | type                          { $1 }--Equality constraints require the TypeFamilies extension.--> context :: { PContext L }->       : btype '=>'                    {% checkPContext $ (amap (\l -> l <++> nIS $2 <** (srcInfoPoints l ++ [$2]))) $1 }->       | btype '~' btype '=>'          {% do { checkEnabled TypeFamilies;->                                               let {l = $1 <> $3 <** [$2,$4]};->                                               checkPContext (TyPred l $ EqualP l $1 $3) } }--> types :: { ([PType L],[S]) }->       : types1 ',' ctype              { ($3 : fst $1, $2 : snd $1)  }--> types1 :: { ([PType L],[S]) }->       : ctype                         { ([$1],[]) }->       | types1 ',' ctype              { ($3 : fst $1, $2 : snd $1) }--> ktyvars :: { ([TyVarBind L],Maybe L) }->       : ktyvars ktyvar                { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }->       | {- empty -}                   { ([],Nothing) }--> ktyvar :: { TyVarBind L }->       : tyvar                         { UnkindedVar (ann $1) $1 }->       | '(' tyvar '::' kind ')'       { KindedVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }--> tyvars :: { ([Name L],Maybe L) }->       : tyvars tyvar                  { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }->       | {- empty -}                   { ([], Nothing) }--> tyvars1 :: { ([Name L],L) }->       : tyvars tyvar                  { ($2 : fst $1, snd $1 <?+> ann $2) }---------------------------------------------------------------------------------Functional Dependencies--These require the FunctionalDependencies extension to be enabled.--> fds :: { ([FunDep L],[S],Maybe L) }->       : {- empty -}                   { ([],[], Nothing) }->       | '|' fds1                      {% do { checkEnabled FunctionalDependencies ;->                                               let {(fds,ss,l) = $2} ;->                                               return (reverse fds, $1 : reverse ss, Just (nIS $1 <++> l)) } }--> fds1 :: { ([FunDep L],[S],L) }->       : fds1 ',' fd                   { let (fds,ss,l) = $1 in ($3 : fds, $2 : ss, l <++> ann $3) }->       | fd                            { ([$1],[],ann $1) }--> fd :: { FunDep L }->       : tyvars1 '->' tyvars1            { FunDep (snd $1 <++> snd $3 <** [$2]) (reverse (fst $1)) (reverse (fst $3)) }--------------------------------------------------------------------------------Datatype declarations--GADTs - require the GADTs extension enabled, but we handle that at the calling site.-- gadtlist :: { ([GadtDecl L],[S],L) }-       : gadtlist1                 {% >> return $1 }--> gadtlist :: { ([GadtDecl L],[S],Maybe L) }->       : 'where' '{' gadtconstrs1 '}'                  {% return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }->       | 'where' open gadtconstrs1 close               {% return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }->       | {- empty -}                                   {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }--> gadtconstrs1 :: { ([GadtDecl L],[S]) }->       : optsemis gadtconstrs optsemis         { (fst $2, reverse $1 ++ snd $2 ++ reverse $3)  }--> gadtconstrs :: { ([GadtDecl L],[S]) }->       : gadtconstrs semis gadtconstr          { ($3 : fst $1, snd $1 ++ reverse $2) }->       | gadtconstr                            { ([$1],[]) }--> gadtconstr :: { GadtDecl L }->       : qcon '::' truectype            {% do { c <- checkUnQual $1;->                                                return $ GadtDecl ($1 <> $3 <** [$2]) c $3 } }--To allow the empty case we need the EmptyDataDecls extension.-> constrs0 :: { ([QualConDecl L],[S],Maybe L) }-       : {- empty -}                   {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }->       : '=' constrs                   { let (ds,ss,l) = $2 in (ds, $1 : reverse ss, Just $ nIS $1 <++> l) }--> constrs :: { ([QualConDecl L],[S],L) }->       : constrs '|' constr            { let (ds,ss,l) = $1 in ($3 : ds, $2 : ss, l <++> ann $3) }->       | constr                        { ([$1],[],ann $1) }--> constr :: { QualConDecl L }->       : forall context constr1        {% do { checkEnabled ExistentialQuantification ;->                                                ctxt <- checkContext (Just $2) ;->                                                let {(mtvs,ss,ml) = $1} ;->                                                return $ QualConDecl (ml <?+> ann $3 <** ss) mtvs ctxt $3 } }->       | forall constr1                 { let (mtvs, ss, ml) = $1 in QualConDecl (ml <?+> ann $2 <** ss) mtvs Nothing $2 }--> forall :: { (Maybe [TyVarBind L], [S], Maybe L) }->       : 'forall' ktyvars '.'          {% checkEnabled ExistentialQuantification >> return (Just (fst $2), [$1,$3], Just $ $1 <^^> $3) }->       | {- empty -}                   { (Nothing, [], Nothing) }--To avoid conflicts when introducing type operators, we need to parse record constructors-as qcon and then check separately that they are truly unqualified.--> constr1 :: { ConDecl L }->       : scontype                      { let (n,ts,l) = $1 in ConDecl l n ts }->       | sbtype conop sbtype           { InfixConDecl ($1 <> $3) $1 $2 $3 }->       | qcon '{' '}'                  {% do { c <- checkUnQual $1; return $ RecDecl (ann $1 <++> nIS $3 <** [$2,$3]) c [] } }->       | qcon '{' fielddecls '}'       {% do { c <- checkUnQual $1;->                                               return $ RecDecl (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) c (reverse (fst $3)) } }--> scontype :: { (Name L, [BangType L], L) }->       : btype                         {% do { (c,ts) <- splitTyConApp $1;->                                               return (c,map (\t -> UnBangedTy (ann t) t) ts,ann $1) } }->       | scontype1                     { $1 }--> scontype1 :: { (Name L, [BangType L],L) }->       : btype '!' trueatype                       {% do { (c,ts) <- splitTyConApp $1;->                                                           return (c,map (\t -> UnBangedTy (ann t) t) ts++->                                                                   [BangedTy (nIS $2 <++> ann $3 <** [$2]) $3], $1 <> $3) } }->       | btype '{-# UNPACK' '#-}' '!' trueatype    {% do { (c,ts) <- splitTyConApp $1;->                                                           return (c,map (\t -> UnBangedTy (ann t) t) ts++->                                                                   [UnpackedTy (nIS $2 <++> ann $5 <** [$2,$3,$4]) $5], $1 <> $5) } }->       | scontype1 satype              { let (n,ts,l) = $1 in (n, ts ++ [$2],l <++> ann $2) }--> satype :: { BangType L }->       : trueatype                         { UnBangedTy (ann $1) $1 }->       | '!' trueatype                     { BangedTy   (nIS $1 <++> ann $2 <** [$1]) $2 }->       | '{-# UNPACK' '#-}' '!' trueatype  { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }--> sbtype :: { BangType L }->       : truebtype                         { UnBangedTy (ann $1) $1 }->       | '!' trueatype                     { BangedTy   (nIS $1 <++> ann $2 <** [$1]) $2 }->       | '{-# UNPACK' '#-}' '!' trueatype  { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }--> fielddecls :: { ([FieldDecl L],[S]) }->       : fielddecls ',' fielddecl      { ($3 : fst $1, $2 : snd $1) }->       | fielddecl                     { ([$1],[]) }--> fielddecl :: { FieldDecl L }->       : vars '::' stype               { let (ns,ss,l) = $1 in FieldDecl (l <++> ann $3 <** (reverse ss ++ [$2])) (reverse ns) $3 }--> stype :: { BangType L }->       : truectype                         { UnBangedTy (ann $1) $1 }->       | '!' trueatype                     { BangedTy   (nIS $1 <++> ann $2 <** [$1]) $2 }->       | '{-# UNPACK' '#-}' '!' trueatype  { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }--> deriving :: { Maybe (Deriving L) }->       : {- empty -}                   { Nothing }->       | 'deriving' qtycls1            { let l = nIS $1 <++> ann $2 <** [$1] in Just $ Deriving l [IHead (ann $2) $2 []] }->       | 'deriving' '('          ')'   { Just $ Deriving ($1 <^^> $3 <** [$1,$2,$3]) [] }->       | 'deriving' '(' dclasses ')'   { Just $ Deriving ($1 <^^> $4 <** $1:$2: reverse (snd $3) ++ [$4]) (reverse (fst $3)) }--> dclasses :: { ([InstHead L],[S]) }->       : types1                        {% checkDeriving (fst $1) >>= \ds -> return (ds, snd $1) }--> qtycls1 :: { QName L }->       : qconid                        { $1 }---------------------------------------------------------------------------------Kinds--> kind :: { Kind L }->       : kind1                 {% checkEnabled KindSignatures >> return $1 }--> kind1 :: { Kind L }->       : akind                 { $1 }->       | akind '->' kind1      { KindFn ($1 <> $3 <** [$2]) $1 $3 }--> akind :: { Kind L }->       : '*'                   { KindStar  (nIS $1) }->       | '!'                   { KindBang  (nIS $1) }->       | '(' kind1 ')'         { KindParen ($1 <^^> $3 <** [$1,$3]) $2 }--> optkind :: { (Maybe (Kind L), [S]) }->       : {-empty-}             { (Nothing,[]) }->       | '::' kind             { (Just $2,[$1]) }-------------------------------------------------------------------------------Class declarations--TODO: Lots of stuff to pass around here.--No implicit parameters in the where clause of a class declaration.-> optcbody :: { (Maybe [ClassDecl L],[S],Maybe L) }->       : 'where' '{'  cldecls '}'      {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }->       | 'where' open cldecls close    {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }->       | {- empty -}                   { (Nothing,[],Nothing) }--> cldecls :: { ([ClassDecl L],[S]) }->       : optsemis cldecls1 optsemis    {% checkRevClsDecls (fst $2) >>= \cs -> return (cs, reverse $1 ++ snd $2 ++ reverse $3) }->       | optsemis                      { ([],reverse $1) }--> cldecls1 :: { ([ClassDecl L],[S]) }->       : cldecls1 semis cldecl         { ($3 : fst $1, snd $1 ++ reverse $2) }->       | cldecl                        { ([$1],[]) }--Associated types require the TypeFamilies extension.--> cldecl :: { ClassDecl L }->       : decl                          { ClsDecl (ann $1) $1 }->       | atdecl                        {% checkEnabled TypeFamilies >> return $1 }--> atdecl :: { ClassDecl L }->       : 'type' type optkind->             {% do { dh <- checkSimpleType $2;->                     return (ClsTyFam  (nIS $1 <++> ann $2 <+?> (fmap ann) (fst $3) <** $1:snd $3) dh (fst $3)) } }->       | 'type' truedtype '=' truectype->                     { ClsTyDef (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }->       | 'data' ctype optkind->             {% do { (cs,dh) <- checkDataHeader $2;->                     return (ClsDataFam (nIS $1 <++> ann $2 <+?> (fmap ann) (fst $3) <** $1:snd $3) cs dh (fst $3)) } }--------------------------------------------------------------------------------Instance declarations--> optvaldefs :: { (Maybe [InstDecl L],[S],Maybe L) }->       : 'where' '{'  valdefs '}'      {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4))  }->       | 'where' open valdefs close    {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }->       | {- empty -}                   { (Nothing, [], Nothing) }--> valdefs :: { ([InstDecl L],[S]) }->       : optsemis valdefs1 optsemis    {% checkRevInstDecls (fst $2) >>= \is -> return (is, reverse $1 ++ snd $2 ++ reverse $3) }->       | optsemis                      { ([],reverse $1) }--> valdefs1 :: { ([InstDecl L],[S]) }->       : valdefs1 semis insvaldef      { ($3 : fst $1, snd $1 ++ reverse $2) }->       | insvaldef                     { ([$1],[]) }--Associated types require the TypeFamilies extension enabled.--> insvaldef :: { InstDecl L }->       : valdef                        { InsDecl (ann $1) $1 }->       | atinst                        {% checkEnabled TypeFamilies >> return $1 }->       | specinldecl                   { InsDecl (ann $1) $1 }-- inlinst :: { InstDecl L }-       : '{-# INLINE' activation qvar '#-}'     { let Loc l (INLINE s) = $1 in InsInline (l <^^> $4 <** [l,$4]) s $2 $3 }--> atinst :: { InstDecl L }->       : 'type' truedtype '=' truectype->                {% do { -- no checkSimpleType $4 since dtype may contain type patterns->                        return (InsType (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4) } }->       | data_or_newtype truectype constrs0 deriving->                {% do { -- (cs,c,t) <- checkDataHeader $4;->                        let {(ds,ss,minf) = $3};->                        checkDataOrNew $1 ds;->                        return (InsData ($1 <> $2 <+?> minf <+?> fmap ann $4 <** ss ) $1 $2 (reverse ds) $4) } }->       | data_or_newtype truectype optkind gadtlist deriving->                {% do { -- (cs,c,t) <- checkDataHeader $4;->                        let { (gs,ss,minf) = $4 } ;->                        checkDataOrNew $1 gs;->                        return $ InsGData (ann $1 <+?> minf <+?> fmap ann $5 <** (snd $3 ++ ss)) $1 $2 (fst $3) (reverse gs) $5 } }--------------------------------------------------------------------------------Value definitions--> valdef :: { Decl L }->       : exp0b optsig rhs optwhere     {% checkValDef (($1 <> $3 <+?> (fmap ann) (fst $4)) <** (snd $2 ++ snd $4)) $1 (fst $2) $3 (fst $4) }->       | '!' aexp rhs optwhere         {% do { checkEnabled BangPatterns ;->                                               let { l = nIS $1 <++> ann $2 <** [$1] };->                                               p <- checkPattern (BangPat l $2);->                                               return $ PatBind (p <> $3 <+?> (fmap ann) (fst $4) <** snd $4)->                                                           p Nothing $3 (fst $4) } }--May bind implicit parameters-> optwhere :: { (Maybe (Binds L),[S]) }->       : 'where' binds                 { (Just $2, [$1]) }->       | {- empty -}                   { (Nothing, []) }--Type signatures on value definitions require ScopedTypeVariables (or PatternSignatures, which is deprecated).--> optsig :: { (Maybe (Type L),[S]) }->       : '::' truectype                {% checkEnabled ScopedTypeVariables >> return (Just $2, [$1]) }->       | {- empty -}                   { (Nothing,[]) }--> rhs   :: { Rhs L }->       : '=' trueexp                   { UnGuardedRhs (nIS $1 <++> ann $2 <** [$1]) $2 }->       | gdrhs                         { GuardedRhss (snd $1) (reverse $ fst $1) }--> gdrhs :: { ([GuardedRhs L],L) }->       : gdrhs gdrh                    { ($2 : fst $1, snd $1 <++> ann $2) }->       | gdrh                          { ([$1],ann $1) }--Guards may contain patterns if PatternGuards is enabled, hence quals instead of exp.-> gdrh :: { GuardedRhs L }->       : '|' quals '=' trueexp  {% do { checkPatternGuards (fst $2);->                                        return $ GuardedRhs (nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])) (reverse (fst $2)) $4 } }--------------------------------------------------------------------------------Expressions--Note: The Report specifies a meta-rule for lambda, let and if expressions-(the exp's that end with a subordinate exp): they extend as far to-the right as possible.  That means they cannot be followed by a type-signature or infix application.  To implement this without shift/reduce-conflicts, we split exp10 into these expressions (exp10a) and the others-(exp10b).  That also means that only an exp0 ending in an exp10b (an exp0b)-can followed by a type signature or infix application.  So we duplicate-the exp0 productions to distinguish these from the others (exp0a).--Ugly: We need non-parenthesized post-operators for HaRP, and to parse both-these and normal left sections, we parse both as PostOp and let the post pass-mangle them into the correct form depending on context.--> trueexp :: { Exp L }->         : exp                 {% checkExpr $1 }--> exp   :: { PExp L }->       : exp0b '::' truectype              { ExpTypeSig      ($1 <> $3 <** [$2]) $1 $3 }->       | exp0                              { $1 }->       | exp0b qop                         { PostOp          ($1 <> $2)          $1 $2 }->       | exp0b '-<' exp                    { LeftArrApp      ($1 <> $3 <** [$2]) $1 $3 }->       | exp0b '>-' exp                    { RightArrApp     ($1 <> $3 <** [$2]) $1 $3 }->       | exp0b '-<<' exp                   { LeftArrHighApp  ($1 <> $3 <** [$2]) $1 $3 }->       | exp0b '>>-' exp                   { RightArrHighApp ($1 <> $3 <** [$2]) $1 $3 }--> exp0 :: { PExp L }->       : exp0a                         { $1 }->       | exp0b                         { $1 }--> exp0a :: { PExp L }->       : exp0b qop exp10a              { InfixApp ($1 <> $3) $1 $2 $3 }->       | exp10a                        { $1 }--> exp0b :: { PExp L }->       : exp0b qop exp10b              { InfixApp ($1 <> $3) $1 $2 $3 }->       | exp10b                        { $1 }--> exp10a :: { PExp L }->       : '\\' apats '->' exp             { Lambda (nIS $1 <++> ann $4 <** [$1,$3]) (reverse $2) $4 }-A let may bind implicit parameters->       | 'let' binds 'in' exp            { Let    (nIS $1 <++> ann $4 <** [$1,$3])    $2 $4 }->       | 'if' exp 'then' exp 'else' exp  { If     (nIS $1 <++> ann $6 <** [$1,$3,$5]) $2 $4 $6 }->       | 'proc' apat '->' exp            { Proc   (nIS $1 <++> ann $4 <** [$1,$3])    $2 $4 }->       | exppragma                       { $1 }--mdo blocks require the RecursiveDo extension enabled, but the lexer handles that.--> exp10b :: { PExp L }->       : 'case' exp 'of' altslist      { let (als, inf, ss) = $4 in Case (nIS $1 <++> inf <** ($1:$3:ss)) $2 als }->       | '-' fexp                      { NegApp (nIS $1 <++> ann $2 <** [$1]) $2 }->       | 'do'  stmtlist                { let (sts, inf, ss) = $2 in Do   (nIS $1 <++> inf <** $1:ss) sts }->       | 'mdo' stmtlist                { let (sts, inf, ss) = $2 in MDo  (nIS $1 <++> inf <** $1:ss) sts }->       | fexp                          { $1 }--> exppragma :: { PExp L }->       : '{-# CORE' STRING '#-}' exp   { let Loc l (StringTok (s,_)) = $2 in CorePragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }->       | '{-# SCC'  STRING '#-}' exp   { let Loc l (StringTok (s,_)) = $2 in SCCPragma  (nIS $1 <++> ann $4 <** [l,$3]) s $4 }->       | '{-# GENERATED' STRING INT ':' INT '-' INT ':' INT '#-}' exp->                                           { let { Loc l0 (StringTok (s,_)) = $2;->                                                   Loc l1 (IntTok (i1,_))   = $3;->                                                   Loc l2 (IntTok (i2,_))   = $5;->                                                   Loc l3 (IntTok (i3,_))   = $7;->                                                   Loc l4 (IntTok (i4,_))   = $9}->                                              in GenPragma (nIS $1 <++> ann $11 <** [$1,l0,l1,$4,l2,$6,l3,$8,l4,$10])->                                                       s (fromInteger i1, fromInteger i2)->                                                         (fromInteger i3, fromInteger i4) $11 }--> fexp :: { PExp L }->       : fexp aexp                     { App ($1 <> $2) $1 $2 }->       | aexp                          { $1 }--> apats :: { [Pat L] }->       : apats apat                    { $2 : $1 }->       | apat                          { [$1] }--> apat :: { Pat L }->       : aexp                          {% checkPattern $1 }->       | '!' aexp                      {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }--UGLY: Because patterns and expressions are mixed, aexp has to be split into-two rules: One right-recursive and one left-recursive. Otherwise we get two-reduce/reduce-errors (for as-patterns and irrefutable patters).--Even though the variable in an as-pattern cannot be qualified, we use-qvar here to avoid a shift/reduce conflict, and then check it ourselves-(as for vars above).--Non-linear name binding, @:, requires RegularPatterns, but the lexer handles that.--> aexp  :: { PExp L }->       : qvar '@' aexp                 {% do { n <- checkUnQual $1;->                                               return (AsPat ($1 <> $3 <** [$2]) n $3) } }->       | qvar '@:' aexp                {% do { n <- checkUnQual $1;->                                               return (CAsRP ($1 <> $3 <** [$2]) n $3) } }->       | '~' aexp                      { IrrPat (nIS $1 <++> ann $2 <** [$1]) $2 }->       | aexp1                         { $1 }--Note: The first two alternatives of aexp1 are not necessarily record-updates: they could be labeled constructions.-Generics-style explicit type arguments need the Generics extension, but-we check that in the lexer.--> aexp1 :: { PExp L }->       : aexp1 '{' '}'                 {% liftM (amap (const (ann $1 <++> nIS $3 <** [$2,$3]))) $ mkRecConstrOrUpdate $1 [] }->       | aexp1 '{' fbinds '}'          {% liftM (amap (const (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4]))))->                                               $ mkRecConstrOrUpdate $1 (reverse (fst $3)) }->       | qvar '{|' truetype '|}'       { ExplTypeArg (ann $1 <++> nIS $4 <** [$2,$4]) $1 $3 }->       | aexp2                         { $1 }--According to the Report, the left section (e op) is legal iff (e op x)-parses equivalently to ((e) op x).  Thus e must be an exp0b.-An implicit parameter can be used as an expression, enabled by the lexer.-Extensions using banana brackets are also enabled by the lexer. The only-thing we need to look at here is the erpats that use no non-standard lexemes.--> aexp2 :: { PExp L }->       : ivar                          { IPVar (ann $1) $1 }->       | qvar                          { Var (ann $1) $1 }->       | gcon                          { $1 }->       | literal                       { Lit (ann $1) $1 }->       | '(' texp ')'                  { Paren ($1 <^^> $3 <** [$1,$3]) $2 }->       | '(' texp tsectend             { TupleSection ($1 <^^> head (snd $3) <** $1:reverse (snd $3)) (Just $2 : fst $3) }->       | '(' commas texp ')'           { TupleSection ($1 <^^> $4 <** $1:reverse ($4:$2))->                                                       (replicate (length $2 - 1) Nothing ++ [Just $3]) }->       | '(' commas texp tsectend      { TupleSection ($1 <^^> head (snd $4) <** $1:reverse (snd $4 ++ $2))->                                                       (replicate (length $2 - 1) Nothing ++ Just $3 : fst $4) }->       | '[' list ']'                  { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) }->       | '_'                           { WildCard (nIS $1) }->       | '(' erpats ')'                {% checkEnabled RegularPatterns >> return (Paren ($1 <^^> $3 <** [$1,$3]) $2) }->       | '(|' sexps '|)'               { SeqRP ($1 <^^> $3 <** ($1:reverse (snd $2) ++ [$3])) $ reverse (fst $2) }->       | '(|' exp '|' quals '|)'       { GuardRP ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 $ (reverse $ fst $4) }->       | xml                           { $1 }--Template Haskell - all this is enabled in the lexer.->       | IDSPLICE                      { let Loc l (THIdEscape s) = $1 in SpliceExp (nIS l) $ IdSplice (nIS l) s }->       | '$(' trueexp ')'              { SpliceExp  ($1 <^^> $3 <** [$1,$3]) $ ParenSplice (ann $2) $2 }->       | '[|' trueexp '|]'             { BracketExp ($1 <^^> $3 <** [$1,$3]) $ ExpBracket  (ann $2) $2 }->       | '[p|' exp0 '|]'               {% do { p <- checkPattern $2;->                                               return $ BracketExp ($1 <^^> $3 <** [$1,$3]) $ PatBracket (ann p) p } }->       | '[t|' truectype '|]'              { let l = $1 <^^> $3 <** [$1,$3] in BracketExp l $ TypeBracket l $2 }->       | '[d|' open topdecls close '|]'    { let l = $1 <^^> $5 <** ($1:snd $3 ++ [$5]) in BracketExp l $ DeclBracket l (fst $3) }->       | VARQUOTE qvar                 { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }->       | VARQUOTE qcon                 { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }->       | TYPQUOTE tyvar                { TypQuote (nIS $1 <++> ann $2 <** [$1]) (UnQual (ann $2) $2) }->       | TYPQUOTE gtycon               { TypQuote (nIS $1 <++> ann $2 <** [$1]) $2 }->       | QUASIQUOTE                    { let Loc l (THQuasiQuote (n,q)) = $1 in QuasiQuote (nIS l) n q }-End Template Haskell--> commas :: { [S] }->       : commas ','                    { $2 : $1 }->       | ','                           { [$1] }--> texp :: { PExp L }->       : exp                           { $1 }->       | qopm exp0                     { PreOp ($1 <> $2) $1 $2 }->       | exp '->' exp                  {% do {checkEnabled ViewPatterns;->                                              return $ ViewPat ($1 <> $3 <** [$2]) $1 $3} }--> tsectend :: { ([Maybe (PExp L)],[S]) }->       : commas texp tsectend          { let (mes, ss) = $3 in (replicate (length $1 - 1) Nothing ++ Just $2 : mes, ss ++ $1) }->       | commas texp ')'               { (replicate (length $1 - 1) Nothing ++ [Just $2], $3 : $1) }->       | commas ')'                    { (replicate (length $1) Nothing, $2 : $1) }--------------------------------------------------------------------------------Harp Extensions--> sexps :: { ([PExp L],[S]) }->       : sexps ',' exp                 { ($3 : fst $1, $2 : snd $1) }->       | exp                           { ([$1],[]) }--Either patterns are left associative-> erpats :: { PExp L }->       : exp '|' erpats              { EitherRP ($1 <> $3 <** [$2]) $1 $3 }->       | exp '|' exp                 { EitherRP ($1 <> $3 <** [$2]) $1 $3 }--------------------------------------------------------------------------------Hsx Extensions - requires XmlSyntax, but the lexer handles all that.--> xml :: { PExp L }->       : '<' name attrs mattr '>' children '</' name '>'        {% do { n <- checkEqNames $2 $8;->                                                                        let { cn = reverse $6;->                                                                              as = reverse $3;->                                                                              l  = $1 <^^> $9 <** [$1,$5,$7,srcInfoSpan (ann $8),$9] };->                                                                        return $ XTag l n as $4 cn } }->       | '<' name attrs mattr '/>'                              { XETag   ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }->       | '<%' exp '%>'                                          { XExpTag ($1 <^^> $3 <** [$1,$3]) $2 }--> children :: { [PExp L] }->       : children child                { $2 : $1 }->       | {- empty -}                   { [] }--> child :: { PExp L }->       : PCDATA                        { let Loc l (XPCDATA pcd) = $1 in XPcdata (nIS l) pcd }->       | '<[' sexps ']>'               { XRPats ($1 <^^> $3 <** (snd $2 ++ [$1,$3])) $ reverse (fst $2) }->       | xml                           { $1 }--> name :: { XName L }->       : xmlname ':' xmlname           { let {Loc l1 s1 = $1; Loc l2 s2 = $3}->                                          in XDomName (nIS l1 <++> nIS l2 <** [l1,$2,l2]) s1 s2 }->       | xmlname                       { let Loc l str = $1 in XName (nIS l) str }--> xmlname :: { Loc String }->       : VARID                         { let Loc l (VarId  s) = $1 in Loc l s }->       | CONID                         { let Loc l (ConId  s) = $1 in Loc l s }->       | DVARID                        { let Loc l (DVarId s) = $1 in Loc l $ mkDVar s }->       | xmlkeyword                    { $1 }--> xmlkeyword :: { Loc String }->       : 'type'                        { Loc $1 "type" }->       | 'class'                       { Loc $1 "class" }->       | 'data'                        { Loc $1 "data" }->       | 'foreign'                     { Loc $1 "foreign" }->       | 'export'                      { Loc $1 "export" }->       | 'safe'                        { Loc $1 "safe" }->       | 'unsafe'                      { Loc $1 "unsafe" }->       | 'threadsafe'                  { Loc $1 "threadsafe" }->       | 'stdcall'                     { Loc $1 "stdcall" }->       | 'ccall'                       { Loc $1 "ccall" }->       | 'as'                          { Loc $1 "as" }->       | 'by'                          { Loc $1 "by" }->       | 'case'                        { Loc $1 "case" }->       | 'default'                     { Loc $1 "default" }->       | 'deriving'                    { Loc $1 "deriving" }->       | 'do'                          { Loc $1 "do" }->       | 'else'                        { Loc $1 "else" }->       | 'family'                      { Loc $1 "family" }->       | 'forall'                      { Loc $1 "forall" }->       | 'group'                       { Loc $1 "group" }->       | 'hiding'                      { Loc $1 "hiding" }->       | 'if'                          { Loc $1 "if" }->       | 'import'                      { Loc $1 "import" }->       | 'in'                          { Loc $1 "in" }->       | 'infix'                       { Loc $1 "infix" }->       | 'infixl'                      { Loc $1 "infixl" }->       | 'infixr'                      { Loc $1 "infixr" }->       | 'instance'                    { Loc $1 "instance" }->       | 'let'                         { Loc $1 "let" }->       | 'mdo'                         { Loc $1 "mdo" }->       | 'module'                      { Loc $1 "module" }->       | 'newtype'                     { Loc $1 "newtype" }->       | 'of'                          { Loc $1 "of" }->       | 'proc'                        { Loc $1 "proc" }->       | 'rec'                         { Loc $1 "rec" }->       | 'then'                        { Loc $1 "then" }->       | 'using'                       { Loc $1 "using" }->       | 'where'                       { Loc $1 "where" }->       | 'qualified'                   { Loc $1 "qualified" }---> attrs :: { [ParseXAttr L] }->       : attrs attr                    { $2 : $1 }->       | {- empty -}                   { [] }--> attr :: { ParseXAttr L }->       : name '=' aexp                 { XAttr ($1 <> $3 <** [$2]) $1 $3 }--> mattr :: { Maybe (PExp L) }-->       : aexp                          { Just $1 }->       | {-empty-}                     { Nothing }--------------------------------------------------------------------------------List expressions--The rules below are little bit contorted to keep lexps left-recursive while-avoiding another shift/reduce-conflict.--> list :: { L -> PExp L }->       : texp                          { \l -> List l [$1] }->       | lexps                         { \l -> let (ps,ss) = $1 in List (l <** reverse ss) (reverse ps) }->       | texp '..'                     { \l -> EnumFrom       (l <** [$2]) $1 }->       | texp ',' exp '..'             { \l -> EnumFromThen   (l <** [$2,$4]) $1 $3 }->       | texp '..' exp                 { \l -> EnumFromTo     (l <** [$2]) $1 $3 }->       | texp ',' exp '..' exp         { \l -> EnumFromThenTo (l <** [$2,$4]) $1 $3 $5 }->       | texp '|' pqualstmts           { \l -> let (stss, ss) = $3 in ParComp (l <** ($2:ss)) $1 (reverse stss) }--> lexps :: { ([PExp L],[S]) }->       : lexps ',' texp                { let (es, ss) = $1 in ($3 : es, $2 : ss) }->       | texp ',' texp                 { ([$3,$1], [$2]) }--------------------------------------------------------------------------------List comprehensions--> pqualstmts :: { ([[QualStmt L]],[S]) }->       : pqualstmts '|' qualstmts      { let { (stss, ss1) = $1;->                                               (sts, ss2) = $3 }->                                          in (reverse sts : stss, ss1 ++ [$2] ++ reverse ss2)  }->       | qualstmts                     { let (sts, ss) = $1 in ([reverse sts], reverse ss) }--> qualstmts :: { ([QualStmt L],[S]) }->       : qualstmts ',' qualstmt        { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }->       | qualstmt                      { ([$1],[]) }--> qualstmt :: { QualStmt L }->       : transformqual                 { $1 }->       | qual                          { QualStmt (ann $1) $1 }--> transformqual :: { QualStmt L }->       : 'then' trueexp                                { ThenTrans    (nIS $1 <++> ann $2 <** [$1]) $2 }->       | 'then' trueexp 'by' trueexp                   { ThenBy       (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }->       | 'then' 'group' 'by' trueexp                   { GroupBy      (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }->       | 'then' 'group' 'using' trueexp                { GroupUsing   (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }->       | 'then' 'group' 'by' trueexp 'using' trueexp   { GroupByUsing (nIS $1 <++> ann $6 <** [$1,$2,$3,$5]) $4 $6 }--> quals :: { ([Stmt L],[S]) }->       : quals ',' qual                { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }->       | qual                          { ([$1],[]) }--> qual  :: { Stmt L }->       : pat '<-' trueexp              { Generator ($1 <> $3 <** [$2]) $1 $3 }->       | trueexp                       { Qualifier (ann $1) $1 }->       | 'let' binds                   { LetStmt   (nIS $1 <++> ann $2 <** [$1]) $2 }---------------------------------------------------------------------------------Case alternatives--> altslist :: { ([Alt L],L,[S]) }->       : '{'  alts '}'                 { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3])  }->       | open alts close               { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }--> alts :: { ([Alt L],[S]) }->       : optsemis alts1 optsemis       { (reverse $ fst $2, $1 ++ snd $2 ++ $3) }--> alts1 :: { ([Alt L],[S]) }->       : alts1 semis alt               { ($3 : fst $1, snd $1 ++ $2) }->       | alt                           { ([$1],[]) }--> alt :: { Alt L }->       : pat ralt optwhere             { Alt ($1 <> $2 <+?> (fmap ann) (fst $3) <** snd $3) $1 $2 (fst $3) }--> ralt :: { GuardedAlts L }->       : '->' trueexp                  { UnGuardedAlt (nIS $1 <++> ann $2 <** [$1]) $2 }->       | gdpats                        { GuardedAlts  (snd $1) (reverse $ fst $1) }--> gdpats :: { ([GuardedAlt L],L) }->       : gdpats gdpat                  { ($2 : fst $1, snd $1 <++> ann $2) }->       | gdpat                         { ([$1], ann $1) }--A guard can be a pattern guard if PatternGuards is enabled, hence quals instead of exp0.-> gdpat :: { GuardedAlt L }->       : '|' quals '->' trueexp {% do { checkPatternGuards (fst $2);->                                        let {l = nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])};->                                        return (GuardedAlt l (reverse (fst $2)) $4) } }--> pat :: { Pat L }->       : exp                           {% checkPattern $1 }->       | '!' aexp                      {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }-------------------------------------------------------------------------------Statement sequences--As per the Report, but with stmt expanded to simplify building the list-without introducing conflicts.  This also ensures that the last stmt is-an expression.--TODO: The points can't be added here, must be propagated!--> stmtlist :: { ([Stmt L],L,[S]) }->       : '{'  stmts '}'                { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3])  }->       | open stmts close              { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }--> stmts :: { ([Stmt L],[S]) }->       : stmt stmts1                       { ($1 : fst $2, snd $2) }->       | ';' stmts                         { (fst $2, $1 : snd $2) }->       | {- empty -}                       { ([],[]) }--> stmts1 :: { ([Stmt L],[S]) }->       : ';' stmts                         { (fst $2, $1 : snd $2) }->       | {- empty -}                       { ([],[]) }--A let statement may bind implicit parameters.-> stmt :: { Stmt L }->       : 'let' binds                       { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }->       | pat '<-' trueexp                  { Generator ($1 <> $3 <** [$2]) $1 $3 }->       | trueexp                           { Qualifier (ann $1) $1 }->       | 'rec' stmtlist                    { let (stms,inf,ss) = $2 in RecStmt (nIS $1 <++> inf <** $1:ss) stms }--------------------------------------------------------------------------------Record Field Update/Construction--> fbinds :: { ([PFieldUpdate L],[S]) }->       : fbinds ',' fbind              { let (fbs, ss) = $1 in ($3 : fbs, $2 : ss) }->       | fbind                         { ([$1],[]) }--Puns and wild cards need the respective extensions enabled.--> fbind :: { PFieldUpdate L }->       : qvar '=' exp                  { FieldUpdate ($1 <>$3 <** [$2]) $1 $3 }->       | qvar                          {% checkEnabled NamedFieldPuns >> checkUnQual $1 >>= return . FieldPun (ann $1) }->       | '..'                          {% checkEnabled RecordWildCards >> return (FieldWildcard (nIS $1)) }--------------------------------------------------------------------------------Implicit parameter bindings - need the ImplicitParameter extension enabled, but the lexer handles that.--> ipbinds :: { ([IPBind L],[S]) }->       : optsemis ipbinds1 optsemis    { (reverse (fst $2), reverse $1 ++ snd $2 ++ reverse $3) }--> ipbinds1 :: { ([IPBind L],[S]) }->       : ipbinds1 semis ipbind         { ($3 : fst $1, snd $1 ++ reverse $2) }->       | ipbind                        { ([$1],[]) }--> ipbind :: { IPBind L }->       : ivar '=' trueexp              { IPBind ($1 <> $3 <** [$2]) $1 $3 }--------------------------------------------------------------------------------Variables, Constructors and Operators.--> gcon :: { PExp L }->       : '(' ')'               { p_unit_con              ($1 <^^> $2 <** [$1,$2]) }->       | '[' ']'               { List                    ($1 <^^> $2 <** [$1,$2]) [] }->       | '(' commas ')'        { p_tuple_con             ($1 <^^> $3 <** $1:reverse ($3:$2)) Boxed (length $2) }->       | '(#' '#)'             { p_unboxed_singleton_con ($1 <^^> $2 <** [$1,$2]) }->       | '(#' commas '#)'      { p_tuple_con             ($1 <^^> $3 <** $1:reverse ($3:$2)) Unboxed (length $2) }->       | qcon                  { Con (ann $1) $1 }--> var   :: { Name L }->       : varid                 { $1 }->       | '(' varsym ')'        { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> var_no_safety :: { Name L }->       : varid_no_safety       { $1 }->       | '(' varsym ')'        { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qvar  :: { QName L }->       : qvarid                { $1 }->       | '(' qvarsym ')'       { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--Implicit parameter-> ivar  :: { IPName L }->       : ivarid                { $1 }--> con   :: { Name L }->       : conid                 { $1 }->       | '(' consym ')'        { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qcon  :: { QName L }->       : qconid                { $1 }->       | '(' gconsym ')'       { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> varop :: { Name L }->       : varsym                { $1 }->       | '`' varid '`'         { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qvarop :: { QName L }->       : qvarsym               { $1 }->       | '`' qvarid '`'        { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qvaropm :: { QName L }->       : qvarsymm              { $1 }->       | '`' qvarid '`'        { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> conop :: { Name L }->       : consym                { $1 }->       | '`' conid '`'         { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qconop :: { QName L }->       : gconsym               { $1 }->       | '`' qconid '`'        { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> op    :: { Op L }->       : varop                 { VarOp (ann $1) $1 }->       | conop                 { ConOp (ann $1) $1 }--> qop   :: { QOp L }->       : qvarop                { QVarOp (ann $1) $1 }->       | qconop                { QConOp (ann $1) $1 }--> qopm  :: { QOp L }->       : qvaropm               { QVarOp (ann $1) $1 }->       | qconop                { QConOp (ann $1) $1 }--> gconsym :: { QName L }->       : ':'                   { list_cons_name (nIS $1) }->       | qconsym               { $1 }--------------------------------------------------------------------------------Identifiers and Symbols--> qvarid :: { QName L }->       : varid                 { UnQual (ann $1) $1 }->       | QVARID                { let {Loc l (QVarId q) = $1; nis = nIS l}->                                  in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }--> varid_no_safety :: { Name L }->       : VARID                 { let Loc l (VarId v) = $1 in Ident (nIS l) v }->       | 'as'                  { as_name        (nIS $1) }->       | 'qualified'           { qualified_name (nIS $1) }->       | 'hiding'              { hiding_name    (nIS $1) }->       | 'export'              { export_name    (nIS $1) }->       | 'stdcall'             { stdcall_name   (nIS $1)  }->       | 'ccall'               { ccall_name     (nIS $1)  }--> varid :: { Name L }->       : varid_no_safety       { $1 }->       | 'safe'                { safe_name       (nIS $1) }->       | 'unsafe'              { unsafe_name     (nIS $1) }->       | 'threadsafe'          { threadsafe_name (nIS $1) }---Implicit parameter-> ivarid :: { IPName L }->       : IDUPID                { let Loc l (IDupVarId i) = $1 in IPDup (nIS l) i }->       | ILINID                { let Loc l (ILinVarId i) = $1 in IPLin (nIS l) i }--> qconid :: { QName L }->       : conid                 { UnQual (ann $1) $1 }->       | QCONID                { let {Loc l (QConId q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }--> conid :: { Name L }->       : CONID                 { let Loc l (ConId c) = $1 in Ident (nIS l) c }--> qconsym :: { QName L }->       : consym                { UnQual (ann $1) $1 }->       | QCONSYM               { let {Loc l (QConSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }--> consym :: { Name L }->       : CONSYM                { let Loc l (ConSym c) = $1 in Symbol (nIS l) c }--> qvarsym :: { QName L }->       : varsym                { UnQual (ann $1) $1 }->       | qvarsym1              { $1 }--> qvarsymm :: { QName L }->       : varsymm               { UnQual (ann $1) $1 }->       | qvarsym1              { $1 }--> varsym :: { Name L }->       : VARSYM                { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }->       | '-'                   { minus_name (nIS $1) }->       | '!'                   { bang_name  (nIS $1) }->       | '.'                   { dot_name   (nIS $1) }->       | '*'                   { star_name  (nIS $1) }--> varsymm :: { Name L } -- varsym not including '-'->       : VARSYM                { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }->       | '!'                   { bang_name (nIS $1) }->       | '.'                   { dot_name  (nIS $1) }->       | '*'                   { star_name (nIS $1) }--> qvarsym1 :: { QName L }->       : QVARSYM               { let {Loc l (QVarSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }--> literal :: { Literal L }->       : INT                   { let Loc l (IntTok        (i,raw)) = $1 in Int        (nIS l) i raw }->       | CHAR                  { let Loc l (Character     (c,raw)) = $1 in Char       (nIS l) c raw }->       | RATIONAL              { let Loc l (FloatTok      (r,raw)) = $1 in Frac       (nIS l) r raw }->       | STRING                { let Loc l (StringTok     (s,raw)) = $1 in String     (nIS l) s raw }->       | PRIMINT               { let Loc l (IntTokHash    (i,raw)) = $1 in PrimInt    (nIS l) i raw }->       | PRIMWORD              { let Loc l (WordTokHash   (w,raw)) = $1 in PrimWord   (nIS l) w raw }->       | PRIMFLOAT             { let Loc l (FloatTokHash  (f,raw)) = $1 in PrimFloat  (nIS l) f raw }->       | PRIMDOUBLE            { let Loc l (DoubleTokHash (d,raw)) = $1 in PrimDouble (nIS l) d raw }->       | PRIMCHAR              { let Loc l (CharacterHash (c,raw)) = $1 in PrimChar   (nIS l) c raw }->       | PRIMSTRING            { let Loc l (StringHash    (s,raw)) = $1 in PrimString (nIS l) s raw }--------------------------------------------------------------------------------Layout--> open  :: { S }  :       {% pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -} }--> close :: { S }->       : vccurly               { $1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} } -- context popped in lexer.->       | error                 {% popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -} }--------------------------------------------------------------------------------Miscellaneous (mostly renamings)--> modid :: { ModuleName L }->       : CONID                 { let Loc l (ConId  n) = $1 in ModuleName (nIS l) n }->       | QCONID                { let Loc l (QConId n) = $1 in ModuleName (nIS l) (fst n ++ '.':snd n) }--> tyconorcls :: { Name L }->       : con                   { $1 }--> qtyconorcls :: { QName L }->       : qcon                  { $1 }--> tyvar :: { Name L }->       : varid                 { $1 }--> qtyvarop :: { QName L }-> qtyvarop : '`' tyvar '`'       { UnQual ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }->          | tyvarsym            { UnQual (ann $1) $1 }--> tyvarsym :: { Name L }-> tyvarsym : VARSYM              { let Loc l (VarSym x) = $1 in Symbol (nIS l) x }---------------------------------------------------------------------------------> {--> type L = SrcSpanInfo -- just for convenience-> type S = SrcSpan--> parseError :: Loc Token -> P a-> parseError t = fail $ "Parse error: " ++ showToken (unLoc t)--> (<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo-> a <> b = ann a <++> ann b->-> infixl 6 <>--> nIS = noInfoSpan-> iS = infoSpan---> -- | Parse of a string, which should contain a complete Haskell module.-> parseModule :: String -> ParseResult (Module SrcSpanInfo)-> parseModule = simpleParse mparseModule--> -- | Parse of a string containing a complete Haskell module, using an explicit mode.-> parseModuleWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)-> parseModuleWithMode = modeParse mparseModule--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseModuleWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])-> parseModuleWithComments = commentParse mparseModule--> -- | Parse of a string containing a Haskell expression.-> parseExp :: String -> ParseResult (Exp SrcSpanInfo)-> parseExp = simpleParse mparseExp--> -- | Parse of a string containing a Haskell expression, using an explicit mode.-> parseExpWithMode :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo)-> parseExpWithMode = modeParse mparseExp--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseExpWithComments :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo, [Comment])-> parseExpWithComments = commentParse mparseExp--> -- | Parse of a string containing a Haskell pattern.-> parsePat :: String -> ParseResult (Pat SrcSpanInfo)-> parsePat = simpleParse mparsePat--> -- | Parse of a string containing a Haskell pattern, using an explicit mode.-> parsePatWithMode :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo)-> parsePatWithMode = modeParse mparsePat--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parsePatWithComments :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo, [Comment])-> parsePatWithComments = commentParse mparsePat--> -- | Parse of a string containing a Haskell top-level declaration.-> parseDecl :: String -> ParseResult (Decl SrcSpanInfo)-> parseDecl = simpleParse mparseDecl--> -- | Parse of a string containing a Haskell top-level declaration, using an explicit mode.-> parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo)-> parseDeclWithMode = modeParse mparseDecl--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo, [Comment])-> parseDeclWithComments = commentParse mparseDecl--> -- | Parse of a string containing a Haskell type.-> parseType :: String -> ParseResult (Type SrcSpanInfo)-> parseType = runParser mparseType--> -- | Parse of a string containing a Haskell type, using an explicit mode.-> parseTypeWithMode :: ParseMode -> String -> ParseResult (Type SrcSpanInfo)-> parseTypeWithMode mode = runParserWithMode mode mparseType--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseTypeWithComments :: ParseMode -> String -> ParseResult (Type SrcSpanInfo, [Comment])-> parseTypeWithComments mode str = runParserWithModeComments mode mparseType str--> -- | Parse of a string containing a Haskell statement.-> parseStmt :: String -> ParseResult (Stmt SrcSpanInfo)-> parseStmt = runParser mparseStmt--> -- | Parse of a string containing a Haskell type, using an explicit mode.-> parseStmtWithMode :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo)-> parseStmtWithMode mode = runParserWithMode mode mparseStmt--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseStmtWithComments :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo, [Comment])-> parseStmtWithComments mode str = runParserWithModeComments mode mparseStmt str---> simpleParse :: AppFixity a => P (a L) -> String -> ParseResult (a L)-> simpleParse p = applyFixities preludeFixities <=< runParser p--> modeParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L)-> modeParse p mode = applyFixities (fixities mode) <=< runParserWithMode mode p--> commentParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L, [Comment])-> commentParse p mode str = do (ast, cs) <- runParserWithModeComments mode p str->                              ast' <- applyFixities (fixities mode) ast->                              return (ast', cs)--> -- | Partial parse of a string starting with a series of top-level option pragmas.-> getTopPragmas :: String -> ParseResult [ModulePragma SrcSpanInfo]-> getTopPragmas = runParser (mfindOptPragmas >>= \(ps,_,_) -> return ps)--> -- | Parse of a string, which should contain a complete Haskell module.-> parseModules :: String -> ParseResult [Module SrcSpanInfo]-> parseModules = mapM (applyFixities preludeFixities) <=< runParser mparseModules--> -- | Parse of a string containing a complete Haskell module, using an explicit mode.-> parseModulesWithMode :: ParseMode -> String -> ParseResult [Module SrcSpanInfo]-> parseModulesWithMode mode = mapM (applyFixities (fixities mode)) <=< runParserWithMode mode mparseModules--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseModulesWithComments :: ParseMode -> String -> ParseResult ([Module SrcSpanInfo], [Comment])-> parseModulesWithComments mode str = do (ast,cs) <- runParserWithModeComments mode mparseModules str->                                        ast' <- mapM (applyFixities (fixities mode)) ast->                                        return (ast', cs)->+> {-# LANGUAGE CPP #-}+> {-# OPTIONS_HADDOCK hide #-}+> +> -----------------------------------------------------------------------------+> -- |+> -- Module      :  Language.Haskell.Exts.Annotated.Parser+> -- Copyright   :  (c) Niklas Broberg 2004-2009,+> --                Original (c) Simon Marlow, Sven Panne 1997-2000+> -- License     :  BSD-style (see the file LICENSE.txt)+> --+> -- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+> -- Stability   :  stable+> -- Portability :  portable+> --+> --+> -----------------------------------------------------------------------------+>+> module Language.Haskell.Exts.InternalParser (+>               mparseModule,+>               mparseExp,+>               mparsePat,+>               mparseDecl,+>               mparseType,+>               mparseStmt,+>               mparseImportDecl,+>               ngparseModulePragmas,+>               ngparseModuleHeadAndImports,+>               ngparsePragmasAndModuleHead,+>               ngparsePragmasAndModuleName+>               ) where+>+> import Language.Haskell.Exts.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )+> import Language.Haskell.Exts.Syntax ( Type, Exp, Asst )+> import Language.Haskell.Exts.ParseMonad+> import Language.Haskell.Exts.InternalLexer+> import Language.Haskell.Exts.ParseUtils+> import Language.Haskell.Exts.Fixity+> import Language.Haskell.Exts.SrcLoc+> import Language.Haskell.Exts.Extension++> import Control.Monad ( liftM, (<=<), when )+> import Control.Applicative ( (<$>) )+> import Data.Maybe+> #if MIN_VERSION_base(4,11,0)+> import Prelude hiding ((<>))+> #endif+import Debug.Trace (trace)++> }++-----------------------------------------------------------------------------+This module comprises a parser for Haskell 98 with the following extensions++* Multi-parameter type classes with functional dependencies+* Implicit parameters+* Pattern guards+* Mdo notation+* FFI+* HaRP+* HSP++Most of the code is blatantly stolen from the GHC module Language.Haskell.Parser.+Some of the code for extensions is greatly influenced by GHC's internal parser+library, ghc/compiler/parser/Parser.y.+-----------------------------------------------------------------------------+Conflicts: 7 shift/reduce++2 for ambiguity in 'case x of y | let z = y in z :: Bool -> b'  [State 99, 186]+        (don't know whether to reduce 'Bool' as a btype or shift the '->'.+         Similarly lambda and if. The default resolution in favour of the+         shift means that a guard can never end with a type signature.+         In mitigation: it's a rare case and no Haskell implementation+         allows these, because it would require unbounded lookahead.)+        There are 2 conflicts rather than one because contexts are parsed+        as btypes (cf ctype).++1 for ambiguity in 'let ?x ...'                     [State 604]+        the parser can't tell whether the ?x is the lhs of a normal binding or+        an implicit binding. Fortunately resolving as shift gives it the only+        sensible meaning, namely the lhs of an implicit binding.++1 for ambiguity using hybrid modules                [State 159]+        For HSP pages that start with a <% %> block, the parser cannot tell whether+        to reduce a srcloc or shift the starting <%. Since any other body could not+        start with <%, shifting is the only sensible thing to do.++1 for ambiguity using toplevel xml modules          [State 158]+        For HSP xml pages starting with a <, the parser cannot tell whether to shift+        that < or reduce an implicit 'open'. Since no other body could possibly start+        with <, shifting is the only sensible thing to do.++1 for ambiguity in '{-# RULES "name" [ ... #-}'     [State 177]+        we don't know whether the '[' starts the activation or not: it+        might be the start of the declaration with the activation being+        empty. Resolving with shift means the declaration cannot start with '['.++1 for ambiguity in '{-# RULES "name" forall = ... #-}'  [State 544]+        since 'forall' is a valid variable name, we don't know whether+        to treat a forall on the input as the beginning of a quantifier+        or the beginning of the rule itself.  Resolving to shift means+        it's always treated as a quantifier, hence the above is disallowed.+        This saves explicitly defining a grammar for the rule lhs that+        doesn't include 'forall'.++-----------------------------------------------------------------------------++> %token+>       VARID    { Loc _ (VarId _) }       -- 1+>       LABELVARID { Loc _ (LabelVarId _) }+>       QVARID   { Loc _ (QVarId _) }+>       IDUPID   { Loc _ (IDupVarId _) }       -- duplicable implicit parameter ?x+>       ILINID   { Loc _ (ILinVarId _) }       -- linear implicit parameter %x+>       CONID    { Loc _ (ConId _) }+>       QCONID   { Loc _ (QConId _) }+>       DVARID   { Loc _ (DVarId _) }          -- VARID containing dashes+>       VARSYM   { Loc _ (VarSym _) }+>       CONSYM   { Loc _ (ConSym _) }+>       QVARSYM  { Loc _ (QVarSym _) } -- 10+>       QCONSYM  { Loc _ (QConSym _) }+>       INT      { Loc _ (IntTok _) }+>       RATIONAL { Loc _ (FloatTok _) }+>       CHAR     { Loc _ (Character _) }+>       STRING   { Loc _ (StringTok _) }++>       PRIMINT     { Loc _ (IntTokHash _) }+>       PRIMWORD    { Loc _ (WordTokHash _) }+>       PRIMFLOAT   { Loc _ (FloatTokHash _) }+>       PRIMDOUBLE  { Loc _ (DoubleTokHash _) }+>       PRIMCHAR    { Loc _ (CharacterHash _) } -- 20+>       PRIMSTRING  { Loc _ (StringHash _) }++Symbols++>       '('     { Loc $$ LeftParen }+>       ')'     { Loc $$ RightParen }+>       '(#'    { Loc $$ LeftHashParen }+>       '#)'    { Loc $$ RightHashParen }+>       ';'     { Loc $$ SemiColon }+>       '{'     { Loc $$ LeftCurly }+>       '}'     { Loc $$ RightCurly }      -- 30+>       vccurly { Loc $$ VRightCurly }                 -- a virtual close brace+>       '['     { Loc $$ LeftSquare }+>       ']'     { Loc $$ RightSquare }+>       '[:'    { Loc $$ ParArrayLeftSquare }+>       ':]'    { Loc $$ ParArrayRightSquare }+>       ','     { Loc $$ Comma }+>       '_'     { Loc $$ Underscore }+>       '`'     { Loc $$ BackQuote }++Reserved operators++>       '.'     { Loc $$ Dot }+>       '..'    { Loc $$ DotDot }+>       ':'     { Loc $$ Colon }+>       '::'    { Loc $$ DoubleColon }      -- 40+>       '='     { Loc $$ Equals }+>       '\\'    { Loc $$ Backslash }+>       '|'     { Loc $$ Bar }+>       '<-'    { Loc $$ LeftArrow }+>       '->'    { Loc $$ RightArrow }+>       '@'     { Loc $$ At }+>       TYPEAPP { Loc $$ TApp }+>       '~'     { Loc $$ Tilde }+>       '=>'    { Loc $$ DoubleArrow }+>       '-'     { Loc $$ Minus }+>       '!'     { Loc $$ Exclamation }  -- 50+>       '*'     { Loc $$ Star }++Arrows++>       '-<'    { Loc $$ LeftArrowTail }+>       '>-'    { Loc $$ RightArrowTail }+>       '-<<'   { Loc $$ LeftDblArrowTail }+>       '>>-'   { Loc $$ RightDblArrowTail }+>       '(|'    { Loc $$ OpenArrowBracket }+>       '|)'    { Loc $$ CloseArrowBracket }++Harp++>       '(/'    { Loc $$ RPGuardOpen }+>       '/)'    { Loc $$ RPGuardClose }+>       '@:'    { Loc $$ RPCAt }++Template Haskell++>       IDSPLICE        { Loc _ (THIdEscape _) }   -- $x+>       TIDSPLICE       { Loc _ (THTIdEscape _) }  -- $$x+>       '$('            { Loc $$ THParenEscape } -- 60+>       '$$('           { Loc $$ THTParenEscape }+>       '[|'            { Loc $$ THExpQuote }+>       '[||'           { Loc $$ THTExpQuote }+>       '[p|'           { Loc $$ THPatQuote }+>       '[t|'           { Loc $$ THTypQuote }+>       '[d|'           { Loc $$ THDecQuote }+>       '|]'            { Loc $$ THCloseQuote }+>       '||]'           { Loc $$ THTCloseQuote }+>       VARQUOTE        { Loc $$ THVarQuote }      -- 'x+>       TYPQUOTE        { Loc $$ THTyQuote }       -- ''T+>       QUASIQUOTE      { Loc _ (THQuasiQuote _) }++Hsx++>       PCDATA          { Loc _ (XPCDATA _) }+>       '<'             { Loc $$ XStdTagOpen }   -- 70+>       '</'            { Loc $$ XCloseTagOpen }+>       '<%'            { Loc $$ XCodeTagOpen }+>       '<%>'           { Loc $$ XChildTagOpen }+>       '>'             { Loc $$ XStdTagClose }+>       '/>'            { Loc $$ XEmptyTagClose }+>       '%>'            { Loc $$ XCodeTagClose }+>       '<['            { Loc $$ XRPatOpen }+>       ']>'            { Loc $$ XRPatClose }++FFI++>       'foreign'       { Loc $$ KW_Foreign }+>       'export'        { Loc $$ KW_Export }    -- 80+>       'safe'          { Loc $$ KW_Safe }+>       'unsafe'        { Loc $$ KW_Unsafe }+>       'threadsafe'    { Loc $$ KW_Threadsafe }+>       'interruptible' { Loc $$ KW_Interruptible }+>       'stdcall'       { Loc $$ KW_StdCall }+>       'ccall'         { Loc $$ KW_CCall }+>       'cplusplus'     { Loc $$ KW_CPlusPlus }+>       'dotnet'        { Loc $$ KW_DotNet }+>       'jvm'           { Loc $$ KW_Jvm }+>       'js'            { Loc $$ KW_Js }          -- 90+>       'javascript'    { Loc $$ KW_JavaScript }+>       'capi'          { Loc $$ KW_CApi }++Reserved Ids++>       'as'            { Loc $$ KW_As }+>       'by'            { Loc $$ KW_By }       -- transform list comprehensions+>       'case'          { Loc $$ KW_Case }+>       'class'         { Loc $$ KW_Class }+>       'data'          { Loc $$ KW_Data }+>       'default'       { Loc $$ KW_Default }+>       'deriving'      { Loc $$ KW_Deriving }+>       'do'            { Loc $$ KW_Do }+>       'else'          { Loc $$ KW_Else }     -- 100+>       'family'        { Loc $$ KW_Family }   -- indexed type families+>       'forall'        { Loc $$ KW_Forall }   -- universal/existential qualification+>       'group'         { Loc $$ KW_Group }    -- transform list comprehensions+>       'hiding'        { Loc $$ KW_Hiding }+>       'if'            { Loc $$ KW_If }+>       'import'        { Loc $$ KW_Import }+>       'in'            { Loc $$ KW_In }+>       'infix'         { Loc $$ KW_Infix }+>       'infixl'        { Loc $$ KW_InfixL }+>       'infixr'        { Loc $$ KW_InfixR }        -- 110+>       'instance'      { Loc $$ KW_Instance }+>       'let'           { Loc $$ KW_Let }+>       'mdo'           { Loc $$ KW_MDo }+>       'module'        { Loc $$ KW_Module }         -- 114+>       'newtype'       { Loc $$ KW_NewType }+>       'of'            { Loc $$ KW_Of }+>       'proc'          { Loc $$ KW_Proc }     -- arrows+>       'rec'           { Loc $$ KW_Rec }      -- arrows or RecursiveDo+>       'then'          { Loc $$ KW_Then }+>       'type'          { Loc $$ KW_Type }     -- 120+>       'using'         { Loc $$ KW_Using }    -- transform list comprehensions+>       'where'         { Loc $$ KW_Where }+>       'qualified'     { Loc $$ KW_Qualified }+>       'role'          { Loc $$ KW_Role }+>       'pattern'       { Loc $$ KW_Pattern }+>       'stock'         { Loc $$ KW_Stock }    -- for DerivingStrategies extension+>       'anyclass'      { Loc $$ KW_Anyclass } -- for DerivingStrategies extension+>       'via'           { Loc $$ KW_Via }      -- for DerivingStrategies extension++Pragmas++>       '{-# INLINE'            { Loc _ (INLINE _) }+>       '{-# INLINE CONLIKE'    { Loc $$ INLINE_CONLIKE }+>       '{-# SPECIALISE'        { Loc $$ SPECIALISE }+>       '{-# SPECIALISE INLINE' { Loc _ (SPECIALISE_INLINE _) }+>       '{-# SOURCE'            { Loc $$ SOURCE }+>       '{-# RULES'             { Loc $$ RULES }+>       '{-# CORE'              { Loc $$ CORE }         -- 130+>       '{-# SCC'               { Loc $$ SCC }+>       '{-# GENERATED'         { Loc $$ GENERATED }+>       '{-# DEPRECATED'        { Loc $$ DEPRECATED }+>       '{-# WARNING'           { Loc $$ WARNING }+>       '{-# UNPACK'            { Loc $$ UNPACK }+>       '{-# NOUNPACK'          { Loc $$ NOUNPACK }+>       '{-# OPTIONS'           { Loc _ (OPTIONS _) }+       '{-# CFILES'            { Loc _ (CFILES  _) }+       '{-# INCLUDE'           { Loc _ (INCLUDE _) }+>       '{-# LANGUAGE'          { Loc $$ LANGUAGE }      -- 137+>       '{-# ANN'               { Loc $$ ANN }+>       '{-# MINIMAL'           { Loc $$ MINIMAL }+>       '{-# NO_OVERLAP'        { Loc $$ NO_OVERLAP }+>       '{-# OVERLAP'           { Loc $$ OVERLAP }+>       '{-# OVERLAPS'          { Loc $$ OVERLAPS }+>       '{-# OVERLAPPING'       { Loc $$ OVERLAPPING }+>       '{-# OVERLAPPABLE'      { Loc $$ OVERLAPPABLE }+>       '{-# INCOHERENT'        { Loc $$ INCOHERENT }+>       '{-# COMPLETE'          { Loc $$ COMPLETE }+>       '#-}'                   { Loc $$ PragmaEnd }      -- 139++Utility++>       NEVER                   { Loc $$@SrcSpan{srcSpanStartLine= -1} _ } -- never-matching terminal of type SrcSpan++> %monad { P }+> %lexer { lexer } { Loc _ EOF }+> %error { parseError }+> %name mparseModule page+> %name mparseExp trueexp+> %name mparsePat pat+> %name mparseDeclAux body+> %name mparseType truectype+> %name mparseStmt stmt+> %name mparseImportDecl impdecl+> %partial ngparseModulePragmas toppragmas+> %partial ngparseModuleHeadAndImports moduletopimps+> %partial ngparsePragmasAndModuleHead moduletophead+> %partial ngparsePragmasAndModuleName moduletopname+> %tokentype { Loc Token }+> %expect 13+> %%++-----------------------------------------------------------------------------+Testing multiple modules in one file++> modules :: { [Module L] }+>         : toppragmas modules1         { let (os,ss,l) = $1 in map (\x -> x os ss l) $2 }++> modules1 :: { [[ModulePragma L] -> [S] -> L -> Module L] }+>         : module modules1             { $1 : $2 }+>         | module                      { [$1] }++-----------------------------------------------------------------------------+HSP Pages++Any HSP-specific parts requiring the XmlSyntax extension enabled will+be governed by the lexing, since all productions require at least one+special lexeme.++TODO: Yuck, this is messy, needs fixing in the AST!++> page :: { Module L }+>       : toppragmas topxml                            {% checkPageModule $2 $1 }+>       | toppragmas '<%' module '%>' topxml           {% let (os,ss,l) = $1 in checkHybridModule $5 ($3 os ss l) $2 $4 }+>       | toppragmas module                            { let (os,ss,l) = $1 in $2 os ss l }++> topxml :: { PExp L }+>       : '<' name attrs mattr '>' children '</' name '>'        {% do { n <- checkEqNames $2 $8;+>                                                                        let { cn = reverse $6;+>                                                                              as = reverse $3; };+>                                                                        return $ XTag ($1 <^^> $9 <** [$1,$5,$7,$9]) n as $4 cn } }+>       | '<' name attrs mattr '/>'                              { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }+++> toppragmas :: { ([ModulePragma L],[S],L) }+>           : open toppragmasaux close          { let (os,ss,ml) = $2 in (os,$1:ss++[$3],$1 <^^> $3) }++> toppragmasaux :: { ([ModulePragma L],[S],Maybe L) }+>               : toppragma optsemis toppragmasaux      { let (os,ss,ml) = $3;+>                                                              ss' = reverse $2 ++ ss;+>                                                              l'  = case $2 of+>                                                                     [] -> ann $1+>                                                                     _  -> ann $1 <++> nIS (last $2);+>                                                          in ($1 : os, ss', Just $ l'  <+?> ml) }+>               | {- nothing -}                         { ([],[],Nothing) }++> toppragma :: { ModulePragma L }+>           : '{-# LANGUAGE' conids optsemis '#-}'   { LanguagePragma ($1 <^^> $4 <** ($1:snd $2 ++ reverse $3 ++ [$4])) (fst $2) }+>           | '{-# OPTIONS' optsemis '#-}'           { let Loc l (OPTIONS (mc, s)) = $1+>                                                       in OptionsPragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) (readTool mc) s }+>           | '{-# ANN' annotation '#-}'             { AnnModulePragma ($1 <^^> $3 <** [$1,$3]) $2 }+++> conids    :: { ([Name L],[S]) }+>          : conids ',' conid                  { (fst $1 ++ [$3], snd $1 ++ [$2]) }+>          | optsemis conid                    { ([$2],[]) }++-----------------------------------------------------------------------------+Module Header++> module :: { [ModulePragma L] -> [S] -> L -> Module L }+>       : optmodulehead body+>               { let (is,ds,ss1,inf) = $2+>                  in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) $1 os is ds }++> optmodulehead :: { Maybe (ModuleHead L) }+>       : 'module' modid maybemodwarning maybeexports 'where'   { Just $ ModuleHead ($1 <^^> $5 <** [$1,$5]) $2 $3 $4 }+>       | {- empty -}                                           { Nothing }++> maybemodwarning ::  { Maybe (WarningText L) }+>       : '{-# DEPRECATED' STRING '#-}'         { let Loc l (StringTok (s,_)) = $2 in Just $ DeprText ($1 <^^> $3 <** [$1,l,$3]) s }+>       | '{-# WARNING'    STRING '#-}'         { let Loc l (StringTok (s,_)) = $2 in Just $ WarnText ($1 <^^> $3 <** [$1,l,$3]) s }+>       | {- empty -}                           { Nothing }++> body :: { ([ImportDecl L],[Decl L],[S],L) }+>       : '{'  bodyaux '}'                      { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }++Trailing optsemis in the next line is a workaround for #25. Having the optsemis+here causes one more shift/reduce conflict.++>       | open bodyaux close optsemis           { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }++> bodyaux :: { ([ImportDecl L],[Decl L],[S]) }+>       : optsemis impdecls semis topdecls      { (reverse (fst $2), fst $4, reverse $1 ++ snd $2 ++ reverse $3 ++ snd $4) }+>       | optsemis                topdecls      { ([], fst $2, reverse $1 ++ snd $2) }+>       | optsemis impdecls optsemis            { (reverse (fst $2), [], reverse $1 ++ snd $2 ++ reverse $3) }+>       | optsemis                              { ([], [], reverse $1) }++> semis :: { [S] }+>       : optsemis ';'                          { $2 : $1 }++> optsemis :: { [S] }+>       : semis                                 { $1 }+>       | {- empty -}                           { [] }++-----------------------------------------------------------------------------+The Export List++> maybeexports :: { Maybe (ExportSpecList L) }+>       :  exports                              { Just $1 }+>       |  {- empty -}                          { Nothing }++> exports :: { ExportSpecList L }+>       : '(' exportlist optcomma ')'           { ExportSpecList ($1 <^^> $4 <** ($1:reverse (snd $2) ++ $3 ++ [$4])) (reverse (fst $2)) }+>       | '(' optcomma ')'                      { ExportSpecList ($1 <^^> $3 <** ($1:$2++[$3])) [] }++> optcomma :: { [S] }+>       : ','                                   { [$1] }+>       | {- empty -}                           { [  ] }++> exportlist :: { ([ExportSpec L],[S]) }+>       :  exportlist ',' export                { ($3 : fst $1, $2 : snd $1) }+>       |  export                               { ([$1],[])  }++> export :: { ExportSpec L }+>       :  qvar                                 { EVar (ann $1) $1 }+>       |  'type' qcname                          {% do { checkEnabled ExplicitNamespaces;+>                                                       return (EAbs (nIS $1 <++> ann $2 <** [$1, srcInfoSpan (ann $2)]) (TypeNamespace (nIS $1 <** [$1])) $2) } }+>       |  qtyconorcls                          { EAbs (ann $1) (NoNamespace (ann $1)) $1 }+>       |  qtyconorcls '(' ')'                  { EThingWith (ann $1 <++> nIS $3 <** [$2,$3])    (NoWildcard noSrcSpan) $1 [] }+>       |  qtyconorcls '(' export_names ')'     {% mkEThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse $ fst $3) }+>       |  'module' modid                       { EModuleContents (nIS $1 <++> ann $2 <** [$1]) $2 }+>       |  'pattern' qcon                       {%  do { checkEnabled PatternSynonyms;+>                                                       return $ EAbs (nIS $1 <++> (ann $2) <** [$1])+>                                                                  (PatternNamespace (nIS $1)) $2 }}++> export_names :: { ([Either S (CName L)],[S]) }+>       :  export_names ',' cname_w_wildcard          { ($3 : fst $1, $2 : snd $1) }+>       |  cname_w_wildcard                     { ([$1],[])  }++> cname_w_wildcard :: { Either S (CName L) }+>       :  '..'                                 { Left $1 }+>       |  cname                                { Right $1 }++>+> qcname :: { QName L }+>        : qvar                                 { $1 }+>        | qcon                                 { $1 }++-----------------------------------------------------------------------------+Import Declarations++> impdecls :: { ([ImportDecl L],[S]) }+>       : impdecls semis impdecl                { ($3 : fst $1, snd $1 ++ reverse $2) }+>       | impdecl                               { ([$1],[]) }++> impdecl :: { ImportDecl L }+>       : 'import' optsrc optsafe optqualified maybepkg modid optqualified_post maybeas maybeimpspec+>                               { let { (mmn,ss,ml) = $8 ;+>                                       l = nIS $1 <++> ann $6 <+?> ml <+?> (fmap ann) $9 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ snd $5 ++ snd $7 ++ ss)}+>                                  in ImportDecl l $6 (fst $4 || fst $7) (fst $2) (fst $3) (fst $5) mmn $9 }++> optsrc :: { (Bool,[S]) }+>       : '{-# SOURCE' '#-}'                    { (True,[$1,$2]) }+>       | {- empty -}                           { (False,[]) }++> optsafe :: { (Bool,[S]) }+>       : 'safe'                           {% do { checkEnabledOneOf [Safe, SafeImports, Trustworthy] ;+>                                                  return (True, [$1]) } }+>       | {- empty -}                      { (False, []) }++> optqualified :: { (Bool,[S]) }+>       : 'qualified'                           { (True,[$1]) }+>       | {- empty -}                           { (False, []) }++> optqualified_post :: { (Bool,[S]) }+>       : 'qualified'                           {% do { checkEnabled ImportQualifiedPost;+>                                                       return (True,[$1]) } }+>       | {- empty -}                           { (False, []) }++Requires the PackageImports extension enabled.+> maybepkg :: { (Maybe String,[S]) }+>       : STRING                                {% do { checkEnabled PackageImports ;+>                                                       let { Loc l (StringTok (s,_)) = $1 } ;+>                                                       return $ (Just s,[l]) } }+>       | {- empty -}                           { (Nothing,[]) }++> maybeas :: { (Maybe (ModuleName L),[S],Maybe L) }+>       : 'as' modid                            { (Just $2,[$1],Just (nIS $1 <++> ann $2)) }+>       | {- empty -}                           { (Nothing,[],Nothing) }+++> maybeimpspec :: { Maybe (ImportSpecList L) }+>       : impspec                               { Just $1 }+>       | {- empty -}                           { Nothing }++> impspec :: { ImportSpecList L }+>       : opthiding '(' importlist optcomma ')' { let {(b,ml,s) = $1 ;+>                                                       l = (ml <?+> ($2 <^^> $5)) <** (s ++ $2:reverse (snd $3) ++ $4 ++ [$5])}+>                                                  in ImportSpecList l b (reverse (fst $3)) }+>       | opthiding '(' optcomma ')'            { let {(b,ml,s) = $1 ; l = (ml <?+> ($2 <^^> $4)) <** (s ++ $2:$3 ++ [$4])}+>                                                  in ImportSpecList l b [] }++> opthiding :: { (Bool, Maybe L,[S]) }+>       : 'hiding'                              { (True,Just (nIS $1),[$1]) }+>       | {- empty -}                           { (False,Nothing,[])  }++> importlist :: { ([ImportSpec L],[S]) }+>       :  importlist ',' importspec            { ($3 : fst $1, $2 : snd $1) }+>       |  importspec                           { ([$1],[])  }++> importspec :: { ImportSpec L }+>       :  var                                  { IVar (ann $1) $1 }+>       |  'type' var                           {% do { checkEnabled ExplicitNamespaces;+>                                                       return (IAbs (nIS $1 <++> ann $2 <** [$1, srcInfoSpan (ann $2)]) (TypeNamespace (nIS $1 <** [$1])) $2) } }+>       |  'pattern' con                        {% do { checkEnabled PatternSynonyms;+>                                                       return (IAbs (nIS $1 <++> ann $2 <** [$1, srcInfoSpan (ann $2)]) (PatternNamespace (nIS $1 <** [$1])) $2) } }+>       |  tyconorcls                           { IAbs (ann $1) (NoNamespace (ann $1)) $1 }+>       |  tyconorcls '(' '..' ')'              { IThingAll  (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }+>       |  tyconorcls '(' ')'                   { IThingWith (ann $1 <++> nIS $3 <** [$2,$3])    $1 [] }+>       |  tyconorcls '(' import_names ')'            { IThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }++> import_names :: { ([CName L],[S]) }+>       :  import_names ',' cname               { ($3 : fst $1, $2 : snd $1) }+>       |  cname                                { ([$1],[])  }++> cname :: { CName L }+>       :  var                                  { VarName (ann $1) $1 }+>       |  con                                  { ConName (ann $1) $1 }++-----------------------------------------------------------------------------+Fixity Declarations++> fixdecl :: { Decl L }+>       : infix prec ops                        { let (ops,ss,l) = $3+>                                                  in InfixDecl (ann $1 <++> l <** (snd $2 ++ reverse ss)) $1 (fst $2) (reverse ops) }++> prec :: { (Maybe Int, [S]) }+>       : {- empty -}                           { (Nothing, []) }+>       | INT                                   {% let Loc l (IntTok (i,_)) = $1 in checkPrec i >>= \i -> return (Just i, [l]) }++> infix :: { Assoc L }+>       : 'infix'                               { AssocNone  $ nIS $1 }+>       | 'infixl'                              { AssocLeft  $ nIS $1 }+>       | 'infixr'                              { AssocRight $ nIS $1 }++> ops   :: { ([Op L],[S],L) }+>       : ops ',' op                            { let (ops,ss,l) = $1 in ($3 : ops, $2 : ss, l <++> ann $3) }+>       | op                                    { ([$1],[],ann $1) }+++> opt_injectivity_info :: { Maybe (InjectivityInfo L) }+>        : {- empty -}                  { Nothing }+>        | injectivity_info             { Just $1 }++> injectivity_info :: { InjectivityInfo L }+>        : '|' tyvarid '->' inj_varids+>              { InjectivityInfo (nIS $1 <++> ann (last $4) <** [$1,$3]) $2 (reverse $4) }+>+>+> inj_varids :: { [Name L] }+>        : inj_varids tyvarid  { $2 : $1 }+>        | tyvarid             { [$1]     }++-----------------------------------------------------------------------------+Top-Level Declarations++Note: The report allows topdecls to be empty. This would result in another+shift/reduce-conflict, so we don't handle this case here, but in bodyaux.++> topdecls :: { ([Decl L],[S]) }+>       : topdecls1 optsemis            {% checkRevDecls (fst $1) >>= \ds -> return (ds, snd $1 ++ reverse $2) }++> topdecls1 :: { ([Decl L],[S]) }+>       : topdecls1 semis topdecl       { ($3 : fst $1, snd $1 ++ reverse $2) }+>       | topdecl                       { ([$1],[]) }++> topdecl :: { Decl L }+>       : role_annot                    {% checkEnabled RoleAnnotations >> return $1 }+>       | 'type' dtype '=' truectype+>                {% do { dh <- checkSimpleType $2;+>                        let {l = nIS $1 <++> ann $4 <** [$1,$3]};+>                        return (TypeDecl l dh $4) } }++Requires the TypeFamilies extension enabled, but the lexer will handle+that through the 'family' keyword.+>       | 'type' 'family' type opt_tyfam_kind_sig opt_injectivity_info where_type_family+>                {% do { dh <- checkSimpleType $3;+>                        let {l = nIS $1 <++> ann $3 <** [$1,$2]};+>                        case $6 of {+>                          Nothing    -> return (TypeFamDecl l dh $4 $5);+>                          Just (x,a) -> return (ClosedTypeFamDecl (l <** [a]) dh $4 $5 x); }}}++Here there is no special keyword so we must do the check.+>       | 'type' 'instance' truedtype '=' truectype+>                {% do { -- no checkSimpleType $4 since dtype may contain type patterns+>                        checkEnabled TypeFamilies ;+>                        let {l = nIS $1 <++> ann $5 <** [$1,$2,$4]};+>                        return (TypeInsDecl l $3 $5) } }+>       | data_or_newtype ctype constrs0 maybe_derivings+>                {% do { (cs,dh) <- checkDataHeader $2;+>                        let { (qds,ss,minf) = $3;+>                              l = $1 <> $2 <+?> minf <+?> fmap ann (listToMaybe $4) <** ss};+>                        checkDataOrNew $1 qds;+>                        return (DataDecl l $1 cs dh (reverse qds) (reverse $4)) } }++Requires the GADTs extension enabled, handled in gadtlist.+>       | data_or_newtype ctype optkind gadtlist maybe_derivings+>                {% do { (cs,dh) <- checkDataHeader $2;+>                        let { (gs,ss,minf) = $4;+>                              derivs' = reverse $5;+>                              l = ann $1 <+?> minf <+?> fmap ann (listToMaybe $5) <** (snd $3 ++ ss)};+>                        checkDataOrNewG $1 gs;+>                        case (gs, fst $3) of+>                         ([], Nothing) -> return (DataDecl l $1 cs dh [] derivs')+>                         _ -> checkEnabled GADTs >> return (GDataDecl l $1 cs dh (fst $3) (reverse gs) derivs') } }++Same as above, lexer will handle it through the 'family' keyword.+>       | 'data' 'family' ctype opt_datafam_kind_sig+>                {% do { (cs,dh) <- checkDataHeader $3;+>                        let {l = nIS $1 <++> ann $3 <+?> (fmap ann) $4 <** [$1,$2]};+>                        return (DataFamDecl l cs dh $4) } }++Here we must check for TypeFamilies.+>       | data_or_newtype 'instance' truectype constrs0 maybe_derivings+>                {% do { -- (cs,c,t) <- checkDataHeader $4;+>                        checkEnabled TypeFamilies ;+>                        let { (qds,ss,minf) = $4 ;+>                              l = $1 <> $3 <+?> minf <+?> fmap ann (listToMaybe $5) <** $2:ss };+>                        checkDataOrNew $1 qds;+>                        return (DataInsDecl l $1 $3 (reverse qds) (reverse $5)) } }++This style requires both TypeFamilies and GADTs, the latter is handled in gadtlist.+>       | data_or_newtype 'instance' truectype optkind gadtlist maybe_derivings+>                {% do { -- (cs,c,t) <- checkDataHeader $4;+>                        checkEnabled TypeFamilies ;+>                        let {(gs,ss,minf) = $5;+>                             derivs' = reverse $6;+>                             l = ann $1 <+?> minf <+?> fmap ann (listToMaybe derivs') <** ($2:snd $4 ++ ss)};+>                        checkDataOrNewG $1 gs;+>                        return (GDataInsDecl l $1 $3 (fst $4) (reverse gs) derivs') } }+>       | 'class' ctype fds optcbody+>                {% do { (cs,dh) <- checkClassHeader $2;+>                        let {(fds,ss1,minf1) = $3;(mcs,ss2,minf2) = $4} ;+>                        let { l = nIS $1 <++> ann $2 <+?> minf1 <+?> minf2 <** ($1:ss1 ++ ss2)} ;+>                        return (ClassDecl l cs dh fds mcs) } }+>       | 'instance' optoverlap ctype optvaldefs+>                {% do { ih <- checkInstHeader $3;+>                        let {(mis,ss,minf) = $4};+>                        return (InstDecl (nIS $1 <++> ann $3 <+?> minf <** ($1:ss)) $2 ih mis) } }++Requires the StandaloneDeriving extension enabled.+>       | 'deriving' deriv_standalone_strategy 'instance' optoverlap ctype+>                {% do { checkEnabled StandaloneDeriving ;+>                        ih <- checkInstHeader $5;+>                        let {l = nIS $1 <++> ann $5 <** [$1,$3]};+>                        return (DerivDecl l $2 $4 ih) } }+>       | 'default' '(' typelist ')'+>                { DefaultDecl ($1 <^^> $4 <** ($1:$2 : snd $3 ++ [$4])) (fst $3) }++Requires the TemplateHaskell extension, but the lexer will handle that+through the '$(' lexeme.+CHANGE: Arbitrary top-level expressions are considered implicit splices+>       | exp0             {% do+>               checkToplevel $1+>               checkExpr $1 >>= \e -> return (SpliceDecl (ann e) e)+>                  }++       | '$(' trueexp ')'  { let l = $1 <^^> $3 <** [$1,$3] in SpliceDecl l $ ParenSplice l $2 }+       | '$$(' trueexp ')' { let l = $1 <^^> $3 <** [$1,$3] in TSpliceDecl l $ TParenSplice l $2 }++These require the ForeignFunctionInterface extension, handled by the+lexer through the 'foreign' (and 'export') keyword.+>       | 'foreign' 'import' callconv safety fspec+>                { let (s,n,t,ss) = $5 in ForImp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 $4 s n t }+>       | 'foreign' 'export' callconv fspec+>                { let (s,n,t,ss) = $4 in ForExp (nIS $1 <++> ann t <** ($1:$2:ss)) $3    s n t }++>       | '{-# RULES'      rules      '#-}'     { RulePragmaDecl ($1 <^^> $3 <** [$1,$3]) $ reverse $2 }+>       | '{-# DEPRECATED' warndeprs  '#-}'     { DeprPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }+>       | '{-# WARNING'    warndeprs  '#-}'     { WarnPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }+>       | '{-# ANN'        annotation '#-}'     { AnnPragma      ($1 <^^> $3 <** [$1,$3]) $2 }+>       | '{-# COMPLETE' con_list opt_tyconsig '#-}'+>           { let com = maybe [] ((:[]) . fst) $3; ts = fmap snd $3 in+> (CompletePragma ($1 <^^> $4 <** ([$1] ++ fst $2 ++ com ++ [$4])) (snd $2) ts) }+>       | decl          { $1 }++> -- Family result/return kind signatures+>+> opt_datafam_kind_sig :: { Maybe (ResultSig L) }+>        :               { Nothing     }+>        | '::' kind     { (Just $ KindSig (nIS $1 <++> ann $2 <** [$1]) $2) }+>+> opt_tyfam_kind_sig :: { Maybe (ResultSig L) }+>        :              { Nothing       }+>        | '::' kind    { (Just $ KindSig  (nIS $1 <++> ann $2 <** [$1]) $2) }+>        | '='  ktyvar  { (Just $ TyVarSig (nIS $1 <++> ann $2 <** [$1]) $2) }+>+> opt_at_kind_inj_sig :: { (Maybe (ResultSig L), Maybe (InjectivityInfo L))}+>        :            { (Nothing, Nothing) }+>        | '::' kind  { (Just (KindSig (nIS $1 <++> ann $2 <** [$1]) $2), Nothing) }+>        | '='  ktyvar injectivity_info+>                { (Just (TyVarSig (nIS $1 <++> ann $2 <** [$1]) $2), Just $3) }++> opt_at_kind_inj_sig2 :: { (Maybe (ResultSig L), Maybe (S, Type L), Maybe (InjectivityInfo L))}+>        :            { (Nothing, Nothing, Nothing) }+>        | '::' kind  { (Just (KindSig (nIS $1 <++> ann $2 <** [$1]) $2), Nothing, Nothing) }+>        | '='  truectype opt_injectivity_info { (Nothing, Just ($1, $2), $3) }+++Role annotations++> role_annot :: { Decl L }+> role_annot : 'type' 'role' otycon roles+>                {% mkRoleAnnotDecl $1 $2 $3 (reverse $4)  }++-- Reversed!+> roles :: { [(Maybe String, L)] }+> roles : {- empty -}      { [] }+>       | roles role       { $2 : $1 }++> -- read it in as a varid for better error messages+> role :: { (Maybe String, L) }+> role : VARID             { let (VarId v) = unLoc $1 in (Just v, nIS $ loc $1) }+>      | '_'               { (Nothing, nIS $1) }++++> optoverlap :: { Maybe (Overlap L) }+>  : '{-# OVERLAP'      '#-}'    { Just (Overlap (nIS $1)) }+>  | '{-# OVERLAPS'     '#-}'    { Just (Overlaps (nIS $1)) }+>  | '{-# OVERLAPPING'  '#-}'    { Just (Overlapping (nIS $1)) }+>  | '{-# OVERLAPPABLE' '#-}'    { Just (Overlappable (nIS $1)) }+>  | '{-# INCOHERENT' '#-}'    { Just (Incoherent (nIS $1)) }+>  | '{-# NO_OVERLAP' '#-}'    { Just (NoOverlap (nIS $1))  }+>  | {- empty -}               { Nothing }++Parsing the body of a closed type family, partially stolen from the source of GHC.+> where_type_family :: { Maybe ([TypeEqn L], S) }+>         : {- empty -}                  { Nothing }+>         | 'where' ty_fam_inst_eqn_list { Just ($2, $1) }++> ty_fam_inst_eqn_list :: { [TypeEqn L] }+>         : '{'  ty_fam_inst_eqns '}'     { $2 }+>         | open ty_fam_inst_eqns close   { $2 }++> ty_fam_inst_eqns :: { [TypeEqn L] }+>         : ty_fam_inst_eqns ';' ty_fam_inst_eqn   { $1 ++ [$3] }+>         | ty_fam_inst_eqns ';'                   { $1 }+>         | ty_fam_inst_eqn                        { [$1] }+>         |                                        { [] }++> ty_fam_inst_eqn :: { TypeEqn L }+>         : truectype '=' truectype+>                 {% do { checkEnabled TypeFamilies ;+>                         return (TypeEqn (ann $1 <++> ann $3 <** [$2]) $1 $3) } }++> data_or_newtype :: { DataOrNew L }+>       : 'data'    { DataType $ nIS $1 }+>       | 'newtype' { NewType  $ nIS $1 }++> typelist :: { ([Type L],[S]) }+>       : types                         {% do { ts <- mapM checkType (fst $1);+>                                               return $ (reverse ts, reverse (snd $1)) } }+>       | truetype                      { ([$1],[]) }+>       | {- empty -}                   { ([],[]) }++> decls :: { ([Decl L],[S]) }+>       : optsemis decls1 optsemis      {% checkRevDecls (fst $2) >>= \ds -> return (ds, reverse $1 ++ snd $2 ++ reverse $3) }+>       | optsemis                      { ([],reverse $1) }++> decls1 :: { ([Decl L],[S]) }+>       : decls1 semis decl             { ($3 : fst $1, snd $1 ++ reverse $2) }+>       | decl                          { ([$1],[]) }++> decl :: { Decl L }+>       : signdecl                      { $1 }+>       | fixdecl                       { $1 }+>       | valdef                        { $1 }+>       | pat_syn                       { $1 }+>       | pattern_synonym_sig           { $1 }++> decllist :: { Binds L }+>       : '{'  decls '}'                { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }+>       | open decls close              { let l' = if null (fst $2) then nIS $3 else (ann . last $ fst $2)+>                                          in BDecls (nIS $1 <++> l' <** ($1:snd $2++[$3])) (fst $2) }++> signdecl :: { Decl L }+>       : signdecl0                     { $1 }+>       | specinldecl                   { $1 }++> signdecl0 :: { Decl L }+>       : exp0b '::' truectype                           {% do { v <- checkSigVar $1;+>                                                                return $ TypeSig ($1 <> $3 <** [$2]) [v] $3 } }+>       | exp0b ',' vars '::' truectype                  {% do { v <- checkSigVar $1;+>                                                                let {(vs,ss,_) = $3 ; l = $1 <> $5 <** ($2 : reverse ss ++ [$4]) } ;+>                                                                return $ TypeSig l (v : reverse vs) $5 } }++> specinldecl :: { Decl L }+>       : '{-# INLINE' activation qvar '#-}'             { let Loc l (INLINE s) = $1 in InlineSig (l <^^> $4 <** [l,$4]) s $2 $3 }+>       | '{-# INLINE CONLIKE' activation qvar '#-}'     { InlineConlikeSig ($1 <^^> $4 <** [$1,$4]) $2 $3 }+>       | '{-# SPECIALISE' activation qvar '::' sigtypes '#-}'+>             { SpecSig ($1 <^^> $6 <** ($1: $4 : snd $5 ++ [$6])) $2 $3 (fst $5) }+>       | '{-# SPECIALISE INLINE' activation qvar '::' sigtypes '#-}'+>             { let Loc l (SPECIALISE_INLINE s) = $1+>                in SpecInlineSig (l <^^> $6 <** (l:$4:snd $5++[$6])) s $2 $3 (fst $5) }+>       | '{-# SPECIALISE' 'instance' ctype '#-}'        {% do { ih <- checkInstHeader $3;+>                                                                let {l = $1 <^^> $4 <** [$1,$2,$4]};+>                                                                return $ InstSig l ih } }+>       | '{-# MINIMAL' name_boolformula '#-}'           { MinimalPragma ($1 <^^> $3 <** [$1,$3]) $2 }++> sigtypes :: { ([Type L],[S]) }+>       : sigtype                           { ([$1],[]) }+>       | sigtype ',' sigtypes              { ($1 : fst $3, $2 : snd $3) }++> sigtype :: { Type L }+>       : ctype                             {% checkType $ mkTyForall (ann $1) Nothing Nothing $1 }++> name_boolformula :: { Maybe (BooleanFormula L) }+>        : name_boolformula1         { Just $1 }+>        | {- empty -}               { Nothing }++> name_boolformula1 :: { BooleanFormula L }+>        : name_boolformula_and                       { $1 }+>        | name_boolformula_and '|' name_boolformula1 { OrFormula (ann $1 <++>  ann $3 <** [$2]) [$1,$3] }++> name_boolformula_and :: { BooleanFormula L }+>        : name_boolformula_atom                             { $1 }+>        | name_boolformula_atom ',' name_boolformula_and    { AndFormula (ann $1 <++> ann $3 <** [$2]) [$1,$3] }++> name_boolformula_atom :: { BooleanFormula L }+>        : '(' name_boolformula1 ')' { ParenFormula ($1 <^^> $3 <** [$1,$3]) $2 }+>        | var                       { VarFormula (ann $1) $1 }++Binding can be either of implicit parameters, or it can be a normal sequence+of declarations. The two kinds cannot be mixed within the same block of+binding.++> binds :: { Binds L }+>       : decllist                      { $1 }+>       | '{' ipbinds '}'               { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }+>       | open ipbinds close            { let l' =  ann . last $ fst $2+>                                          in IPBinds (nIS $1 <++> l' <** snd $2) (fst $2) }++ATTENTION: Dirty Hackery Ahead! If the second alternative of vars is var+instead of qvar, we get another shift/reduce-conflict. Consider the+following programs:++   { (+) :: ... }          only var+   { (+) x y  = ... }      could (incorrectly) be qvar++We re-use expressions for patterns, so a qvar would be allowed in patterns+instead of a var only (which would be correct). But deciding what the + is,+would require more lookahead. So let's check for ourselves...++> vars  :: { ([Name L],[S],L) }+>       : vars ',' var                  { let (ns,ss,l) = $1 in ($3 : ns, $2 : ss, l <++> ann $3) }+>       | qvar                          {% do { n <- checkUnQual $1;+>                                               return ([n],[],ann n) } }++-----------------------------------------------------------------------------+FFI++These will only be called on in the presence of a 'foreign' keyword,+so no need to check for extensions.++> callconv :: { CallConv L }+>          : 'stdcall'                  { StdCall    (nIS $1) }+>          | 'ccall'                    { CCall      (nIS $1) }+>          | 'cplusplus'                { CPlusPlus  (nIS $1) }+>          | 'dotnet'                   { DotNet     (nIS $1) }+>          | 'jvm'                      { Jvm        (nIS $1) }+>          | 'js'                       { Js         (nIS $1) }+>          | 'javascript'               { JavaScript (nIS $1) }+>          | 'capi'                     { CApi       (nIS $1) }+++> safety :: { Maybe (Safety L) }+>        : 'safe'                       { Just $ PlaySafe  (nIS $1) False }+>        | 'unsafe'                     { Just $ PlayRisky (nIS $1) }+>        | 'threadsafe'                 { Just $ PlaySafe  (nIS $1) True }+>        | 'interruptible'              { Just $ PlayInterruptible (nIS $1) }+>        | {- empty -}                  { Nothing }++> fspec :: { (Maybe String, Name L, Type L, [S]) }+>       : STRING var_no_safety '::' truedtype               { let Loc l (StringTok (s,_)) = $1 in (Just s, $2, $4, [l,$3]) }+>       |        var_no_safety '::' truedtype               { (Nothing, $1, $3, [$2]) }++-----------------------------------------------------------------------------+Pragmas++> rules :: { [Rule L] }+>       : rules ';'rule         { $3 : $1 }+>       | rules ';'             { $1 }+>       | rule                  { [$1] }+>       | {- empty -}           { [] }++> rule :: { Rule L }+>      : STRING activation ruleforall exp0 '=' trueexp      {% do { let {Loc l (StringTok (s,_)) = $1};+>                                                                   e <- checkRuleExpr $4;+>                                                                   return $ Rule (nIS l <++> ann $6 <** l:snd $3 ++ [$5]) s $2 (fst $3) e $6 } }++> activation :: { Maybe (Activation L) }+>        : {- empty -}          { Nothing }+>        | '[' INT ']'          { let Loc l (IntTok (i,_)) = $2 in Just $ ActiveFrom  ($1 <^^> $3 <** [$1,l,$3])    (fromInteger i) }+>        | '[' '~' INT ']'      { let Loc l (IntTok (i,_)) = $3 in Just $ ActiveUntil ($1 <^^> $4 <** [$1,$2,l,$4]) (fromInteger i) }++> ruleforall :: { (Maybe [RuleVar L],[S]) }+>       : {- empty -}                           { (Nothing,[]) }+>       | 'forall' rulevars '.'                 { (Just $2,[$1,$3]) }++> rulevars :: { [RuleVar L] }+>       : rulevar                       { [$1] }+>       | rulevar rulevars              { $1 : $2 }++> rulevar :: { RuleVar L }+>       : varid                             { RuleVar (ann $1) $1 }+>       | '(' varid '::' truectype ')'      { TypedRuleVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }++> warndeprs :: { ([([Name L],String)],[S]) }+>   : warndeprs ';' warndepr            { (fst $3 : fst $1, snd $1 ++ ($2:snd $3)) }+>   | warndeprs ';'                     { (fst $1, snd $1 ++ [$2]) }+>   | warndepr                          { ([fst $1],snd $1) }+>   | {- empty -}                       { ([],[]) }++> warndepr :: { (([Name L], String),[S]) }+>       : namevars STRING               { let Loc l (StringTok (s,_)) = $2 in ((fst $1,s),snd $1 ++ [l]) }++> namevars :: { ([Name L],[S]) }+>           : namevar                   { ([$1],[]) }+>           | namevar ',' namevars      { ($1 : fst $3, $2 : snd $3) }++> namevar :: { Name L }+>         : con                         { $1 }+>         | var                         { $1 }++> annotation :: { Annotation L }+>       : 'type' conid aexp             {% checkExpr $3 >>= \e -> return (TypeAnn   (nIS $1 <++> ann e <** [$1]) $2 e) }+>       | 'module' aexp                 {% checkExpr $2 >>= \e -> return (ModuleAnn (nIS $1 <++> ann e <** [$1])    e) }+>       | namevar aexp                  {% checkExpr $2 >>= \e -> return (Ann ($1 <> e) $1 e) }++-----------------------------------------------------------------------------+Types++Type equality contraints need the TypeFamilies extension.++> truedtype :: { Type L }+>       : dtype                         {% checkType $1 }++> dtype :: { PType L }+>       : dtype_('*',NEVER)              { $1 }++> dtype_(ostar,kstar) :: { PType L }+>       : btype_(ostar,kstar)                                           { splitTilde $1 }+>       | btype_(ostar,kstar) qtyconop dtype_(ostar,kstar)              { TyInfix ($1 <> $3) $1 $2 $3 }+>       | btype_(ostar,kstar) qtyvarop_(ostar) dtype_(ostar,kstar)      { TyInfix ($1 <> $3) $1 (UnpromotedName (ann $2) $2) $3 } -- FIXME+>       | btype_(ostar,kstar) '->' ctype_(ostar,kstar)                  { TyFun ($1 <> $3 <** [$2]) (splitTilde $1) $3 }+       | btype_(ostar,kstar) '~' btype_(ostar,kstar)                    {% do { checkEnabledOneOf [TypeFamilies, GADTs] ;+                                                                                let {l = $1 <> $3 <** [$2]};+                                                                                return $ TyPred l $ EqualP l $1 $3 } }++Implicit parameters can occur in normal types, as well as in contexts.++> truetype :: { Type L }+>       : type                          {% checkType $1 }++> type :: { PType L }+>       : type_('*',NEVER)              { $1 }++> type_(ostar,kstar) :: { PType L }+>       : ivar '::' dtype_(ostar,kstar) { let l = ($1 <> $3 <** [$2]) in TyPred l $ IParam l $1 $3 }+>       | dtype_(ostar,kstar)           { $1 }++> truebtype :: { Type L }+>       : btype                         {% checkType (splitTilde $1) }+> trueatype :: { Type L }+>       : atype                         {% checkType $1 }++> btype :: { PType L }+>       : btype_('*',NEVER)             { $1 }++> btype_(ostar,kstar) :: { PType L }+>       : btype_(ostar,kstar) atype_(ostar,kstar) { TyApp ($1 <> $2) $1 $2 }+>       | atype_(ostar,kstar)           { $1 }++UnboxedTuples requires the extension, but that will be handled through+the (# and #) lexemes. Kinds will be handled at the kind rule.++> atype :: { PType L }+>       : atype_('*',NEVER)             { $1 }++> atype_(ostar,kstar) :: { PType L }+>       : kstar                         { TyStar  (nIS $1) }+>       | gtycon_(ostar)                { TyCon   (ann $1) $1 }+>       | tyvar                         {% checkTyVar $1 }+>       | strict_mark atype             { let (mstrict, mupack) = $1+>                                         in bangType mstrict mupack $2 }+>       | '(' types_(ostar,kstar) ')'                   { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Boxed   (reverse (fst $2)) }+>       | '(#' types_bars2(ostar,kstar) '#)'            { TyUnboxedSum ($1 <^^> $3 <** ($1: reverse ($3: snd $2))) (reverse (fst $2))  }+>       | '(#' types1_(ostar,kstar) '#)'                { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Unboxed (reverse (fst $2)) }+>       | '[' type_(ostar,kstar) ']'                    { TyList  ($1 <^^> $3 <** [$1,$3]) $2 }+>       | '[:' type_(ostar,kstar) ':]'                  { TyParArray  ($1 <^^> $3 <** [$1,$3]) $2 }+>       | '(' ctype_(ostar,kstar) ')'                   { TyParen ($1 <^^> $3 <** [$1,$3]) $2 }+>       | '(' ctype_(ostar,kstar) '::' kind ')'         { TyKind  ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }+>       | '$(' trueexp ')'              { let l = ($1 <^^> $3 <** [$1,$3]) in TySplice l $ ParenSplice l $2 }+>       | '$$(' trueexp ')'             { let l = ($1 <^^> $3 <** [$1,$3]) in TySplice l $ TParenSplice l $2 }+>       | IDSPLICE                      { let Loc l (THIdEscape s) = $1 in TySplice (nIS l) $ IdSplice (nIS l) s }+>       | TIDSPLICE                     { let Loc l (THTIdEscape s) = $1 in TySplice (nIS l) $ TIdSplice (nIS l) s }+>       | '_'                           { TyWildCard (nIS $1) Nothing }+>       | QUASIQUOTE                    { let Loc l (THQuasiQuote (n,q)) = $1 in TyQuasiQuote (nIS l) n q }+>       | ptype_(ostar,kstar)           { % checkEnabled DataKinds >> return (TyPromoted (ann $1) $1) }++> ptype_(ostar,kstar) :: { Promoted L }+>       : VARQUOTE gcon_nolist                  {% fmap (PromotedCon (nIS $1 <++> ann $2  <** [$1]) True) (pexprToQName $2) }+>       | VARQUOTE '[' types1_(ostar,kstar) ']' {% PromotedList  ($1 <^^> $4 <** ($1:reverse($4:snd $3))) True . reverse <\$> mapM checkType (fst $3) }+>       |          '[' types_(ostar,kstar)  ']' {% PromotedList  ($1 <^^> $3 <** ($1:reverse($3:snd $2))) False . reverse <\$> mapM checkType (fst $2) }+>       | VARQUOTE '[' ']'              { PromotedList  ($1 <^^> $3 <** [$1, $3]) True [] }+       | '[' ']'                       {% PromotedList  ($1 <^^> $2 <** [$1, $2]) False [] }+>       | VARQUOTE '(' types1 ')'       {% PromotedTuple ($1 <^^> $4 <** ($1:reverse($4:snd $3))) . reverse <\$> mapM checkType (fst $3) }+>       | INT                           { let Loc l (IntTok  (i,raw)) = $1 in PromotedInteger (nIS l) i raw }+>       | STRING                        { let Loc l (StringTok (s,raw)) = $1 in PromotedString (nIS l) s raw }+++> strict_mark :: { (Maybe (L -> BangType L,S), Maybe (Unpackedness L)) }+>        : strictness              { (Just $1, Nothing) }+>        | unpackedness            { (Nothing, Just $1) }+>        | unpackedness strictness { (Just $2, Just $1) }++> strictness :: { (L -> BangType L, S) }+>        : '!'                           { (BangedTy, $1) }+>        | '~'                           { (LazyTy, $1) }++> unpackedness :: { Unpackedness L }+>        : '{-# UNPACK' '#-}'           { (Unpack ((nIS $1 <++> nIS $2) <** [$1,$2])) }+>        | '{-# NOUNPACK' '#-}'         { (NoUnpack ((nIS $1 <++> nIS $2) <** [$1,$2])) }+++> gtycon :: { QName L }+>       : gtycon_('*')                     { $1 }++> gtycon_(ostar) :: { QName L }+>       : otycon_(ostar)                     { $1 }+>       | '(' ')'                       { unit_tycon_name              ($1 <^^> $2 <** [$1,$2]) }+>       | '(' '->' ')'                  { fun_tycon_name               ($1 <^^> $3 <** [$1,$2,$3]) }+>       | '[' ']'                       { list_tycon_name              ($1 <^^> $2 <** [$1,$2]) }+>       | '(' commas ')'                { tuple_tycon_name             ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Boxed (length $2) }+>       | '(#' '#)'                     { unboxed_singleton_tycon_name ($1 <^^> $2 <** [$1,$2]) }+>       | '(#' commas '#)'              { tuple_tycon_name             ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Unboxed (length $2) }++> otycon :: { QName L }+>       : otycon_('*')                     { $1 }++> otycon_(ostar) :: { QName L }+>       : qconid                        { $1 }+>       | '(' gconsym ')'               { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }+>       | '(' qvarsym_(ostar) ')'       { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++These are for infix types++> qtyconop :: { MaybePromotedName L }+>       : qconop                        { UnpromotedName (ann $1) $1 }+>       | VARQUOTE gconsym              { PromotedName (nIS $1 <++> ann $2 <** [$1]) $2 }+++(Slightly edited) Comment from GHC's hsparser.y:+"context => type" vs  "type" is a problem, because you can't distinguish between++        foo :: (Baz a, Baz a)+        bar :: (Baz a, Baz a) => [a] -> [a] -> [a]++with one token of lookahead.  The HACK is to parse the context as a btype+(more specifically as a tuple type), then check that it has the right form+C a, or (C1 a, C2 b, ... Cn z) and convert it into a context.  Blaach!++Forall-quantified types require some extension to enable them, which+is any of the keyword-enabling ones, except ExistentialQuantification.++> truectype :: { Type L }+>       : ctype                         {% checkType $1 }++> ctype :: { PType L }+>       : ctype_('*',NEVER)             { $1 }++> ctype_(ostar,kstar) :: { PType L }+>       : 'forall' ktyvars '.' ctype_(ostar,kstar)      { mkTyForall (nIS $1 <++> ann $4 <** [$1,$3]) (Just (reverse (fst $2))) Nothing $4 }+>       | context_(ostar,kstar) ctype_(ostar,kstar)     { mkTyForall ($1 <> $2) Nothing (Just $1) $2 }+>       | type_(ostar,kstar)                            { $1 }++Equality constraints require the TypeFamilies extension.++> context :: { PContext L }+>       : context_('*',NEVER)           { $1 }++> context_(ostar,kstar) :: { PContext L }+>       : btype_(ostar,kstar) '=>'      {% checkPContext $ (amap (\l -> l <++> nIS $2 <** (srcInfoPoints l ++ [$2]))) (splitTilde $1) }++> types :: { ([PType L],[S]) }+>       : types_('*',NEVER)             { $1 }++> types_(ostar,kstar) :: { ([PType L],[S]) }+>       : types1_(ostar,kstar) ',' ctype_(ostar,kstar)  { ($3 : fst $1, $2 : snd $1)  }++> types1 :: { ([PType L],[S]) }+>       : types1_('*',NEVER)            { $1 }++> types1_(ostar,kstar) :: { ([PType L],[S]) }+>       : ctype_(ostar,kstar)                           { ([$1],[]) }+>       | types1_(ostar,kstar) ',' ctype_(ostar,kstar)  { ($3 : fst $1, $2 : snd $1) }++> types_bars2(ostar,kstar) :: { ([PType L],[S]) }+>   : ctype_(ostar,kstar) '|' ctype_(ostar,kstar)       { ([$3, $1], [$2]) }+>   | types_bars2(ostar,kstar) '|' ctype_(ostar,kstar)  { ($3 : fst $1, $2 : snd $1) }++> ktyvars :: { ([TyVarBind L],Maybe L) }+>       : ktyvars ktyvar                { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }+>       | {- empty -}                   { ([],Nothing) }++> ktyvar :: { TyVarBind L }+>       : tyvar                         { UnkindedVar (ann $1) $1 }+>       | '(' tyvar '::' kind ')'       { KindedVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }++> tyvars :: { ([Name L],Maybe L) }+>       : tyvars tyvar                  { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }+>       | {- empty -}                   { ([], Nothing) }++> tyvars1 :: { ([Name L],L) }+>       : tyvars tyvar                  { ($2 : fst $1, snd $1 <?+> ann $2) }+++-----------------------------------------------------------------------------+Functional Dependencies++These require the FunctionalDependencies extension to be enabled.++> fds :: { ([FunDep L],[S],Maybe L) }+>       : {- empty -}                   { ([],[], Nothing) }+>       | '|' fds1                      {% do { checkEnabled FunctionalDependencies ;+>                                               let {(fds,ss,l) = $2} ;+>                                               return (reverse fds, $1 : reverse ss, Just (nIS $1 <++> l)) } }++> fds1 :: { ([FunDep L],[S],L) }+>       : fds1 ',' fd                   { let (fds,ss,l) = $1 in ($3 : fds, $2 : ss, l <++> ann $3) }+>       | fd                            { ([$1],[],ann $1) }++> fd :: { FunDep L }+>       : tyvars '->' tyvars1            { FunDep (snd $1 <?+> nIS $2 <++> snd $3 <** [$2]) (reverse (fst $1)) (reverse (fst $3)) }++-----------------------------------------------------------------------------+Datatype declarations++GADTs - require the GADTs extension enabled, but we handle that at the calling site.++ gadtlist :: { ([GadtDecl L],[S],L) }+       : gadtlist1                 {% >> return $1 }++> gadtlist :: { ([GadtDecl L],[S],Maybe L) }+>       : 'where' '{' gadtconstrs1 '}'                  {% return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }+>       | 'where' open gadtconstrs1 close               {% return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }+>       | {- empty -}                                   {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }++> gadtconstrs1 :: { ([GadtDecl L],[S]) }+>       : optsemis gadtconstrs optsemis         { (fst $2, reverse $1 ++ snd $2 ++ reverse $3)  }++> gadtconstrs :: { ([GadtDecl L],[S]) }+>       : gadtconstrs semis gadtconstr          { ($3 ++ fst $1, snd $1 ++ reverse $2) }+>       | gadtconstr                            { ($1,[]) }++> gadtconstr :: { [GadtDecl L] }+>       : qcon '::' truectype            {% do { c <- checkUnQual $1;+>                                                return [GadtDecl ($1 <> $3 <** [$2]) c Nothing Nothing Nothing $3] } }+>       | qcon '::' context '{' fielddecls '}' '->' truectype+>                                       {% do { c <- checkUnQual $1;+>                                               ctxt <- checkContext (Just $3) ;+>                                               return [GadtDecl ($1 <> $8 <** [$2,$4,$6,$7] ++ snd $5) c Nothing ctxt (Just (reverse $ fst $5)) $8] } }+>       | qcon '::' '{' fielddecls '}' '->' truectype+>                                       {% do { c <- checkUnQual $1;+>                                               return [GadtDecl ($1 <> $7 <** [$2,$3,$5,$6] ++ snd $4) c Nothing Nothing (Just (reverse $ fst $4)) $7] } }++To allow the empty case we need the EmptyDataDecls extension.+> constrs0 :: { ([QualConDecl L],[S],Maybe L) }+       : {- empty -}                   {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }+>       : '=' constrs                   { let (ds,ss,l) = $2 in (ds, $1 : reverse ss, Just $ nIS $1 <++> l) }++> constrs :: { ([QualConDecl L],[S],L) }+>       : constrs '|' constr            { let (ds,ss,l) = $1 in ($3 : ds, $2 : ss, l <++> ann $3) }+>       | constr                        { ([$1],[],ann $1) }++> constr :: { QualConDecl L }+>       : forall context constr1        {% do { checkEnabled ExistentialQuantification ;+>                                                ctxt <- checkContext (Just $2) ;+>                                                let {(mtvs,ss,ml) = $1} ;+>                                                return $ QualConDecl (ml <?+> ann $3 <** ss) mtvs ctxt $3 } }+>       | forall constr1                 { let (mtvs, ss, ml) = $1 in QualConDecl (ml <?+> ann $2 <** ss) mtvs Nothing $2 }++> forall :: { (Maybe [TyVarBind L], [S], Maybe L) }+>       : 'forall' ktyvars '.'          {% checkEnabled ExistentialQuantification >> return (Just (fst $2), [$1,$3], Just $ $1 <^^> $3) }+>       | {- empty -}                   { (Nothing, [], Nothing) }++To avoid conflicts when introducing type operators, we need to parse record constructors+as qcon and then check separately that they are truly unqualified.++> constr1 :: { ConDecl L }+>       : scontype                      { let (n,ts,l) = $1 in ConDecl l n ts }+>       | truebtype conop truebtype     { InfixConDecl ($1 <> $3) $1 $2 $3 }+>       | qcon '{' '}'                  {% do { c <- checkUnQual $1; return $ RecDecl (ann $1 <++> nIS $3 <** [$2,$3]) c [] } }+>       | qcon '{' fielddecls '}'       {% do { c <- checkUnQual $1;+>                                               return $ RecDecl (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) c (reverse (fst $3)) } }++> scontype :: { (Name L, [Type L], L) }+>       : btype                         {% do { (c,ts) <- splitTyConApp $1;+>                                               return (c, ts, ann $1) } }++> fielddecls :: { ([FieldDecl L],[S]) }+>       : fielddecls ',' fielddecl      { ($3 : fst $1, $2 : snd $1) }+>       | fielddecl                     { ([$1],[]) }++> fielddecl :: { FieldDecl L }+>       : vars '::' truectype               { let (ns,ss,l) = $1 in FieldDecl (l <++> ann $3 <** (reverse ss ++ [$2])) (reverse ns) $3 }++> maybe_derivings :: { [Deriving L] }+>       : {- empty -}                   { [] }+>       | derivings                     { $1 }++> derivings :: { [Deriving L] }+>       : derivings deriving            { $2 : $1 }+>       | deriving                      { [$1] }++> deriving :: { Deriving L }+>       : 'deriving' deriv_clause_types+>             { let (ihs, last_ss, sss) = $2+>               in Deriving ($1 <^^> last_ss <** $1:sss) Nothing ihs }+>       | 'deriving' deriv_strategy_no_via deriv_clause_types+>             { let (ihs, last_ss, sss) = $3+>               in Deriving ($1 <^^> last_ss <** $1:sss) (Just $2) ihs }+>       | 'deriving' deriv_clause_types deriv_strategy_via+>             { let (ihs, last_ss, sss) = $2+>               in Deriving ($1 <^^> last_ss <** $1:sss) (Just $3) ihs }++> dclasses :: { ([InstRule L],[S]) }+>       : types1                        {% checkDeriving (fst $1) >>= \ds -> return (ds, snd $1) }++> qtycls1 :: { InstHead L }+>       : qconid                        { IHCon (ann $1) $1 }++> deriv_clause_types :: { ([InstRule L], SrcSpan, [SrcSpan]) }+>       : qtycls1                       { [IRule (ann $1) Nothing Nothing $1], srcInfoSpan (ann $1), [] }+>       | '(' ')'                       { [], $2, [$1, $2] }+>       | '(' dclasses ')'              { case fst $2 of+>                                           [ts] -> ([IParen ($1 <^^> $3 <** [$1,$3]) ts], $3, [])+>                                           tss  -> (reverse tss, $3, $1: reverse (snd $2) ++ [$3]) }++-----------------------------------------------------------------------------+Kinds++> kind :: { Kind L }+>       : kind1                 {% checkEnabled KindSignatures >> return $1 }++> kind1 :: { Kind L }+>       : ctype_(NEVER,'*')     {% checkType $1 }++> optkind :: { (Maybe (Kind L), [S]) }+>       : {-empty-}             { (Nothing,[]) }+>       | '::' kind             { (Just $2,[$1]) }++> opt_tyconsig :: { Maybe ( S, QName L ) }+>              : {- empty -}    { Nothing }+>              | '::' gtycon    { Just ($1, $2) }+-----------------------------------------------------------------------------+Class declarations++TODO: Lots of stuff to pass around here.++No implicit parameters in the where clause of a class declaration.+> optcbody :: { (Maybe [ClassDecl L],[S],Maybe L) }+>       : 'where' '{'  cldecls '}'      {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }+>       | 'where' open cldecls close    {% do { vs <- checkClassBody (fst $3);+>                                               let { l' = if null (fst $3) then nIS $4 else (ann . last $ fst $3) };+>                                               return (Just vs, $1:$2: snd $3 ++ [$4], Just (nIS $1 <++> l')) } }+>       | {- empty -}                   { (Nothing,[],Nothing) }++> cldecls :: { ([ClassDecl L],[S]) }+>       : optsemis cldecls1 optsemis    {% checkRevClsDecls (fst $2) >>= \cs -> return (cs, reverse $1 ++ snd $2 ++ reverse $3) }+>       | optsemis                      { ([],reverse $1) }++> cldecls1 :: { ([ClassDecl L],[S]) }+>       : cldecls1 semis cldecl         { ($3 : fst $1, snd $1 ++ reverse $2) }+>       | cldecl                        { ([$1],[]) }++Associated types require the TypeFamilies extension.++> cldecl :: { ClassDecl L }+>       : decl                          { ClsDecl (ann $1) $1 }+>       | atdecl                        {% checkEnabled TypeFamilies >> return $1 }+>       | 'default' signdecl            {% checkEnabled DefaultSignatures >> checkDefSigDef $2 >>= \(n,t,l) -> return (ClsDefSig (nIS $1 <++> ann $2 <** [$1,l]) n t) }++> opt_family   :: { [S] }+>              : {- empty -}   { [] }+>              | 'family'      { [$1] }++> atdecl :: { ClassDecl L }+>       : 'data' opt_family type opt_datafam_kind_sig+>             {% do { (cs,dh) <- checkDataHeader $3;+>                     return (ClsDataFam (nIS $1 <++> ann $3 <+?> (fmap ann) $4 <** [$1]) cs dh $4) } }+>       | 'type' type opt_at_kind_inj_sig2+>             {% mkAssocType $1 $2 $3 }+>       | 'type' 'family' type opt_at_kind_inj_sig+>             {% do { dh <- checkSimpleType $3;+>                     return (ClsTyFam  (nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4)+>                                                           <+?> (fmap ann) (snd $4)+>                                                           <** [$1]) dh (fst $4) (snd $4)) } }+>       | 'type' 'instance' ty_fam_inst_eqn+>                     { ClsTyDef (nIS $1 <++> ann $3 <** [$1,$2]) $3 }++-----------------------------------------------------------------------------+Instance declarations++> optvaldefs :: { (Maybe [InstDecl L],[S],Maybe L) }+>       : 'where' '{'  valdefs '}'      {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4))  }+>       | 'where' open valdefs close    {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }+>       | {- empty -}                   { (Nothing, [], Nothing) }++> valdefs :: { ([InstDecl L],[S]) }+>       : optsemis valdefs1 optsemis    {% checkRevInstDecls (fst $2) >>= \is -> return (is, reverse $1 ++ snd $2 ++ reverse $3) }+>       | optsemis                      { ([],reverse $1) }++> valdefs1 :: { ([InstDecl L],[S]) }+>       : valdefs1 semis insvaldef      { ($3 : fst $1, snd $1 ++ reverse $2) }+>       | insvaldef                     { ([$1],[]) }++Associated types require the TypeFamilies extension enabled.++> insvaldef :: { InstDecl L }+>       : valdef                        { InsDecl (ann $1) $1 }+>       | atinst                        {% checkEnabled TypeFamilies >> return $1 }+>       | specinldecl                   { InsDecl (ann $1) $1 }+>       | signdecl0                     {% checkEnabled InstanceSigs >> return (InsDecl (ann $1) $1) }++ inlinst :: { InstDecl L }+       : '{-# INLINE' activation qvar '#-}'     { let Loc l (INLINE s) = $1 in InsInline (l <^^> $4 <** [l,$4]) s $2 $3 }++> atinst :: { InstDecl L }+>       : 'type' truedtype '=' truectype+>                {% do { -- no checkSimpleType $4 since dtype may contain type patterns+>                        return (InsType (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4) } }+>       | data_or_newtype truectype constrs0 maybe_derivings+>                {% do { -- (cs,c,t) <- checkDataHeader $4;+>                        let {(ds,ss,minf) = $3};+>                        checkDataOrNew $1 ds;+>                        return (InsData ($1 <> $2 <+?> minf <+?> fmap ann (listToMaybe $4) <** ss ) $1 $2 (reverse ds) (reverse $4)) } }+>       | data_or_newtype truectype optkind gadtlist maybe_derivings+>                {% do { -- (cs,c,t) <- checkDataHeader $4;+>                        let { (gs,ss,minf) = $4 } ;+>                        checkDataOrNewG $1 gs;+>                        return $ InsGData (ann $1 <+?> minf <+?> fmap ann (listToMaybe $5) <** (snd $3 ++ ss)) $1 $2 (fst $3) (reverse gs) (reverse $5) } }++-----------------------------------------------------------------------------+Value definitions++> valdef :: { Decl L }+>       : exp0b optsig rhs optwhere     {% checkValDef (($1 <> $3 <+?> (fmap ann) (fst $4)) <** (snd $4)) $1 $2 $3 (fst $4) }+>       | '!' aexp rhs optwhere         {% do { checkEnabled BangPatterns ;+>                                               let { l = nIS $1 <++> ann $2 <** [$1] };+>                                               p <- checkPattern (BangPat l $2);+>                                               return $ PatBind (p <> $3 <+?> (fmap ann) (fst $4) <** snd $4)+>                                                           p $3 (fst $4) } }++May bind implicit parameters+> optwhere :: { (Maybe (Binds L),[S]) }+>       : 'where' binds                 { (Just $2, [$1]) }+>       | {- empty -}                   { (Nothing, []) }++Type signatures on value definitions require ScopedTypeVariables (or PatternSignatures, which is deprecated).++> optsig :: { (Maybe (Type L, S)) }+>       : '::' truectype                {% checkEnabled ScopedTypeVariables >> return (Just ($2, $1)) }+>       | {- empty -}                   { Nothing }++> rhs   :: { Rhs L }+>       : '=' trueexp                   { UnGuardedRhs (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | gdrhs                         { GuardedRhss (snd $1) (reverse $ fst $1) }++> gdrhs :: { ([GuardedRhs L],L) }+>       : gdrhs gdrh                    { ($2 : fst $1, snd $1 <++> ann $2) }+>       | gdrh                          { ([$1],ann $1) }++Guards may contain patterns if PatternGuards is enabled, hence quals instead of exp.+> gdrh :: { GuardedRhs L }+>       : '|' quals '=' trueexp  {% do { checkPatternGuards (fst $2);+>                                        return $ GuardedRhs (nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])) (reverse (fst $2)) $4 } }++-----------------------------------------------------------------------------+Expressions++Note: The Report specifies a meta-rule for lambda, let and if expressions+(the exp's that end with a subordinate exp): they extend as far to+the right as possible.  That means they cannot be followed by a type+signature or infix application.  To implement this without shift/reduce+conflicts, we split exp10 into these expressions (exp10a) and the others+(exp10b).  That also means that only an exp0 ending in an exp10b (an exp0b)+can followed by a type signature or infix application.  So we duplicate+the exp0 productions to distinguish these from the others (exp0a).++Ugly: We need non-parenthesized post-operators for HaRP, and to parse both+these and normal left sections, we parse both as PostOp and let the post pass+mangle them into the correct form depending on context.++> trueexp :: { Exp L }+>         : exp                 {% checkExpr $1 }++> exp   :: { PExp L }+>       : exp0b '::' truectype              { ExpTypeSig      ($1 <> $3 <** [$2]) $1 $3 }+>       | exp0                              { $1 }+>       | exp0b qop                         { PostOp          ($1 <> $2)          $1 $2 }+>       | exp0b '-<' exp                    { LeftArrApp      ($1 <> $3 <** [$2]) $1 $3 }+>       | exp0b '>-' exp                    { RightArrApp     ($1 <> $3 <** [$2]) $1 $3 }+>       | exp0b '-<<' exp                   { LeftArrHighApp  ($1 <> $3 <** [$2]) $1 $3 }+>       | exp0b '>>-' exp                   { RightArrHighApp ($1 <> $3 <** [$2]) $1 $3 }++> exp0 :: { PExp L }+>       : exp0a                         { $1 }+>       | exp0b                         { $1 }++> exp0a :: { PExp L }+>       : exp0b qop exp10a              { InfixApp ($1 <> $3) $1 $2 $3 }+>       | exp10a                        { $1 }++> exp0b :: { PExp L }+>       : exp0b qop exp10b              { InfixApp ($1 <> $3) $1 $2 $3 }+>       | exp10b                        { $1 }++> exp10a :: { PExp L }+>       : expblocka                     { $1 }+>       | fexp expblocka                {% checkEnabled BlockArguments >>+>                                          return (App ($1 <> $2) $1 $2) }++> expblocka :: { PExp L }+>       : '\\' apats '->' exp             { Lambda (nIS $1 <++> ann $4 <** [$1,$3]) (reverse $2) $4 }+A let may bind implicit parameters+>       | 'let' binds 'in' exp            { Let    (nIS $1 <++> ann $4 <** [$1,$3])    $2 $4 }+>       | 'if' exp optlayoutsemi 'then' exp optlayoutsemi 'else' exp+>                                        { If     (nIS $1 <++> ann $8 <** ($1:$3 ++ $4:$6 ++ [$7])) $2 $5 $8 }+>       | 'if' ifaltslist                 {% checkEnabled MultiWayIf >>+>                                            let (alts, inf, ss) = $2+>                                            in return (MultiIf (nIS $1 <++> inf <** ($1:ss)) alts) }+>       | 'proc' apat '->' exp            { Proc   (nIS $1 <++> ann $4 <** [$1,$3])    $2 $4 }+>       | exppragma                       { $1 }++> optlayoutsemi :: { [S] }+>       : ';'				  {% checkEnabled DoAndIfThenElse >> return [$1] }+>	| {- empty -}			  { [] }++We won't come here unless XmlSyntax is already checked.+> opthsxsemi :: { [S] }+>       : ';'				  { [$1] }+>	| {- empty -}			  { [] }+++mdo blocks require the RecursiveDo extension enabled, but the lexer handles that.++> exp10b :: { PExp L }+>       : expblockb                     { $1 }+>       | '-' fexp                      { NegApp (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | fexp                          { $1 }++> expblockb :: { PExp L }+>       : 'case' exp 'of' altslist      { let (als, inf, ss) = $4 in Case (nIS $1 <++> inf <** ($1:$3:ss)) $2 als }+>       | '\\' 'case' altslist          {% do { checkEnabled LambdaCase ;+>                                               let { (als, inf, ss) = $3 } ;+>                                               return (LCase (nIS $1 <++> inf <** ($1:$2:ss)) als) } }+>       | 'do'  stmtlist                { let (sts, inf, ss) = $2 in Do   (nIS $1 <++> inf <** $1:ss) sts }+>       | 'mdo' stmtlist                { let (sts, inf, ss) = $2 in MDo  (nIS $1 <++> inf <** $1:ss) sts }++> exppragma :: { PExp L }+>       : '{-# CORE' STRING '#-}' exp   { let Loc l (StringTok (s,_)) = $2 in CorePragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }+>       | '{-# SCC'  STRING '#-}' exp   { let Loc l (StringTok (s,_)) = $2 in SCCPragma  (nIS $1 <++> ann $4 <** [l,$3]) s $4 }+>       | '{-# GENERATED' STRING INT ':' INT '-' INT ':' INT '#-}' exp+>                                           { let { Loc l0 (StringTok (s,_)) = $2;+>                                                   Loc l1 (IntTok (i1,_))   = $3;+>                                                   Loc l2 (IntTok (i2,_))   = $5;+>                                                   Loc l3 (IntTok (i3,_))   = $7;+>                                                   Loc l4 (IntTok (i4,_))   = $9}+>                                              in GenPragma (nIS $1 <++> ann $11 <** [$1,l0,l1,$4,l2,$6,l3,$8,l4,$10])+>                                                       s (fromInteger i1, fromInteger i2)+>                                                         (fromInteger i3, fromInteger i4) $11 }++> fexp :: { PExp L }+>       : fexp aexp                     { App ($1 <> $2) $1 $2 }+>       | fexp expblockb                {% checkEnabled BlockArguments >>+>                                          return (App ($1 <> $2) $1 $2) }+>       | aexp                          { $1 }++> apats :: { [Pat L] }+>       : apats apat                    { $2 : $1 }+>       | apat                          { [$1] }++> apat :: { Pat L }+>       : aexp                          {% checkPattern $1 }+>       | '!' aexp                      {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }++UGLY: Because patterns and expressions are mixed, aexp has to be split into+two rules: One right-recursive and one left-recursive. Otherwise we get two+reduce/reduce-errors (for as-patterns and irrefutable patters).++Even though the variable in an as-pattern cannot be qualified, we use+qvar here to avoid a shift/reduce conflict, and then check it ourselves+(as for vars above).++Non-linear name binding, @:, requires RegularPatterns, but the lexer handles that.++> aexp  :: { PExp L }+>       : qvar '@' aexp                 {% do { n <- checkUnQual $1;+>                                               return (AsPat ($1 <> $3 <** [$2]) n $3) } }+>       | qvar '@:' aexp                {% do { n <- checkUnQual $1;+>                                               return (CAsRP ($1 <> $3 <** [$2]) n $3) } }+>       | '~' aexp                      { IrrPat (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | TYPEAPP trueatype             { TypeApp (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | aexp1                         { $1 }++Note: The first two alternatives of aexp1 are not necessarily record+updates: they could be labeled constructions.++> aexp1 :: { PExp L }+>       : aexp1 '{' '}'                 {% liftM (amap (const (ann $1 <++> nIS $3 <** [$2,$3]))) $ mkRecConstrOrUpdate $1 [] }+>       | aexp1 '{' fbinds '}'          {% liftM (amap (const (ann $1 <++> nIS $4 <** ($2:snd $3 ++ [$4]))))+>                                               $ mkRecConstrOrUpdate $1 (fst $3) }+>       | aexp2                         { $1 }++According to the Report, the left section (e op) is legal iff (e op x)+parses equivalently to ((e) op x).  Thus e must be an exp0b.+An implicit parameter can be used as an expression, enabled by the lexer.+Extensions using banana brackets are also enabled by the lexer. The only+thing we need to look at here is the erpats that use no non-standard lexemes.++> aexp2 :: { PExp L }+>       : ivar                          { IPVar (ann $1) $1 }+>       | overloaded_label              { $1 }+>       | qvar                          { Var (ann $1) $1 }+>       | gcon                          { $1 }+>       | literal                       { Lit (ann $1) $1 }+>       | '(' texp ')'                  { Paren ($1 <^^> $3 <** [$1,$3]) $2 }+>       | '(' tup_exprs ')'             {% do { e <- mkSumOrTuple Boxed ($1 <^^> $3) (snd $2)+>                                             ; return $ amap (\l -> l <** [$1] ++ fst $2 ++ [$3]) e } }+>       | '(#' texp '#)'                { TupleSection ($1 <^^> $3 <** [$1,$3]) Unboxed [Just $2] }+>       | '(#' tup_exprs '#)'         {% do { e <- mkSumOrTuple Unboxed ($1 <^^> $3) (snd $2)+>                                           ; return $ amap (\l -> l <** [$1] ++ fst $2 ++ [$3]) e } }+>       | '[' list ']'                  { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) }+>       | '[:' parr ':]'                { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) }+>       | '(' erpats ')'                {% checkEnabled RegularPatterns >> return (Paren ($1 <^^> $3 <** [$1,$3]) $2) }+>       | '(|' exp '|)'                 { ArrOp ($1 <^^> $3 <** [$1,$3]) $2 }+>       | '(/' sexps '/)'               { SeqRP ($1 <^^> $3 <** ($1:reverse (snd $2) ++ [$3])) $ reverse (fst $2) }+>       | '(/' exp '|' quals '/)'       { GuardRP ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 $ (reverse $ fst $4) }+>       | xml                           { $1 }+++Template Haskell - all this is enabled in the lexer.+>       | IDSPLICE                      { let Loc l (THIdEscape s) = $1 in SpliceExp (nIS l) $ IdSplice (nIS l) s }+>       | TIDSPLICE                     { let Loc l (THTIdEscape s) = $1 in SpliceExp (nIS l) $ TIdSplice (nIS l) s }+>       | '$(' trueexp ')'              { let l = ($1 <^^> $3 <** [$1,$3]) in SpliceExp l $ ParenSplice l $2 }+>       | '$$(' trueexp ')'             { let l = ($1 <^^> $3 <** [$1,$3]) in SpliceExp l $ TParenSplice l $2 }+>       | '[|' trueexp '|]'             { let l = ($1 <^^> $3 <** [$1,$3]) in BracketExp l $ ExpBracket l $2 }+>       | '[||' trueexp '||]'           { let l = ($1 <^^> $3 <** [$1,$3]) in BracketExp l $ TExpBracket l $2 }+>       | '[p|' exp0 '|]'               {% do { p <- checkPattern $2;+>                                               let {l = ($1 <^^> $3 <** [$1,$3]) };+>                                               return $ BracketExp l $ PatBracket l p } }+>       | '[t|' truectype '|]'              { let l = $1 <^^> $3 <** [$1,$3] in BracketExp l $ TypeBracket l $2 }+>       | '[d|' open topdecls close '|]'    { let l = $1 <^^> $5 <** ($1:snd $3 ++ [$5])+>                                             in BracketExp l $ DeclBracket ($1 <^^> $5 <** ($2:snd $3 ++ [$4,$5])) (fst $3) }+>       | VARQUOTE '(' ')'              { let {l1 = $1 <^^> $3 <** [$1];+>                                              l2 = $2 <^^> $3 <** [$2,$3];}+>                                          in VarQuote l1 (unit_con_name l2) }+>       | VARQUOTE '[' ']'              { let {l1 = $1 <^^> $3 <** [$1];+>                                              l2 = $2 <^^> $3 <** [$2,$3];}+>                                          in VarQuote l1 (list_con_name l2) }+>       | VARQUOTE qvar                 { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | VARQUOTE qcon                 { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | TYPQUOTE tyvar                { TypQuote (nIS $1 <++> ann $2 <** [$1]) (UnQual (ann $2) $2) }+>       | TYPQUOTE gtycon               { TypQuote (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | QUASIQUOTE                    { let Loc l (THQuasiQuote (n,q)) = $1 in QuasiQuote (nIS l) n q }+End Template Haskell++> tup_exprs :: { ([S], SumOrTuple L) }+>       : texp commas_tup_tail          { (fst $2, STuple (Just $1 : snd $2)) }+>       | texp bars                     { ($2, SSum 0 (length $2) $1) }+>       | commas tup_tail               { ($1 ++ (fst $2), STuple ((map (const Nothing) $1) ++ snd $2)) }+>       | bars texp bars0               { ($1 ++ $3, SSum (length $1) (length $3) $2) }++> commas_tup_tail :: { ([S], [Maybe (PExp L)]) }+>       : commas tup_tail               { (reverse $1 ++ fst $2, map (const Nothing) (tail $1) ++ snd $2) }++> tup_tail :: { ([S], [Maybe (PExp L)]) }+>           : texp commas_tup_tail { (fst $2, Just $1 : snd $2) }+>           | texp                 { ([], [Just $1]) }+>           | {- empty -}          { ([], [Nothing]) }++> commas :: { [S] }+>       : commas ','                    { $2 : $1 }+>       | ','                           { [$1] }++> bars :: { [S] }+>   : bars '|'  { $2 : $1 }+>   | '|'       { [$1] }++> bars0 :: { [S] }+>        : bars { $1 }+>        |      { [] }++> texp :: { PExp L }+>       : exp                           { $1 }+>       | qopm exp0                     { PreOp ($1 <> $2) $1 $2 }+>       | exp '->' pat                  {% do {checkEnabled ViewPatterns;+>                                              return $ ViewPat ($1 <> $3 <** [$2]) $1 $3} }++-----------------------------------------------------------------------------+Harp Extensions++> sexps :: { ([PExp L],[S]) }+>       : sexps ',' exp                 { ($3 : fst $1, $2 : snd $1) }+>       | exp                           { ([$1],[]) }++Either patterns are left associative+> erpats :: { PExp L }+>       : exp '|' erpats              { EitherRP ($1 <> $3 <** [$2]) $1 $3 }+>       | exp '|' exp                 { EitherRP ($1 <> $3 <** [$2]) $1 $3 }++-----------------------------------------------------------------------------+Hsx Extensions - requires XmlSyntax, but the lexer handles all that.++> xml :: { PExp L }+>       : '<' name attrs mattr '>' children opthsxsemi '</' name '>'+>								 {% do { n <- checkEqNames $2 $9;+>                                                                        let { cn = reverse $6;+>                                                                              as = reverse $3;+>                                                                              l  = $1 <^^> $10 <** [$1,$5] ++ $7 ++ [$8,srcInfoSpan (ann $9),$10] };+>                                                                        return $ XTag l n as $4 cn } }+>       | '<' name attrs mattr '/>'                              { XETag   ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }+>       | '<%' exp '%>'                                          { XExpTag ($1 <^^> $3 <** [$1,$3]) $2 }+>       | '<%>' children opthsxsemi '</' '%>'                    { XChildTag ($1 <^^> $5 <** ($1:$3++[$4,$5])) (reverse $2) }++> children :: { [PExp L] }+>       : children child                { $2 : $1 }+>       | {- empty -}                   { [] }++> child :: { PExp L }+>       : PCDATA                        { let Loc l (XPCDATA pcd) = $1 in XPcdata (nIS l) pcd }+>       | '<[' sexps ']>'               { XRPats ($1 <^^> $3 <** (snd $2 ++ [$1,$3])) $ reverse (fst $2) }+>       | xml                           { $1 }++> name :: { XName L }+>       : xmlname ':' xmlname           { let {Loc l1 s1 = $1; Loc l2 s2 = $3}+>                                          in XDomName (nIS l1 <++> nIS l2 <** [l1,$2,l2]) s1 s2 }+>       | xmlname                       { let Loc l str = $1 in XName (nIS l) str }++> xmlname :: { Loc String }+>       : VARID                         { let Loc l (VarId  s) = $1 in Loc l s }+>       | CONID                         { let Loc l (ConId  s) = $1 in Loc l s }+>       | DVARID                        { let Loc l (DVarId s) = $1 in Loc l $ mkDVar s }+>       | xmlkeyword                    { $1 }++> xmlkeyword :: { Loc String }+>       : 'type'                        { Loc $1 "type" }+>       | 'class'                       { Loc $1 "class" }+>       | 'data'                        { Loc $1 "data" }+>       | 'foreign'                     { Loc $1 "foreign" }+>       | 'export'                      { Loc $1 "export" }+>       | 'safe'                        { Loc $1 "safe" }+>       | 'unsafe'                      { Loc $1 "unsafe" }+>       | 'interruptible'               { Loc $1 "interruptible" }+>       | 'threadsafe'                  { Loc $1 "threadsafe" }+>       | 'stdcall'                     { Loc $1 "stdcall" }+>       | 'ccall'                       { Loc $1 "ccall" }+>       | 'cplusplus'                   { Loc $1 "cplusplus" }+>       | 'dotnet'                      { Loc $1 "dotnet" }+>       | 'jvm'                         { Loc $1 "jvm" }+>       | 'js'                          { Loc $1 "js" }+>       | 'javascript'                  { Loc $1 "javascript" }+>       | 'capi'                        { Loc $1 "capi" }+>       | 'as'                          { Loc $1 "as" }+>       | 'by'                          { Loc $1 "by" }+>       | 'case'                        { Loc $1 "case" }+>       | 'default'                     { Loc $1 "default" }+>       | 'deriving'                    { Loc $1 "deriving" }+>       | 'do'                          { Loc $1 "do" }+>       | 'else'                        { Loc $1 "else" }+>       | 'family'                      { Loc $1 "family" }+>       | 'forall'                      { Loc $1 "forall" }+>       | 'group'                       { Loc $1 "group" }+>       | 'hiding'                      { Loc $1 "hiding" }+>       | 'if'                          { Loc $1 "if" }+>       | 'import'                      { Loc $1 "import" }+>       | 'in'                          { Loc $1 "in" }+>       | 'infix'                       { Loc $1 "infix" }+>       | 'infixl'                      { Loc $1 "infixl" }+>       | 'infixr'                      { Loc $1 "infixr" }+>       | 'instance'                    { Loc $1 "instance" }+>       | 'let'                         { Loc $1 "let" }+>       | 'mdo'                         { Loc $1 "mdo" }+>       | 'module'                      { Loc $1 "module" }+>       | 'newtype'                     { Loc $1 "newtype" }+>       | 'of'                          { Loc $1 "of" }+>       | 'proc'                        { Loc $1 "proc" }+>       | 'rec'                         { Loc $1 "rec" }+>       | 'then'                        { Loc $1 "then" }+>       | 'using'                       { Loc $1 "using" }+>       | 'where'                       { Loc $1 "where" }+>       | 'qualified'                   { Loc $1 "qualified" }+++> attrs :: { [ParseXAttr L] }+>       : attrs attr                    { $2 : $1 }+>       | {- empty -}                   { [] }++> attr :: { ParseXAttr L }+>       : name '=' aexp                 { XAttr ($1 <> $3 <** [$2]) $1 $3 }++> mattr :: { Maybe (PExp L) }++>       : aexp                          { Just $1 }+>       | {-empty-}                     { Nothing }++-----------------------------------------------------------------------------+List expressions++The rules below are little bit contorted to keep lexps left-recursive while+avoiding another shift/reduce-conflict.++> list :: { L -> PExp L }+>       : texp                          { \l -> List l [$1] }+>       | lexps                         { \l -> let (ps,ss) = $1 in List (l <** reverse ss) (reverse ps) }+>       | texp '..'                     { \l -> EnumFrom       (l <** [$2]) $1 }+>       | texp ',' exp '..'             { \l -> EnumFromThen   (l <** [$2,$4]) $1 $3 }+>       | texp '..' exp                 { \l -> EnumFromTo     (l <** [$2]) $1 $3 }+>       | texp ',' exp '..' exp         { \l -> EnumFromThenTo (l <** [$2,$4]) $1 $3 $5 }+>       | texp '|' pqualstmts           { \l -> let (stss, ss) = $3 in ParComp (l <** ($2:ss)) $1 (reverse stss) }++> lexps :: { ([PExp L],[S]) }+>       : lexps ',' texp                { let (es, ss) = $1 in ($3 : es, $2 : ss) }+>       | texp ',' texp                 { ([$3,$1], [$2]) }++-----------------------------------------------------------------------------+List comprehensions++> pqualstmts :: { ([[QualStmt L]],[S]) }+>       : pqualstmts '|' qualstmts      { let { (stss, ss1) = $1;+>                                               (sts, ss2) = $3 }+>                                          in (reverse sts : stss, ss1 ++ [$2] ++ reverse ss2)  }+>       | qualstmts                     { let (sts, ss) = $1 in ([reverse sts], reverse ss) }++> qualstmts :: { ([QualStmt L],[S]) }+>       : qualstmts ',' qualstmt        { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }+>       | qualstmt                      { ([$1],[]) }++> qualstmt :: { QualStmt L }+>       : transformqual                 { $1 }+>       | qual                          { QualStmt (ann $1) $1 }++> transformqual :: { QualStmt L }+>       : 'then' trueexp                                { ThenTrans    (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | 'then' trueexp 'by' trueexp                   { ThenBy       (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }+>       | 'then' 'group' 'by' trueexp                   { GroupBy      (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }+>       | 'then' 'group' 'using' trueexp                { GroupUsing   (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }+>       | 'then' 'group' 'by' trueexp 'using' trueexp   { GroupByUsing (nIS $1 <++> ann $6 <** [$1,$2,$3,$5]) $4 $6 }++> quals :: { ([Stmt L],[S]) }+>       : quals ',' qual                { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }+>       | qual                          { ([$1],[]) }++> qual  :: { Stmt L }+>       : pat '<-' trueexp              { Generator ($1 <> $3 <** [$2]) $1 $3 }+>       | trueexp                       { Qualifier (ann $1) $1 }+>       | 'let' binds                   { LetStmt   (nIS $1 <++> ann $2 <** [$1]) $2 }++-----------------------------------------------------------------------------+Parallel array expressions++See comments on list expressions. Parallel arrays are finite sequences.+This definition also allows empty arrays.++> parr :: { L -> PExp L }+>        :                               { \l -> ParArray l [] }+>        | texp                          { \l -> ParArray l [$1] }+>        | lexps                         { \l -> let (ps,ss) = $1 in ParArray (l <** reverse ss) (reverse ps) }+>        | texp '..' exp                 { \l -> ParArrayFromTo     (l <** [$2]) $1 $3  }+>        | texp ',' exp '..' exp         { \l -> ParArrayFromThenTo (l <** [$2,$4]) $1 $3 $5 }+>        | texp '|' pqualstmts           { \l -> let (stss, ss) = $3 in ParArrayComp (l <** ($2:ss)) $1 (reverse stss) }++-----------------------------------------------------------------------------+Case alternatives++> altslist :: { ([Alt L],L,[S]) }+>       : '{'  alts '}'                 { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3])  }+>       | open alts close               { let l' =  ann . last $ fst $2+>                                          in (fst $2, nIS $1 <++> l', $1:snd $2 ++ [$3]) }+>       | '{' '}'                       {% do { checkEnabled EmptyCase;+>                                               return ([], $1 <^^> $2, [$1, $2]) } }+++> alts :: { ([Alt L],[S]) }+>       : optsemis alts1 optsemis       { (reverse $ fst $2, $1 ++ snd $2 ++ $3) }++> alts1 :: { ([Alt L],[S]) }+>       : alts1 semis alt               { ($3 : fst $1, snd $1 ++ $2) }+>       | alt                           { ([$1],[]) }++> alt :: { Alt L }+>       : pat ralt optwhere             { Alt ($1 <> $2 <+?> (fmap ann) (fst $3) <** snd $3) $1 $2 (fst $3) }++> ralt :: { Rhs L }+>       : '->' trueexp                  { UnGuardedRhs (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | gdpats                        { GuardedRhss  (snd $1) (reverse $ fst $1) }++> gdpats :: { ([GuardedRhs L],L) }+>       : gdpats gdpat                  { ($2 : fst $1, snd $1 <++> ann $2) }+>       | gdpat                         { ([$1], ann $1) }++A guard can be a pattern guard if PatternGuards is enabled, hence quals instead of exp0.+> gdpat :: { GuardedRhs L }+>       : '|' quals '->' trueexp {% do { checkPatternGuards (fst $2);+>                                        let {l = nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])};+>                                        return (GuardedRhs l (reverse (fst $2)) $4) } }++> pat :: { Pat L }+>       : exp                           {% checkPattern $1 }+>       | '!' aexp                      {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }++> ifaltslist :: { ([GuardedRhs L], L, [S]) }+>       : '{'  ifalts '}'                 { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3])  }+>       | open ifalts close               { let l' =  ann . last $ fst $2+>                                            in (fst $2, nIS $1 <++> l', $1:snd $2 ++ [$3]) }++> ifalts :: { ([GuardedRhs L], [S]) }+>       : optsemis ifalts1 optsemis       { (reverse $ fst $2, $1 ++ snd $2 ++ $3) }++> ifalts1 :: { ([GuardedRhs L], [S]) }+>       : ifalts1 optsemis gdpat           { ($3 : fst $1, snd $1 ++ $2) }+>       | gdpat                            { ([$1], []) }++-----------------------------------------------------------------------------+Statement sequences++As per the Report, but with stmt expanded to simplify building the list+without introducing conflicts.  This also ensures that the last stmt is+an expression.++TODO: The points can't be added here, must be propagated!++> stmtlist :: { ([Stmt L],L,[S]) }+>       : '{'  stmts '}'                { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3])  }+>       | open stmts close              { let l' =  ann . last $ fst $2+>                                          in (fst $2, nIS $1 <++> l', $1:snd $2 ++ [$3]) }++> stmts :: { ([Stmt L],[S]) }+>       : stmt stmts1                       { ($1 : fst $2, snd $2) }+>       | ';' stmts                         { (fst $2, $1 : snd $2) }+>       | {- empty -}                       { ([],[]) }++> stmts1 :: { ([Stmt L],[S]) }+>       : ';' stmts                         { (fst $2, $1 : snd $2) }+>       | {- empty -}                       { ([],[]) }++A let statement may bind implicit parameters.+> stmt :: { Stmt L }+>       : 'let' binds                       { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }+>       | pat '<-' trueexp                  { Generator ($1 <> $3 <** [$2]) $1 $3 }+>       | trueexp                           { Qualifier (ann $1) $1 }+>       | 'rec' stmtlist                    { let (stms,inf,ss) = $2 in RecStmt (nIS $1 <++> inf <** $1:ss) stms }++-----------------------------------------------------------------------------+Record Field Update/Construction++> fbinds :: { ([PFieldUpdate L],[S]) }+>       : fbind ',' fbinds              { let (fbs, ss) = $3 in ($1 : fbs, $2 : ss) }+>       | fbind                         { ([$1],[]) }+>       | '..'                          {% do { checkEnabled RecordWildCards `atSrcLoc` (getPointLoc $1);+>                                               return ([FieldWildcard (nIS $1)], []) } }++Puns and wild cards need the respective extensions enabled.++> fbind :: { PFieldUpdate L }+>       : qvar '=' exp                  { FieldUpdate ($1 <>$3 <** [$2]) $1 $3 }+>       | qvar                          {% checkEnabled NamedFieldPuns >> checkQualOrUnQual $1 >>= return . FieldPun (ann $1) }++-----------------------------------------------------------------------------+Implicit parameter bindings - need the ImplicitParameter extension enabled, but the lexer handles that.++> ipbinds :: { ([IPBind L],[S]) }+>       : optsemis ipbinds1 optsemis    { (reverse (fst $2), reverse $1 ++ snd $2 ++ reverse $3) }++> ipbinds1 :: { ([IPBind L],[S]) }+>       : ipbinds1 semis ipbind         { ($3 : fst $1, snd $1 ++ reverse $2) }+>       | ipbind                        { ([$1],[]) }++> ipbind :: { IPBind L }+>       : ivar '=' trueexp              { IPBind ($1 <> $3 <** [$2]) $1 $3 }++-----------------------------------------------------------------------------+Variables, Constructors and Operators.++> gcon :: { PExp L }+>       : sysdcon               { $1 }+>       | qcon                  { Con (ann $1) $1 }++> gcon_nolist :: { PExp L }+>       : sysdcon_nolist        { $1 }+>       | qcon                  { Con (ann $1) $1 }++> sysdcon_nolist :: { PExp L }+>       : '(' ')'               { p_unit_con              ($1 <^^> $2 <** [$1,$2]) }+>       | '(#' '#)'             { p_unboxed_singleton_con ($1 <^^> $2 <** [$1,$2]) }+>       | '(#' commas '#)'      { p_tuple_con             ($1 <^^> $3 <** $1:reverse ($3:$2)) Unboxed (length $2) }+>       | '(' commas ')'        { p_tuple_con             ($1 <^^> $3 <** $1:reverse ($3:$2)) Boxed (length $2) }+++> sysdcon :: { PExp L }+>       : '[' ']'               { List                    ($1 <^^> $2 <** [$1,$2]) [] }+>       | sysdcon_nolist        { $1 }++> var   :: { Name L }+>       : varid                 { $1 }+>       | '(' varsym ')'        { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> var_no_safety :: { Name L }+>       : varid_no_safety       { $1 }+>       | '(' varsym ')'        { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qvar  :: { QName L }+>       : qvarid                { $1 }+>       | '(' qvarsym ')'       { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++Implicit parameter+> ivar  :: { IPName L }+>       : ivarid                { $1 }++> con   :: { Name L }+>       : conid                 { $1 }+>       | '(' consym ')'        { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> con_list :: { ([S], [Name L]) }+>          : con                { ([], [$1]) }+>          | con ',' con_list   { let (ss, cs) = $3+>                                 in ($2 : ss, $1 :cs) }++> qcon  :: { QName L }+>       : qconid                { $1 }+>       | '(' gconsym ')'       { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++> varop :: { Name L }+>       : varsym                { $1 }+>       | '`' varid '`'         { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qvarop :: { QName L }+>       : qvarsym               { $1 }+>       | '`' qvarid '`'        { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++> qvaropm :: { QName L }+>       : qvarsymm              { $1 }+>       | '`' qvarid '`'        { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++> conop :: { Name L }+>       : consym                { $1 }+>       | '`' conid '`'         { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qconop :: { QName L }+>       : gconsym               { $1 }+>       | '`' qconid '`'        { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++> op    :: { Op L }+>       : varop                 { VarOp (ann $1) $1 }+>       | conop                 { ConOp (ann $1) $1 }++> qop   :: { QOp L }+>       : qvarop                { QVarOp (ann $1) $1 }+>       | qconop                { QConOp (ann $1) $1 }++> qopm  :: { QOp L }+>       : qvaropm               { QVarOp (ann $1) $1 }+>       | qconop                { QConOp (ann $1) $1 }++> gconsym :: { QName L }+>       : ':'                   { list_cons_name (nIS $1) }+>       | qconsym               { $1 }++> overloaded_label :: { PExp L }+>       : LABELVARID            { let Loc l (LabelVarId v) = $1 in OverloadedLabel+>                                                                      (nIS l) v }++-----------------------------------------------------------------------------+Identifiers and Symbols++> qvarid :: { QName L }+>       : varid                 { UnQual (ann $1) $1 }+>       | QVARID                { let {Loc l (QVarId q) = $1; nis = nIS l}+>                                  in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }+>       | '_'                   { hole_name       (nIS $1) }++> varid_no_safety :: { Name L }+>       : VARID                 { let Loc l (VarId v) = $1 in Ident (nIS l) v }+>       | 'as'                  { as_name         (nIS $1) }+>       | 'qualified'           { qualified_name  (nIS $1) }+>       | 'hiding'              { hiding_name     (nIS $1) }+>       | 'export'              { export_name     (nIS $1) }+>       | 'stdcall'             { stdcall_name    (nIS $1) }+>       | 'ccall'               { ccall_name      (nIS $1) }+>       | 'cplusplus'           { cplusplus_name  (nIS $1) }+>       | 'dotnet'              { dotnet_name     (nIS $1) }+>       | 'jvm'                 { jvm_name        (nIS $1) }+>       | 'js'                  { js_name         (nIS $1) }+>       | 'javascript'          { javascript_name (nIS $1) }+>       | 'capi'                { capi_name       (nIS $1) }+>       | 'stock'               { stock_name      (nIS $1) }+>       | 'anyclass'            { anyclass_name   (nIS $1) }++> varid :: { Name L }+>       : varid_no_safety       { $1 }+>       | 'safe'                { safe_name       (nIS $1) }+>       | 'unsafe'              { unsafe_name     (nIS $1) }+>       | 'interruptible'       { interruptible_name (nIS $1) }+>       | 'threadsafe'          { threadsafe_name (nIS $1) }+>	      | 'forall'                          { forall_name	  (nIS $1) }+>	      | 'family'                          { family_name     (nIS $1) }+>       | 'role'                { role_name  (nIS $1) }+++Implicit parameter+> ivarid :: { IPName L }+>       : IDUPID                { let Loc l (IDupVarId i) = $1 in IPDup (nIS l) i }+>       | ILINID                { let Loc l (ILinVarId i) = $1 in IPLin (nIS l) i }++> qconid :: { QName L }+>       : conid                 { UnQual (ann $1) $1 }+>       | QCONID                { let {Loc l (QConId q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }++> conid :: { Name L }+>       : CONID                 { let Loc l (ConId c) = $1 in Ident (nIS l) c }++> qconsym :: { QName L }+>       : consym                { UnQual (ann $1) $1 }+>       | QCONSYM               { let {Loc l (QConSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }++> consym :: { Name L }+>       : CONSYM                { let Loc l (ConSym c) = $1 in Symbol (nIS l) c }++> qvarsym :: { QName L }+>       : qvarsym_('*')         { $1 }++> qvarsym_(ostar) :: { QName L }+>       : varsym_(ostar)        { UnQual (ann $1) $1 }+>       | qvarsym1              { $1 }++> qvarsymm :: { QName L }+>       : varsymm               { UnQual (ann $1) $1 }+>       | qvarsym1              { $1 }++> varsym :: { Name L }+>       : varsym_('*')          { $1 }++> varsym_(ostar) :: { Name L }+>       : varsymm_(ostar)       { $1 }+>       | '-'                   { minus_name (nIS $1) }++> varsymm :: { Name L }+>       : varsymm_('*')         { $1 }++> varsymm_(ostar) :: { Name L } -- varsym not including '-'+>       : VARSYM                { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }+>       | '!'                   { bang_name (nIS $1) }+>       | '.'                   { dot_name  (nIS $1) }+>       | ostar                 { star_name (nIS $1) }++> qvarsym1 :: { QName L }+>       : QVARSYM               { let {Loc l (QVarSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }++> literal :: { Literal L }+>       : INT                   { let Loc l (IntTok        (i,raw)) = $1 in Int        (nIS l) i raw }+>       | CHAR                  { let Loc l (Character     (c,raw)) = $1 in Char       (nIS l) c raw }+>       | RATIONAL              { let Loc l (FloatTok      (r,raw)) = $1 in Frac       (nIS l) r raw }+>       | STRING                { let Loc l (StringTok     (s,raw)) = $1 in String     (nIS l) s raw }+>       | PRIMINT               { let Loc l (IntTokHash    (i,raw)) = $1 in PrimInt    (nIS l) i raw }+>       | PRIMWORD              { let Loc l (WordTokHash   (w,raw)) = $1 in PrimWord   (nIS l) w raw }+>       | PRIMFLOAT             { let Loc l (FloatTokHash  (f,raw)) = $1 in PrimFloat  (nIS l) f raw }+>       | PRIMDOUBLE            { let Loc l (DoubleTokHash (d,raw)) = $1 in PrimDouble (nIS l) d raw }+>       | PRIMCHAR              { let Loc l (CharacterHash (c,raw)) = $1 in PrimChar   (nIS l) c raw }+>       | PRIMSTRING            { let Loc l (StringHash    (s,raw)) = $1 in PrimString (nIS l) s raw }++-----------------------------------------------------------------------------+Layout++> open  :: { S }  :       {% pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -} }++> close :: { S }+>       : vccurly               { $1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} } -- context popped in lexer.+>       | error                 {% popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -} }++-----------------------------------------------------------------------------+Pattern Synonyms+-- Pattern synonyms++> pat_syn :: { Decl L }+>       : pattern_synonym_decl          {% checkEnabled PatternSynonyms >> return $1 }++-- Glasgow extension: pattern synonyms+>  pattern_synonym_decl :: { Decl L }+>       : 'pattern' pattern_synonym_lhs '=' pat+>            { let l = nIS $1 <++> ann $4 <** [$1,$3]+>              in PatSyn l $2 $4 ImplicitBidirectional+>                  }+>       | 'pattern' pattern_synonym_lhs '<-' pat+>            {   let l = nIS $1 <++> ann $4 <** [$1,$3]+>                in PatSyn l $2 $4 Unidirectional+>            }+>       | 'pattern' pattern_synonym_lhs '<-' pat where_decls+>           {  let l = nIS $1 <++> ann $4 <** [$1, $3]+>              in PatSyn l $2 $4 $5}++>+> pattern_synonym_lhs :: { Pat L }+>       : con vars0  { let l = case $2 of+>                                  [] -> ann $1+>                                  (_:_) -> ann $1 <++> (ann $ last $2)+>                         in PApp l (UnQual (ann $1) $1) $2 }+>       | varid qconsym varid  { PInfixApp (ann $1 <++> ann $3) (PVar (ann $1) $1) $2 (PVar (ann $3) $3) }+>       | con '{' commavars '}' {  let { (ss, ns) = $3 ;+>                                        qnames = (map (\n -> UnQual (ann n) n) ns) }+>                                  in PRec (ann $1 <++> nIS $4 <** ($2 : ss ++ [$4]))+>                                          (UnQual (ann $1) $1) (map (\q -> PFieldPun (ann q) q) qnames) }+>+> vars0 :: { [Pat L] }+>       :  {- empty -}        { [] }+>       |  varid vars0        { PVar (ann $1) $1 : $2 }++> commavars :: { ([S], [Name L]) }+>       : varid                 { ([], [$1] ) }+>       | varid ',' commavars   { let (ss, ns) = $3 in ($2 : ss, $1 : ns) }++> where_decls :: { PatternSynDirection L }+>       : 'where' '{' decls '}'       {%  checkExplicitPatSyn $1 $2 $3 $4 }+>       | 'where' open decls close    {%  checkExplicitPatSyn $1 $2 $3 $4 }++> pattern_synonym_sig :: { Decl L }+>       : 'pattern' con_list '::' pstype+>             {% do { checkEnabled PatternSynonyms ;+>                     let {(qtvs, ps, prov, req_vars, req, ty) = $4} ;+>                     let {sig = PatSynSig (nIS $1 <++> ann ty <** [$1] ++ fst $2 ++ [$3] ++ ps)  (snd $2) qtvs prov req_vars req ty} ;+>                     return sig } }++> pstype :: { (Maybe [TyVarBind L], [S], Maybe (Context L), Maybe [TyVarBind L]+>                                       , Maybe (Context L), Type L )}+>       :  'forall' ktyvars '.' pstype+>             { let (qtvs, ps, prov, req_vars, req, ty) = $4+>                in (Just (reverse (fst $2) ++ fromMaybe [] qtvs), ($1 : $3 : ps), prov, req_vars, req, ty) }+>       | context context type+>             {% do { c1 <- checkContext (Just $1) ;+>                     c2 <- checkContext (Just $2) ;+>                     t  <- checkType $3 ;+>                     return $ (Nothing, [], c1, Nothing, c2, t) }}+>       | context 'forall' ktyvars '.' context type+>             {% do { c1 <- checkContext (Just $1) ;+>                     c2 <- checkContext (Just $5) ;+>                     t  <- checkType $6 ;+>                     return $ (Nothing, [], c1, Just (reverse (fst $3)), c2, t) }}+>       | context type+>              {% do { c1 <- checkContext (Just $1);+>                      t <- checkType $2;+>                      return (Nothing, [], c1, Nothing, Nothing, t) } }+>       | type+>              {% checkType $1 >>= \t -> return (Nothing, [], Nothing, Nothing, Nothing, t) }++-----------------------------------------------------------------------------+Deriving strategies++> deriv_strategy_no_via :: { DerivStrategy L }+>       : 'stock'               {% do { checkEnabled DerivingStrategies+>                                     ; return (DerivStock (nIS $1)) } }+>       | 'anyclass'            {% do { checkEnabled DerivingStrategies+>                                     ; checkEnabled DeriveAnyClass+>                                     ; return (DerivAnyclass (nIS $1)) } }+>       | 'newtype'             {% do { checkEnabled DerivingStrategies+>                                     ; checkEnabled GeneralizedNewtypeDeriving+>                                     ; return (DerivNewtype (nIS $1)) } }++> deriv_strategy_via :: { DerivStrategy L }+>       : 'via' truedtype       {% do { checkEnabled DerivingVia+>                                     ; return (DerivVia (nIS $1) $2) } }++> deriv_standalone_strategy :: { Maybe (DerivStrategy L) }+>       : deriv_strategy_no_via { Just $1 }+>       | deriv_strategy_via    { Just $1 }+>       | {- empty -}           { Nothing }++-----------------------------------------------------------------------------+Miscellaneous (mostly renamings)++> modid :: { ModuleName L }+>       : CONID                 { let Loc l (ConId  n) = $1 in ModuleName (nIS l) n }+>       | QCONID                { let Loc l (QConId n) = $1 in ModuleName (nIS l) (fst n ++ '.':snd n) }++> tyconorcls :: { Name L }+>       : con                   { $1 }++> qtyconorcls :: { QName L }+>       : qcon                  { $1 }++> tyvar :: { Name L }+>       : tyvarid               { $1 }++> tyvarid :: { Name L }+>       : varid_no_safety       { $1 }+>       | 'safe'                { safe_name       (nIS $1) }+>       | 'unsafe'              { unsafe_name     (nIS $1) }+>       | 'threadsafe'          { threadsafe_name (nIS $1) }+        | 'forall'		{ forall_name	  (nIS $1) }+        | 'family'		{ family_name     (nIS $1) }++> qtyvarop_(ostar) :: { QName L }+> qtyvarop_ : '`' tyvar '`'     { UnQual ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }+>          | tyvarsym_(ostar)   { UnQual (ann $1) $1 }++> tyvarsym_(ostar) :: { Name L }+> tyvarsym : VARSYM              { let Loc l (VarSym x) = $1 in Symbol (nIS l) x }+>          | '-'                 { Symbol (nIS $1) "-" }+>          | ostar                   { Symbol (nIS $1) "*" }++> impdeclsblock :: { ([ImportDecl L],[S],L) }+>               : '{'  optsemis impdecls optsemis '}'         { let (ids, ss) = $3 in (ids, $1 : reverse $2 ++ ss ++ reverse $4 ++ [$5], $1 <^^> $5) }+>               | open optsemis impdecls optsemis close       { let (ids, ss) = $3 in (ids, $1 : reverse $2 ++ ss ++ reverse $4 ++ [$5], $1 <^^> $5) }++Exported as partial parsers:++> moduletopname :: { (([ModulePragma L], [S], L), Maybe (ModuleName L)) }+>               : toppragmas 'module' modid     { ($1, Just $3) }+>               | toppragmas {- empty -}        { ($1, Nothing) }++> moduletophead :: { (([ModulePragma L], [S], L), Maybe (ModuleHead L)) }+>               : toppragmas optmodulehead      { ($1, $2) }++> moduletopimps :: { (([ModulePragma L], [S], L), Maybe (ModuleHead L), Maybe ([ImportDecl L],[S],L)) }+>               : toppragmas optmodulehead impdeclsblock      { ($1, $2, Just $3) }+>               | toppragmas optmodulehead {- empty -}        { ($1, $2, Nothing) }++-----------------------------------------------------------------------------++> {++> type L = SrcSpanInfo -- just for convenience+> type S = SrcSpan++> parseError :: Loc Token -> P a+> parseError t = fail $ "Parse error: " ++ showToken (unLoc t)++> (<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo+> a <> b = ann a <++> ann b+>+> infixl 6 <>++> nIS = noInfoSpan+> iS = infoSpan++> mparseDecl :: P (Decl SrcSpanInfo)+> mparseDecl = do+>     (is, ds, _, _) <- mparseDeclAux+>     when (not $ null is) $+>        fail $ "Expected single declaration, found import declaration"+>     checkSingleDecl ds  > }
src/Language/Haskell/Exts/Lexer.hs view
@@ -1,1269 +1,47 @@-{-# OPTIONS_HADDOCK hide #-}--------------------------------------------------------------------------------- |--- Module      :  Language.Haskell.Exts.Annotated.Lexer--- Copyright   :  (c) The GHC Team, 1997-2000---                (c) Niklas Broberg, 2004-2009--- License     :  BSD-style (see the file LICENSE.txt)------ Maintainer  :  Niklas Broberg, d00nibro@chalmers.se--- Stability   :  stable--- Portability :  portable------ Lexer for Haskell, with some extensions.------------------------------------------------------------------------------------- ToDo: Introduce different tokens for decimal, octal and hexadecimal (?)--- ToDo: FloatTok should have three parts (integer part, fraction, exponent) (?)--- ToDo: Use a lexical analyser generator (lx?)--module Language.Haskell.Exts.Lexer (Token(..), showToken, lexer) where--import Language.Haskell.Exts.ParseMonad-import Language.Haskell.Exts.SrcLoc-import Language.Haskell.Exts.Comments-import Language.Haskell.Exts.Extension-import Language.Haskell.Exts.ExtScheme--import Data.Char-import Data.Ratio-import Data.List (intersperse)-import Control.Monad (when)---- import Debug.Trace (trace)--data Token-        = VarId String-        | QVarId (String,String)-        | IDupVarId (String)        -- duplicable implicit parameter-        | ILinVarId (String)        -- linear implicit parameter-        | ConId String-        | QConId (String,String)-        | DVarId [String]       -- to enable varid's with '-' in them-        | VarSym String-        | ConSym String-        | QVarSym (String,String)-        | QConSym (String,String)-        | IntTok (Integer, String)-        | FloatTok (Rational, String)-        | Character (Char, String)-        | StringTok (String, String)-        | IntTokHash (Integer, String)        -- 1#-        | WordTokHash (Integer, String)       -- 1##-        | FloatTokHash (Rational, String)     -- 1.0#-        | DoubleTokHash (Rational, String)    -- 1.0##-        | CharacterHash (Char, String)        -- c#-        | StringHash (String, String)         -- "Hello world!"#---- Symbols--        | LeftParen-        | RightParen-        | LeftHashParen-        | RightHashParen-        | LeftCurlyBar-        | RightCurlyBar-        | SemiColon-        | LeftCurly-        | RightCurly-        | VRightCurly           -- a virtual close brace-        | LeftSquare-        | RightSquare-        | Comma-        | Underscore-        | BackQuote---- Reserved operators--        | Dot           -- reserved for use with 'forall x . x'-        | DotDot-        | Colon-        | DoubleColon-        | Equals-        | Backslash-        | Bar-        | LeftArrow-        | RightArrow-        | At-        | Tilde-        | DoubleArrow-        | Minus-        | Exclamation-        | Star-        | LeftArrowTail         -- >--        | RightArrowTail        -- -<-        | LeftDblArrowTail      -- >>--        | RightDblArrowTail     -- -<<---- Template Haskell-        | THExpQuote            -- [| or [e|-        | THPatQuote            -- [p|-        | THDecQuote            -- [d|-        | THTypQuote            -- [t|-        | THCloseQuote          -- |]-        | THIdEscape (String)   -- dollar x-        | THParenEscape         -- dollar (-        | THVarQuote            -- 'x (but without the x)-        | THTyQuote             -- ''T (but without the T)-        | THQuasiQuote (String,String)  -- [$...|...]---- HaRP-        | RPGuardOpen       -- (|-        | RPGuardClose      -- |)-        | RPCAt             -- @:---- Hsx-        | XCodeTagOpen      -- <%-        | XCodeTagClose     -- %>-        | XStdTagOpen       -- <-        | XStdTagClose      -- >-        | XCloseTagOpen     -- </-        | XEmptyTagClose    -- />-        | XPCDATA String-        | XRPatOpen             -- <[-        | XRPatClose            -- ]>---- Pragmas--        | PragmaEnd                     -- #-}-        | RULES-        | INLINE Bool-        | INLINE_CONLIKE-        | SPECIALISE-        | SPECIALISE_INLINE Bool-        | SOURCE-        | DEPRECATED-        | WARNING-        | SCC-        | GENERATED-        | CORE-        | UNPACK-        | OPTIONS (Maybe String,String)---        | CFILES  String---        | INCLUDE String-        | LANGUAGE-        | ANN---- Reserved Ids--        | KW_As-        | KW_By         -- transform list comprehensions-        | KW_Case-        | KW_Class-        | KW_Data-        | KW_Default-        | KW_Deriving-        | KW_Do-        | KW_MDo-        | KW_Else-        | KW_Family     -- indexed type families-        | KW_Forall     -- universal/existential types-        | KW_Group      -- transform list comprehensions-        | KW_Hiding-        | KW_If-        | KW_Import-        | KW_In-        | KW_Infix-        | KW_InfixL-        | KW_InfixR-        | KW_Instance-        | KW_Let-        | KW_Module-        | KW_NewType-        | KW_Of-        | KW_Proc       -- arrows-        | KW_Rec        -- arrows-        | KW_Then-        | KW_Type-        | KW_Using      -- transform list comprehensions-        | KW_Where-        | KW_Qualified--                -- FFI-        | KW_Foreign-        | KW_Export-        | KW_Safe-        | KW_Unsafe-        | KW_Threadsafe-        | KW_StdCall-        | KW_CCall--        | EOF-        deriving (Eq,Show)--reserved_ops :: [(String,(Token, Maybe ExtScheme))]-reserved_ops = [- ( "..", (DotDot,       Nothing) ),- ( ":",  (Colon,        Nothing) ),- ( "::", (DoubleColon,  Nothing) ),- ( "=",  (Equals,       Nothing) ),- ( "\\", (Backslash,    Nothing) ),- ( "|",  (Bar,          Nothing) ),- ( "<-", (LeftArrow,    Nothing) ),- ( "->", (RightArrow,   Nothing) ),- ( "@",  (At,           Nothing) ),- ( "@:", (RPCAt,        Just (Any [RegularPatterns])) ),- ( "~",  (Tilde,        Nothing) ),- ( "=>", (DoubleArrow,  Nothing) ),- ( "*",  (Star,         Just (Any [KindSignatures])) ),- -- Arrows notation- ( "-<",  (LeftArrowTail,       Just (Any [Arrows])) ),- ( ">-",  (RightArrowTail,      Just (Any [Arrows])) ),- ( "-<<", (LeftDblArrowTail,    Just (Any [Arrows])) ),- ( ">>-", (RightDblArrowTail,   Just (Any [Arrows])) ),- -- Unicode notation- ( "\x2190",    (LeftArrow,     Just (Any  [UnicodeSyntax])) ),- ( "\x2192",    (RightArrow,    Just (Any  [UnicodeSyntax])) ),- ( "\x21d2",    (DoubleArrow,   Just (Any  [UnicodeSyntax])) ),- ( "\x2919",    (LeftArrowTail,     Just (All [UnicodeSyntax, Arrows])) ),- ( "\x291a",    (RightArrowTail,    Just (All [UnicodeSyntax, Arrows])) ),- ( "\x291b",    (LeftDblArrowTail,  Just (All [UnicodeSyntax, Arrows])) ),- ( "\x291c",    (RightDblArrowTail, Just (All [UnicodeSyntax, Arrows])) ),- ( "\x2605",    (Star,              Just (All [UnicodeSyntax, KindSignatures])) )- ]--special_varops :: [(String,(Token, Maybe ExtScheme))]-special_varops = [- -- the dot is only a special symbol together with forall, but can still be used as function composition- ( ".",  (Dot,          Just (Any [ExplicitForall, ExistentialQuantification])) ),- ( "-",  (Minus,        Nothing) ),- ( "!",  (Exclamation,  Nothing) )- ]--reserved_ids :: [(String,(Token, Maybe ExtScheme))]-reserved_ids = [- ( "_",         (Underscore,    Nothing) ),- ( "by",        (KW_By,         Just (Any [TransformListComp])) ),- ( "case",      (KW_Case,       Nothing) ),- ( "class",     (KW_Class,      Nothing) ),- ( "data",      (KW_Data,       Nothing) ),- ( "default",   (KW_Default,    Nothing) ),- ( "deriving",  (KW_Deriving,   Nothing) ),- ( "do",        (KW_Do,         Nothing) ),- ( "else",      (KW_Else,       Nothing) ),- ( "family",    (KW_Family,     Just (Any [TypeFamilies])) ),        -- indexed type families- ( "forall",    (KW_Forall,     Just (Any [ExplicitForall, ExistentialQuantification])) ),    -- universal/existential quantification- ( "group",     (KW_Group,      Just (Any [TransformListComp])) ),- ( "if",        (KW_If,         Nothing) ),- ( "import",    (KW_Import,     Nothing) ),- ( "in",        (KW_In,         Nothing) ),- ( "infix",     (KW_Infix,      Nothing) ),- ( "infixl",    (KW_InfixL,     Nothing) ),- ( "infixr",    (KW_InfixR,     Nothing) ),- ( "instance",  (KW_Instance,   Nothing) ),- ( "let",       (KW_Let,        Nothing) ),- ( "mdo",       (KW_MDo,        Just (Any [RecursiveDo])) ),- ( "module",    (KW_Module,     Nothing) ),- ( "newtype",   (KW_NewType,    Nothing) ),- ( "of",        (KW_Of,         Nothing) ),- ( "proc",      (KW_Proc,       Just (Any [Arrows])) ),- ( "rec",       (KW_Rec,        Just (Any [Arrows])) ),- ( "then",      (KW_Then,       Nothing) ),- ( "type",      (KW_Type,       Nothing) ),- ( "using",     (KW_Using,      Just (Any [TransformListComp])) ),- ( "where",     (KW_Where,      Nothing) ),---- FFI- ( "foreign",   (KW_Foreign,    Just (Any [ForeignFunctionInterface])) ),---- Unicode- ( "\x2200",    (KW_Forall,     Just (All [UnicodeSyntax, ExplicitForall])) )- ]---special_varids :: [(String,(Token, Maybe ExtScheme))]-special_varids = [- ( "as",        (KW_As,         Nothing) ),- ( "qualified", (KW_Qualified,  Nothing) ),- ( "hiding",    (KW_Hiding,     Nothing) ),---- FFI- ( "export",     (KW_Export,        Just (Any [ForeignFunctionInterface])) ),- ( "safe",       (KW_Safe,          Just (Any [ForeignFunctionInterface])) ),- ( "unsafe",     (KW_Unsafe,        Just (Any [ForeignFunctionInterface])) ),- ( "threadsafe", (KW_Threadsafe,    Just (Any [ForeignFunctionInterface])) ),- ( "stdcall",    (KW_StdCall,       Just (Any [ForeignFunctionInterface])) ),- ( "ccall",      (KW_CCall,         Just (Any [ForeignFunctionInterface])) )- ]--pragmas :: [(String,Token)]-pragmas = [- ( "rules",             RULES           ),- ( "inline",            INLINE True     ),- ( "noinline",          INLINE False    ),- ( "notinline",         INLINE False    ),- ( "specialise",        SPECIALISE      ),- ( "specialize",        SPECIALISE      ),- ( "source",            SOURCE          ),- ( "deprecated",        DEPRECATED      ),- ( "warning",           WARNING         ),- ( "ann",               ANN             ),- ( "scc",               SCC             ),- ( "generated",         GENERATED       ),- ( "core",              CORE            ),- ( "unpack",            UNPACK          ),- ( "language",          LANGUAGE        ),- ( "options",           OPTIONS undefined ) -- we'll tweak it before use - promise!--- ( "cfiles",            CFILES  undefined ), -- same here...--- ( "include",           INCLUDE undefined )  -- ...and here!- ]--isIdent, isHSymbol :: Char -> Bool-isIdent   c = isAlpha c || isDigit c || c == '\'' || c == '_'--isHSymbol c = c `elem` ":!#%&*./?@\\-" || ((isSymbol c || isPunctuation c) && not (c `elem` "(),;[]`{}_\"'"))--matchChar :: Char -> String -> Lex a ()-matchChar c msg = do-    s <- getInput-    if null s || head s /= c then fail msg else discard 1---- The top-level lexer.--- We need to know whether we are at the beginning of the line to decide--- whether to insert layout tokens.--lexer :: (Loc Token -> P a) -> P a-lexer = runL topLexer--topLexer :: Lex a (Loc Token)-topLexer = do-    b <- pullCtxtFlag-    if b then -- trace (show cf ++ ": " ++ show VRightCurly) $-              setBOL >> getSrcLocL >>= \l -> return (Loc (mkSrcSpan l l) VRightCurly) -- the lex context state flags that we must do an empty {} - UGLY-     else do-        bol <- checkBOL-        (bol, ws) <- lexWhiteSpace bol-        -- take care of whitespace in PCDATA-        ec <- getExtContext-        case ec of-         -- if there was no linebreak, and we are lexing PCDATA,-         -- then we want to care about the whitespace.-         -- We don't bother to test for XmlSyntax, since we-         -- couldn't end up in ChildCtxt otherwise.-         Just ChildCtxt | not bol && ws -> getSrcLocL >>= \l -> return $ Loc (mkSrcSpan l l) $ XPCDATA " "-         _ -> do startToken-                 sl <- getSrcLocL-                 t <- if bol then lexBOL    -- >>= \t -> trace ("BOL: " ++ show t) (return t)-                             else lexToken  -- >>= \t -> trace (show t) (return t)-                 el <- getSrcLocL-                 return $ Loc (mkSrcSpan sl el) t--lexWhiteSpace :: Bool -> Lex a (Bool, Bool)-lexWhiteSpace bol = do-    s <- getInput-    ignL <- ignoreLinePragmasL-    case s of-        -- If we find a recognised pragma, we don't want to treat it as a comment.-        '{':'-':'#':rest | isRecognisedPragma rest -> return (bol, False)-                         | isLinePragma rest && not ignL -> do -                            (l, fn) <- lexLinePragma-                            setSrcLineL l-                            setLineFilenameL fn-                            lexWhiteSpace True-        '{':'-':_ -> do-            loc <- getSrcLocL-            discard 2-            (bol, c) <- lexNestedComment bol ""-            loc2 <- getSrcLocL-            pushComment $ Comment True (mkSrcSpan loc loc2) (reverse c)-            (bol, _) <- lexWhiteSpace bol-            return (bol, True)-        '-':'-':s | all (== '-') (takeWhile isHSymbol s) -> do-            loc    <- getSrcLocL-            discard 2-            dashes <- lexWhile (== '-')-            rest   <- lexWhile (/= '\n')-            s' <- getInput-            loc2 <- getSrcLocL-            let com = Comment False (mkSrcSpan loc loc2) $ dashes ++ rest-            case s' of-                [] -> pushComment com >> return (False, True)-                _ -> do-                    pushComment com-                    lexNewline-                    lexWhiteSpace True-                    return (True, True)-        '\n':_ -> do-            lexNewline-            lexWhiteSpace True-            return (True, True)-        '\t':_ -> do-            lexTab-            (bol, _) <- lexWhiteSpace bol-            return (bol, True)-        c:_ | isSpace c -> do-            discard 1-            (bol, _) <- lexWhiteSpace bol-            return (bol, True)-        _ -> return (bol, False)--isRecognisedPragma, isLinePragma :: String -> Bool-isRecognisedPragma str = let pragma = map toLower . takeWhile isAlphaNum . dropWhile isSpace $ str-                          in case lookup pragma pragmas of-                              Nothing -> False-                              _       -> True--isLinePragma str = let pragma = map toLower . takeWhile isAlphaNum . dropWhile isSpace $ str-                    in case pragma of-                        "line"  -> True-                        _       -> False--lexLinePragma :: Lex a (Int, String)-lexLinePragma = do-    discard 3   -- {-#-    lexWhile isSpace-    discard 4   -- LINE-    lexWhile isSpace-    i <- lexWhile isDigit-    lexWhile isSpace-    matchChar '"' "Improperly formatted LINE pragma"-    fn <- lexWhile (/= '"')-    matchChar '"' "Impossible - lexLinePragma"-    lexWhile isSpace-    mapM (flip matchChar "Improperly formatted LINE pragma") "#-}"-    lexNewline-    return (read i, fn)--lexNestedComment :: Bool -> String -> Lex a (Bool, String)-lexNestedComment bol str = do-    s <- getInput-    case s of-        '-':'}':_ -> discard 2 >> return (bol, str)-        '{':'-':_ -> do-            discard 2-            (bol, c) <- lexNestedComment bol ("-{" ++ str) -- rest of the subcomment-            lexNestedComment bol ("}-" ++ c  ) -- rest of this comment-        '\t':_    -> lexTab >> lexNestedComment bol ('\t':str)-        '\n':_    -> lexNewline >> lexNestedComment True ('\n':str)-        c:_       -> discard 1 >> lexNestedComment bol (c:str)-        []        -> fail "Unterminated nested comment"---- When we are lexing the first token of a line, check whether we need to--- insert virtual semicolons or close braces due to layout.--lexBOL :: Lex a Token-lexBOL = do-    pos <- getOffside-    -- trace ("Off: " ++ (show pos)) $ do-    case pos of-        LT -> do-                -- trace "layout: inserting '}'\n" $-            -- Set col to 0, indicating that we're still at the-            -- beginning of the line, in case we need a semi-colon too.-            -- Also pop the context here, so that we don't insert-            -- another close brace before the parser can pop it.-            setBOL-            popContextL "lexBOL"-            return VRightCurly-        EQ ->-            -- trace "layout: inserting ';'\n" $-            return SemiColon-        GT -> lexToken--lexToken :: Lex a Token-lexToken = do-    ec <- getExtContext-    -- we don't bother to check XmlSyntax since we couldn't-    -- have ended up in a non-Nothing context if it wasn't-    -- enabled.-    case ec of-     Just HarpCtxt     -> lexHarpToken-     Just TagCtxt      -> lexTagCtxt-     Just CloseTagCtxt -> lexCloseTagCtxt-     Just ChildCtxt    -> lexChildCtxt-     Just CodeTagCtxt  -> lexCodeTagCtxt-     _         -> lexStdToken---lexChildCtxt :: Lex a Token-lexChildCtxt = do-    -- if we ever end up here, then XmlSyntax must be on.-    s <- getInput-    case s of-        '<':'%':_ -> do discard 2-                        pushExtContextL CodeTagCtxt-                        return XCodeTagOpen-        '<':'/':_ -> do discard 2-                        popExtContextL "lexChildCtxt"-                        pushExtContextL CloseTagCtxt-                        return XCloseTagOpen-        '<':'[':_ -> do discard 2-                        pushExtContextL HarpCtxt-                        return XRPatOpen-        '<':_     -> do discard 1-                        pushExtContextL TagCtxt-                        return XStdTagOpen-        _     -> lexPCDATA---lexPCDATA :: Lex a Token-lexPCDATA = do-    -- if we ever end up here, then XmlSyntax must be on.-    s <- getInput-    case s of-        [] -> return EOF-        _  -> case s of-            '\n':_ -> do-                x <- lexNewline >> lexPCDATA-                case x of-                 XPCDATA p -> return $ XPCDATA $ '\n':p-                 EOF -> return EOF-            '<':_ -> return $ XPCDATA ""-            _ -> do let pcd = takeWhile (\c -> not $ elem c "<\n") s-                        l = length pcd-                    discard l-                    x <- lexPCDATA-                    case x of-                     XPCDATA pcd' -> return $ XPCDATA $ pcd ++ pcd'-                     EOF -> return EOF---lexCodeTagCtxt :: Lex a Token-lexCodeTagCtxt = do-    -- if we ever end up here, then XmlSyntax must be on.-    s <- getInput-    case s of-        '%':'>':_ -> do discard 2-                        popExtContextL "lexCodeTagContext"-                        return XCodeTagClose-        _     -> lexStdToken--lexCloseTagCtxt :: Lex a Token-lexCloseTagCtxt = do-    -- if we ever end up here, then XmlSyntax must be on.-    s <- getInput-    case s of-        '>':_     -> do discard 1-                        popExtContextL "lexCloseTagCtxt"-                        return XStdTagClose-        _     -> lexStdToken--lexTagCtxt :: Lex a Token-lexTagCtxt = do-    -- if we ever end up here, then XmlSyntax must be on.-    s <- getInput-    case s of-        '/':'>':_ -> do discard 2-                        popExtContextL "lexTagCtxt: Empty tag"-                        return XEmptyTagClose-        '>':_     -> do discard 1-                        popExtContextL "lexTagCtxt: Standard tag"-                        pushExtContextL ChildCtxt-                        return XStdTagClose-        _     -> lexStdToken--lexHarpToken :: Lex a Token-lexHarpToken = do-    -- if we ever end up here, then RegularPatterns must be on.-    s <- getInput-    case s of-        ']':'>':_ -> do discard 2-                        popExtContextL "lexHarpToken"-                        return XRPatClose-        _     -> lexStdToken--lexStdToken :: Lex a Token-lexStdToken = do-    s <- getInput-    exts <- getExtensionsL-    case s of-        [] -> return EOF--        '0':c:d:_ | toLower c == 'o' && isOctDigit d -> do-                        discard 2-                        (n, str) <- lexOctal-                        return (IntTok (n, '0':c:str))-                  | toLower c == 'x' && isHexDigit d -> do-                        discard 2-                        (n, str) <- lexHexadecimal-                        return (IntTok (n, '0':c:str))--        -- implicit parameters-        '?':c:_ | isLower c && ImplicitParams `elem` exts -> do-                        discard 1-                        id <- lexWhile isIdent-                        return $ IDupVarId id--        '%':c:_ | isLower c && ImplicitParams `elem` exts -> do-                        discard 1-                        id <- lexWhile isIdent-                        return $ ILinVarId id-        -- end implicit parameters--        -- harp-        '(':'|':c:_  | isHSymbol c -> discard 1 >> return LeftParen-        '(':'|':_ | RegularPatterns `elem` exts ->-                     do discard 2-                        return RPGuardOpen-        '|':')':_ | RegularPatterns `elem` exts ->-                     do discard 2-                        return RPGuardClose-        {- This is handled by the reserved_ops above.-        '@':':':_ | RegularPatterns `elem` exts ->-                     do discard 2-                        return RPCAt -}--        -- template haskell-        '[':'|':_ | TemplateHaskell `elem` exts -> do-                discard 2-                return $ THExpQuote--        '[':c:'|':_ | c == 'e' && TemplateHaskell `elem` exts -> do-                        discard 3-                        return $ THExpQuote-                    | c == 'p' && TemplateHaskell `elem` exts -> do-                        discard 3-                        return THPatQuote-                    | c == 'd' && TemplateHaskell `elem` exts -> do-                        discard 3-                        return THDecQuote-                    | c == 't' && TemplateHaskell `elem` exts -> do-                        discard 3-                        return THTypQuote-        '[':'$':c:_ | isLower c && QuasiQuotes `elem` exts ->-                        discard 2 >> lexQuasiQuote--        '|':']':_ | TemplateHaskell `elem` exts -> do-                        discard 2-                        return THCloseQuote--        '$':c:_ | isLower c && TemplateHaskell `elem` exts -> do-                        discard 1-                        id <- lexWhile isIdent-                        return $ THIdEscape id-                | c == '(' && TemplateHaskell `elem` exts -> do-                        discard 2-                        return THParenEscape-        -- end template haskell--        -- hsx-        '<':'%':_ | XmlSyntax `elem` exts -> do-                        discard 2-                        pushExtContextL CodeTagCtxt-                        return XCodeTagOpen-        '<':c:_ | isAlpha c && XmlSyntax `elem` exts -> do-                        discard 1-                        pushExtContextL TagCtxt-                        return XStdTagOpen-        -- end hsx--        '(':'#':_ | UnboxedTuples `elem` exts -> do discard 2 >> return LeftHashParen--        '#':')':_ | UnboxedTuples `elem` exts -> do discard 2 >> return RightHashParen--        '{':'|':_ | Generics `elem` exts -> do discard 2 >> return LeftCurlyBar--        '|':'}':_ | Generics `elem` exts -> do discard 2 >> return RightCurlyBar--        -- pragmas--        '{':'-':'#':_ -> do discard 3 >> lexPragmaStart--        '#':'-':'}':_ -> do discard 3 >> return PragmaEnd--        c:_ | isDigit c -> lexDecimalOrFloat--            | isUpper c -> lexConIdOrQual ""--            | isLower c || c == '_' -> do-                    idents <- lexIdents-                    case idents of-                     [ident] -> case lookup ident (reserved_ids ++ special_varids) of-                                 Just (keyword, scheme) -> do-                                    -- check if an extension keyword is enabled-                                    if isEnabled scheme exts-                                     then flagKW keyword >> return keyword-                                     else return $ VarId ident-                                 Nothing -> return $ VarId ident-                     _ -> return $ DVarId idents--            | isHSymbol c -> do-                    sym <- lexWhile isHSymbol-                    return $ case lookup sym (reserved_ops ++ special_varops) of-                              Just (t , scheme) ->-                                -- check if an extension op is enabled-                                if isEnabled scheme exts-                                 then t-                                 else case c of-                                        ':' -> ConSym sym-                                        _   -> VarSym sym-                              Nothing -> case c of-                                          ':' -> ConSym sym-                                          _   -> VarSym sym--            | otherwise -> do-                    discard 1-                    case c of--                        -- First the special symbols-                        '(' ->  return LeftParen-                        ')' ->  return RightParen-                        ',' ->  return Comma-                        ';' ->  return SemiColon-                        '[' ->  return LeftSquare-                        ']' ->  return RightSquare-                        '`' ->  return BackQuote-                        '{' -> do-                            pushContextL NoLayout-                            return LeftCurly-                        '}' -> do-                            popContextL "lexStdToken"-                            return RightCurly--                        '\'' -> lexCharacter-                        '"' ->  lexString--                        _ ->    fail ("Illegal character \'" ++ show c ++ "\'\n")--      where lexIdents :: Lex a [String]-            lexIdents = do-                ident <- lexWhile isIdent-                s <- getInput-                exts <- getExtensionsL-                case s of-                 -- This is the only way we can get more than one ident in the list-                 -- and it requires XmlSyntax to be on.-                 '-':c:_ | XmlSyntax `elem` exts && isAlpha c -> do-                        discard 1-                        idents <- lexIdents-                        return $ ident : idents-                 '#':_ | MagicHash `elem` exts -> do-                        discard 1-                        return [ident ++ "#"]-                 _ -> return [ident]--            lexQuasiQuote :: Lex a Token-            lexQuasiQuote = do-                -- We've seen and dropped [$ already-                ident <- lexWhile isIdent-                matchChar '|' "Malformed quasi-quote quoter"-                body <- lexQQBody-                return $ THQuasiQuote (ident, body)--            lexQQBody :: Lex a String-            lexQQBody = do-                s <- getInput-                case s of-                  '\\':']':_ -> do discard 2-                                   str <- lexQQBody-                                   return (']':str)-                  '\\':'|':_ -> do discard 2-                                   str <- lexQQBody-                                   return ('|':str)-                  '|':']':_  -> discard 2 >> return ""-                  '|':_ -> do discard 1-                              str <- lexQQBody-                              return ('|':str)-                  ']':_ -> do discard 1-                              str <- lexQQBody-                              return (']':str)-                  '\\':_ -> do discard 1-                               str <- lexQQBody-                               return ('\\':str)-                  '\n':_ -> do lexNewline-                               str <- lexQQBody-                               return ('\n':str)-                  _ -> do str <- lexWhile (not . (`elem` "\\|\n"))-                          rest <- lexQQBody-                          return (str++rest)--lexPragmaStart :: Lex a Token-lexPragmaStart = do-    lexWhile isSpace-    pr <- lexWhile isAlphaNum-    case lookup (map toLower pr) pragmas of-     Just (INLINE True) -> do-            s <- getInput-            case map toLower s of-             '_':'c':'o':'n':'l':'i':'k':'e':_  -> do-                      discard 8-                      return $ INLINE_CONLIKE-             _ -> return $ INLINE True-     Just SPECIALISE -> do-            s <- getInput-            case dropWhile isSpace $ map toLower s of-             'i':'n':'l':'i':'n':'e':_ -> do-                      lexWhile isSpace-                      discard 6-                      return $ SPECIALISE_INLINE True-             'n':'o':'i':'n':'l':'i':'n':'e':_ -> do-                        lexWhile isSpace-                        discard 8-                        return $ SPECIALISE_INLINE False-             'n':'o':'t':'i':'n':'l':'i':'n':'e':_ -> do-                        lexWhile isSpace-                        discard 9-                        return $ SPECIALISE_INLINE False-             _ -> return SPECIALISE--     Just (OPTIONS _) -> do     -- see, I promised we'd mask out the 'undefined'-            s <- getInput-            case s of-             '_':_  -> do-                discard 1-                com <- lexWhile isIdent-                rest <- lexRawPragma-                return $ OPTIONS (Just com, rest)-             x:_ | isSpace x -> do-                rest <- lexRawPragma-                return $ OPTIONS (Nothing, rest)-             _ -> fail "Malformed Options pragma"-{-     Just (CFILES _) -> do-            rest <- lexRawPragma-            return $ CFILES rest-     Just (INCLUDE _) -> do-            rest <- lexRawPragma-            return $ INCLUDE rest -}-     Just p ->  return p--     _      -> fail "Internal error: Unrecognised recognised pragma"-                  -- do rawStr <- lexRawPragma-                  -- return $ PragmaUnknown (pr, rawStr) -- no support for unrecognized pragmas, treat as comment-                  -- discard 3 -- #-}-                  -- topLexer -- we just discard it as a comment for now and restart -}--lexRawPragma :: Lex a String-lexRawPragma = do-    rpr <- lexRawPragmaAux-    return $ dropWhile isSpace rpr- where lexRawPragmaAux = do-        rpr <- lexWhile (/='#')-        s <- getInput-        case s of-         '#':'-':'}':_  -> return rpr-         _ -> do-            discard 1-            rpr' <- lexRawPragma-            return $ rpr ++ '#':rpr'--lexDecimalOrFloat :: Lex a Token-lexDecimalOrFloat = do-    ds <- lexWhile isDigit-    rest <- getInput-    exts <- getExtensionsL-    case rest of-        ('.':d:_) | isDigit d -> do-                discard 1-                frac <- lexWhile isDigit-                let num = parseInteger 10 (ds ++ frac)-                    decimals = toInteger (length frac)-                (exponent, estr) <- do-                    rest2 <- getInput-                    case rest2 of-                        'e':_ -> lexExponent-                        'E':_ -> lexExponent-                        _     -> return (0,"")-                con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)-                return $ con ((num%1) * 10^^(exponent - decimals), ds ++ '.':frac ++ estr)-        e:_ | toLower e == 'e' -> do-                (exponent, estr) <- lexExponent-                con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)-                return $ con ((parseInteger 10 ds%1) * 10^^exponent, ds ++ estr)-        '#':'#':_ | MagicHash `elem` exts -> discard 2 >> return (WordTokHash (parseInteger 10 ds, ds))-        '#':_     | MagicHash `elem` exts -> discard 1 >> return (IntTokHash  (parseInteger 10 ds, ds))-        _         ->              return (IntTok      (parseInteger 10 ds, ds))--    where-    lexExponent :: Lex a (Integer, String)-    lexExponent = do-        (e:r) <- getInput-        discard 1   -- 'e' or 'E'-        case r of-         '+':d:_ | isDigit d -> do-            discard 1-            (n, str) <- lexDecimal-            return (n, e:'+':str)-         '-':d:_ | isDigit d -> do-            discard 1-            (n, str) <- lexDecimal-            return (negate n, e:'-':str)-         d:_ | isDigit d -> lexDecimal >>= \(n,str) -> return (n, e:str)-         _ -> fail "Float with missing exponent"--lexHash :: (b -> Token) -> (b -> Token) -> Either String (b -> Token) -> Lex a (b -> Token)-lexHash a b c = do-    exts <- getExtensionsL-    if MagicHash `elem` exts-     then do-        r <- getInput-        case r of-         '#':'#':_ -> case c of-                       Right c -> discard 2 >> return c-                       Left s  -> fail s-         '#':_     -> discard 1 >> return b-         _         ->              return a-     else return a--lexConIdOrQual :: String -> Lex a Token-lexConIdOrQual qual = do-        con <- lexWhile isIdent-        let conid | null qual = ConId con-                  | otherwise = QConId (qual,con)-            qual' | null qual = con-                  | otherwise = qual ++ '.':con-        just_a_conid <- alternative (return conid)-        rest <- getInput-        exts <- getExtensionsL-        case rest of-          '.':c:_-             | isLower c || c == '_' -> do  -- qualified varid?-                    discard 1-                    ident <- lexWhile isIdent-                    s <- getInput-                    exts <- getExtensionsL-                    ident' <- case s of-                               '#':_ | MagicHash `elem` exts -> discard 1 >> return (ident ++ "#")-                               _ -> return ident-                    case lookup ident' reserved_ids of-                       -- cannot qualify a reserved word-                       Just (_,scheme) | isEnabled scheme exts  -> just_a_conid-                       _ -> return (QVarId (qual', ident'))--             | isUpper c -> do      -- qualified conid?-                    discard 1-                    lexConIdOrQual qual'--             | isHSymbol c -> do    -- qualified symbol?-                    discard 1-                    sym <- lexWhile isHSymbol-                    exts <- getExtensionsL-                    case lookup sym reserved_ops of-                        -- cannot qualify a reserved operator-                        Just (_,scheme) | isEnabled scheme exts -> just_a_conid-                        _        -> return $ case c of-                                              ':' -> QConSym (qual', sym)-                                              _   -> QVarSym (qual', sym)--          '#':c:_-            | not (isHSymbol c) && not (isIdent c) && MagicHash `elem` exts -> do-                discard 1-                case conid of-                 ConId con -> return $ ConId $ con ++ "#"-                 QConId (q,con) -> return $ QConId (q,con ++ "#")-          _ ->  return conid -- not a qualified thing--lexCharacter :: Lex a Token-lexCharacter = do   -- We need to keep track of not only character constants but also TH 'x and ''T-        -- We've seen ' so far-        s <- getInput-        exts <- getExtensionsL-        case s of-         '\'':_ | TemplateHaskell `elem` exts -> discard 1 >> return THTyQuote-         '\\':_ -> do-                    (c,raw) <- lexEscape-                    matchQuote-                    con <- lexHash Character CharacterHash-                            (Left "Double hash not available for character literals")-                    return (con (c, '\\':raw))-         c:'\'':_ -> do-                    discard 2-                    con <- lexHash Character CharacterHash-                            (Left "Double hash not available for character literals")-                    return (con (c, [c]))-         _ | TemplateHaskell `elem` exts -> return THVarQuote-         _ -> fail "Improper character constant or misplaced \'"--    where matchQuote = matchChar '\'' "Improperly terminated character constant"---lexString :: Lex a Token-lexString = loop ("","")-    where-    loop (s,raw) = do-        r <- getInput-        exts <- getExtensionsL-        case r of-            '\\':'&':_ -> do-                    discard 2-                    loop (s, '&':'\\':raw)-            '\\':c:_ | isSpace c -> do-                        discard 1-                        wcs <- lexWhiteChars-                        matchChar '\\' "Illegal character in string gap"-                        loop (s, '\\':reverse wcs ++ '\\':raw)-                     | otherwise -> do-                        (ce, str) <- lexEscape-                        loop (ce:s, reverse str ++ '\\':raw)-            '"':'#':_ | MagicHash `elem` exts -> do-                        discard 2-                        return (StringHash (reverse s, reverse raw))-            '"':_ -> do-                discard 1-                return (StringTok (reverse s, reverse raw))-            c:_ -> do-                discard 1-                loop (c:s, c:raw)-            [] ->   fail "Improperly terminated string"--    lexWhiteChars :: Lex a String-    lexWhiteChars = do-        s <- getInput-        case s of-            '\n':_ -> do-                    lexNewline-                    wcs <- lexWhiteChars-                    return $ '\n':wcs-            '\t':_ -> do-                    lexTab-                    wcs <- lexWhiteChars-                    return $ '\t':wcs-            c:_ | isSpace c -> do-                    discard 1-                    wcs <- lexWhiteChars-                    return $ c:wcs-            _ -> return ""--lexEscape :: Lex a (Char, String)-lexEscape = do-    discard 1-    r <- getInput-    case r of---- Production charesc from section B.2 (Note: \& is handled by caller)--        'a':_           -> discard 1 >> return ('\a', "a")-        'b':_           -> discard 1 >> return ('\b', "b")-        'f':_           -> discard 1 >> return ('\f', "f")-        'n':_           -> discard 1 >> return ('\n', "n")-        'r':_           -> discard 1 >> return ('\r', "r")-        't':_           -> discard 1 >> return ('\t', "t")-        'v':_           -> discard 1 >> return ('\v', "v")-        '\\':_          -> discard 1 >> return ('\\', "\\")-        '"':_           -> discard 1 >> return ('\"', "\"")-        '\'':_          -> discard 1 >> return ('\'', "\'")---- Production ascii from section B.2--        '^':c:_         -> discard 2 >> cntrl c-        'N':'U':'L':_   -> discard 3 >> return ('\NUL', "NUL")-        'S':'O':'H':_   -> discard 3 >> return ('\SOH', "SOH")-        'S':'T':'X':_   -> discard 3 >> return ('\STX', "STX")-        'E':'T':'X':_   -> discard 3 >> return ('\ETX', "ETX")-        'E':'O':'T':_   -> discard 3 >> return ('\EOT', "EOT")-        'E':'N':'Q':_   -> discard 3 >> return ('\ENQ', "ENQ")-        'A':'C':'K':_   -> discard 3 >> return ('\ACK', "ACK")-        'B':'E':'L':_   -> discard 3 >> return ('\BEL', "BEL")-        'B':'S':_       -> discard 2 >> return ('\BS',  "BS")-        'H':'T':_       -> discard 2 >> return ('\HT',  "HT")-        'L':'F':_       -> discard 2 >> return ('\LF',  "LF")-        'V':'T':_       -> discard 2 >> return ('\VT',  "VT")-        'F':'F':_       -> discard 2 >> return ('\FF',  "FF")-        'C':'R':_       -> discard 2 >> return ('\CR',  "CR")-        'S':'O':_       -> discard 2 >> return ('\SO',  "SO")-        'S':'I':_       -> discard 2 >> return ('\SI',  "SI")-        'D':'L':'E':_   -> discard 3 >> return ('\DLE', "DLE")-        'D':'C':'1':_   -> discard 3 >> return ('\DC1', "DC1")-        'D':'C':'2':_   -> discard 3 >> return ('\DC2', "DC2")-        'D':'C':'3':_   -> discard 3 >> return ('\DC3', "DC3")-        'D':'C':'4':_   -> discard 3 >> return ('\DC4', "DC4")-        'N':'A':'K':_   -> discard 3 >> return ('\NAK', "NAK")-        'S':'Y':'N':_   -> discard 3 >> return ('\SYN', "SYN")-        'E':'T':'B':_   -> discard 3 >> return ('\ETB', "ETB")-        'C':'A':'N':_   -> discard 3 >> return ('\CAN', "CAN")-        'E':'M':_       -> discard 2 >> return ('\EM',  "EM")-        'S':'U':'B':_   -> discard 3 >> return ('\SUB', "SUB")-        'E':'S':'C':_   -> discard 3 >> return ('\ESC', "ESC")-        'F':'S':_       -> discard 2 >> return ('\FS',  "FS")-        'G':'S':_       -> discard 2 >> return ('\GS',  "GS")-        'R':'S':_       -> discard 2 >> return ('\RS',  "RS")-        'U':'S':_       -> discard 2 >> return ('\US',  "US")-        'S':'P':_       -> discard 2 >> return ('\SP',  "SP")-        'D':'E':'L':_   -> discard 3 >> return ('\DEL', "DEL")---- Escaped numbers--        'o':c:_ | isOctDigit c -> do-                    discard 1-                    (n, raw) <- lexOctal-                    n <- checkChar n-                    return (n, 'o':raw)-        'x':c:_ | isHexDigit c -> do-                    discard 1-                    (n, raw) <- lexHexadecimal-                    n <- checkChar n-                    return (n, 'x':raw)-        c:_ | isDigit c -> do-                    (n, raw) <- lexDecimal-                    n <- checkChar n-                    return (n, raw)--        _       -> fail "Illegal escape sequence"--    where-    checkChar n | n <= 0x01FFFF = return (chr (fromInteger n))-    checkChar _                 = fail "Character constant out of range"---- Production cntrl from section B.2--    cntrl :: Char -> Lex a (Char, String)-    cntrl c | c >= '@' && c <= '_' = return (chr (ord c - ord '@'), '^':c:[])-    cntrl _                        = fail "Illegal control character"---- assumes at least one octal digit-lexOctal :: Lex a (Integer, String)-lexOctal = do-    ds <- lexWhile isOctDigit-    return (parseInteger 8 ds, ds)---- assumes at least one hexadecimal digit-lexHexadecimal :: Lex a (Integer, String)-lexHexadecimal = do-    ds <- lexWhile isHexDigit-    return (parseInteger 16 ds, ds)---- assumes at least one decimal digit-lexDecimal :: Lex a (Integer, String)-lexDecimal = do-    ds <- lexWhile isDigit-    return (parseInteger 10 ds, ds)---- Stolen from Hugs's Prelude-parseInteger :: Integer -> String -> Integer-parseInteger radix ds =-    foldl1 (\n d -> n * radix + d) (map (toInteger . digitToInt) ds)--flagKW :: Token -> Lex a ()-flagKW t = when (t `elem` [KW_Do, KW_MDo]) flagDo----------------------------------------------------------------------- "Pretty" printing for tokens--showToken :: Token -> String-showToken t = case t of-  VarId s           -> s-  QVarId (q,s)      -> q ++ '.':s-  IDupVarId s       -> '?':s-  ILinVarId s       -> '%':s-  ConId s           -> s-  QConId (q,s)      -> q ++ '.':s-  DVarId ss         -> concat $ intersperse "-" ss-  VarSym s          -> s-  ConSym s          -> s-  QVarSym (q,s)     -> q ++ '.':s-  QConSym (q,s)     -> q ++ '.':s-  IntTok (_, s)         -> s-  FloatTok (_, s)       -> s-  Character (_, s)      -> '\'':s ++ "'"-  StringTok (_, s)      -> '"':s ++ "\""-  IntTokHash (_, s)     -> s ++ "#"-  WordTokHash (_, s)    -> s ++ "##"-  FloatTokHash (_, s)   -> s ++ "#"-  DoubleTokHash (_, s)  -> s ++ "##"-  CharacterHash (_, s)  -> '\'':s ++ "'#"-  StringHash (_, s)     -> '"':s ++ "\"#"-  LeftParen         -> "("-  RightParen        -> ")"-  LeftHashParen     -> "(#"-  RightHashParen    -> "#)"-  LeftCurlyBar      -> "{|"-  RightCurlyBar     -> "|}"-  SemiColon         -> ";"-  LeftCurly         -> "{"-  RightCurly        -> "}"-  VRightCurly       -> "virtual }"-  LeftSquare        -> "["-  RightSquare       -> "]"-  Comma             -> ","-  Underscore        -> "_"-  BackQuote         -> "`"-  Dot               -> "."-  DotDot            -> ".."-  Colon             -> ":"-  DoubleColon       -> "::"-  Equals            -> "="-  Backslash         -> "\\"-  Bar               -> "|"-  LeftArrow         -> "->"-  RightArrow        -> "<-"-  At                -> "@"-  Tilde             -> "~"-  DoubleArrow       -> "=>"-  Minus             -> "-"-  Exclamation       -> "!"-  Star              -> "*"-  LeftArrowTail     -> ">-"-  RightArrowTail    -> "-<"-  LeftDblArrowTail  -> ">>-"-  RightDblArrowTail -> "-<<"-  THExpQuote        -> "[|"-  THPatQuote        -> "[p|"-  THDecQuote        -> "[d|"-  THTypQuote        -> "[t|"-  THCloseQuote      -> "|]"-  THIdEscape s      -> '$':s-  THParenEscape     -> "$("-  THVarQuote        -> "'"-  THTyQuote         -> "''"-  THQuasiQuote (n,q) -> "[$" ++ n ++ "|" ++ q ++ "]"-  RPGuardOpen       -> "(|"-  RPGuardClose      -> "|)"-  RPCAt             -> "@:"-  XCodeTagOpen      -> "<%"-  XCodeTagClose     -> "%>"-  XStdTagOpen       -> "<"-  XStdTagClose      -> ">"-  XCloseTagOpen     -> "</"-  XEmptyTagClose    -> "/>"-  XPCDATA s         -> "PCDATA " ++ s-  XRPatOpen         -> "<["-  XRPatClose        -> "]>"-  PragmaEnd         -> "#-}"-  RULES             -> "{-# RULES"-  INLINE b          -> "{-# " ++ if b then "INLINE" else "NOINLINE"-  INLINE_CONLIKE    -> "{-# " ++ "INLINE_CONLIKE"-  SPECIALISE        -> "{-# SPECIALISE"-  SPECIALISE_INLINE b -> "{-# SPECIALISE " ++ if b then "INLINE" else "NOINLINE"-  SOURCE            -> "{-# SOURCE"-  DEPRECATED        -> "{-# DEPRECATED"-  WARNING           -> "{-# WARNING"-  SCC               -> "{-# SCC"-  GENERATED         -> "{-# GENERATED"-  CORE              -> "{-# CORE"-  UNPACK            -> "{-# UNPACK"-  OPTIONS (mt,s)    -> "{-# OPTIONS" ++ maybe "" (':':) mt ++ " ..."---  CFILES  s         -> "{-# CFILES ..."---  INCLUDE s         -> "{-# INCLUDE ..."-  LANGUAGE          -> "{-# LANGUAGE"-  ANN               -> "{-# ANN"-  KW_As         -> "as"-  KW_By         -> "by"-  KW_Case       -> "case"-  KW_Class      -> "class"-  KW_Data       -> "data"-  KW_Default    -> "default"-  KW_Deriving   -> "deriving"-  KW_Do         -> "do"-  KW_MDo        -> "mdo"-  KW_Else       -> "else"-  KW_Family     -> "family"-  KW_Forall     -> "forall"-  KW_Group      -> "group"-  KW_Hiding     -> "hiding"-  KW_If         -> "if"-  KW_Import     -> "import"-  KW_In         -> "in"-  KW_Infix      -> "infix"-  KW_InfixL     -> "infixl"-  KW_InfixR     -> "infixr"-  KW_Instance   -> "instance"-  KW_Let        -> "let"-  KW_Module     -> "module"-  KW_NewType    -> "newtype"-  KW_Of         -> "of"-  KW_Proc       -> "proc"-  KW_Rec        -> "rec"-  KW_Then       -> "then"-  KW_Type       -> "type"-  KW_Using      -> "using"-  KW_Where      -> "where"-  KW_Qualified  -> "qualified"-  KW_Foreign    -> "foreign"-  KW_Export     -> "export"-  KW_Safe       -> "safe"-  KW_Unsafe     -> "unsafe"-  KW_Threadsafe -> "threadsafe"-  KW_StdCall    -> "stdcall"-  KW_CCall      -> "ccall"--  EOF           -> "EOF"+{-# LANGUAGE Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.Lexer+-- Copyright   :  (c) The GHC Team, 1997-2000+--                (c) Niklas Broberg, 2004-2012+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, niklas.broberg@chalmers.se+-- Stability   :  stable+-- Portability :  portable+--+-- Lexer for Haskell with extensions.+--+-----------------------------------------------------------------------------++module Language.Haskell.Exts.Lexer+    (+      lexTokenStream, lexTokenStreamWithMode,++      Token(..), Loc(..),++      showToken++    ) where++import Language.Haskell.Exts.InternalLexer+import Language.Haskell.Exts.ParseMonad+import Language.Haskell.Exts.SrcLoc++-- | Lex a string into a list of Haskell 2010 source tokens.+lexTokenStream :: String -> ParseResult [Loc Token]+lexTokenStream = lexTokenStreamWithMode defaultParseMode++-- | Lex a string into a list of Haskell source tokens, using an explicit mode.+lexTokenStreamWithMode :: ParseMode -> String -> ParseResult [Loc Token]+lexTokenStreamWithMode mode = runParserWithMode mode lexIt+  where lexIt :: P [Loc Token]+        lexIt = runL go return+        go :: Lex [Loc Token] [Loc Token]+        go = do+          ltok <- topLexer+          case ltok of+            Loc _ EOF -> return []+            _ -> do ts <- go+                    return (ltok:ts)
src/Language/Haskell/Exts/ParseMonad.hs view
@@ -1,7 +1,9 @@+{-# LANGUAGE CPP, Safe #-} {-# OPTIONS_HADDOCK hide #-}+ ----------------------------------------------------------------------------- -- |--- Module      :  Language.Haskell.Exts.Annotated.ParseMonad+-- Module      :  Language.Haskell.Exts.ParseMonad -- Copyright   :  Niklas Broberg (c) 2004-2009, --                Original (c) The GHC Team, 1997-2000 -- License     :  BSD-style (see the file libraries/base/LICENSE)@@ -15,16 +17,20 @@ -----------------------------------------------------------------------------  module Language.Haskell.Exts.ParseMonad(+        -- * Generic Parsing+        Parseable(..),         -- * Parsing         P, ParseResult(..), atSrcLoc, LexContext(..),         ParseMode(..), defaultParseMode, fromParseResult,         runParserWithMode, runParserWithModeComments, runParser,         getSrcLoc, pushCurrentContext, popContext,-        getExtensions,+        getExtensions, getIgnoreFunctionArity,         -- * Lexing-        Lex(runL), getInput, discard, lexNewline, lexTab, lexWhile,+        Lex(runL), getInput, discard, getLastChar, lexNewline,+        lexTab, lexWhile, lexWhile_,         alternative, checkBOL, setBOL, startToken, getOffside,-        pushContextL, popContextL, getExtensionsL, pushComment, +        pushContextL, popContextL, getExtensionsL, addExtensionL,+        saveExtensionsL, restoreExtensionsL, pushComment,         getSrcLocL, setSrcLineL, ignoreLinePragmasL, setLineFilenameL,         -- * Harp/Hsx         ExtContext(..),@@ -33,23 +39,48 @@         getModuleName     ) where -import Language.Haskell.Exts.SrcLoc(SrcLoc(..))+import Language.Haskell.Exts.SrcLoc (SrcLoc(..), noLoc) import Language.Haskell.Exts.Fixity (Fixity, preludeFixities) import Language.Haskell.Exts.Comments-import Language.Haskell.Exts.Extension (Extension)+import Language.Haskell.Exts.Extension -- (Extension, impliesExts, haskell2010) -import Data.List ( intersperse )+import Data.List (intercalate) import Control.Applicative-import Control.Monad (when)-import Data.Monoid+import Control.Monad (when, liftM, ap)+import qualified Control.Monad.Fail as Fail+import Data.Monoid hiding ((<>))+#if !MIN_VERSION_base(4,13,0)+import Data.Semigroup (Semigroup(..))+#endif+-- To avoid import warnings for Control.Applicative, Data.Monoid, and Data.Semigroup+import Prelude +-- | Class providing function for parsing at many different types.+--+--   Note that for convenience of implementation, the default methods have+--   definitions equivalent to 'undefined'.  The minimal definition is all of+--   the visible methods.+class Parseable ast where+  -- | Parse a string with default mode.+  parse :: String -> ParseResult ast+  parse = parseWithMode defaultParseMode+  -- | Parse a string with an explicit 'ParseMode'.+  parseWithMode :: ParseMode -> String -> ParseResult ast+  parseWithMode mode = runParserWithMode mode . parser $ fixities mode+  -- | Parse a string with an explicit 'ParseMode', returning all comments along+  --   with the AST.+  parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment])+  parseWithComments mode = runParserWithModeComments mode . parser $ fixities mode+  -- | Internal parser, used to provide default definitions for the others.+  parser :: Maybe [Fixity] -> P ast+ -- | The result of a parse. data ParseResult a     = ParseOk a  -- ^ The parse succeeded, yielding a value.     | ParseFailed SrcLoc String                 -- ^ The parse failed at the specified                 -- source location, with an error message.-    deriving Show+    deriving (Show, Ord, Eq)  -- | Retrieve the result of a successful parse, throwing an --   error if the parse is actually not successful.@@ -60,7 +91,7 @@  instance Functor ParseResult where   fmap f (ParseOk x)           = ParseOk $ f x-  fmap f (ParseFailed loc msg) = ParseFailed loc msg+  fmap _ (ParseFailed loc msg) = ParseFailed loc msg  instance Applicative ParseResult where   pure = ParseOk@@ -68,16 +99,21 @@   ParseFailed loc msg <*> _ = ParseFailed loc msg  instance Monad ParseResult where-  return = ParseOk+#if !MIN_VERSION_base(4,13,0)+  fail = Fail.fail+#endif   ParseOk x           >>= f = f x   ParseFailed loc msg >>= _ = ParseFailed loc msg+instance Fail.MonadFail ParseResult where+  fail = ParseFailed noLoc -instance Monoid m => Monoid (ParseResult m) where-  mempty = ParseOk mempty-  ParseOk x `mappend` ParseOk y = ParseOk $ x `mappend` y-  ParseOk x `mappend` err       = err-  err       `mappend` _         = err -- left-biased+instance Semigroup m => Semigroup (ParseResult m) where+ ParseOk x <> ParseOk y = ParseOk $ x <> y+ ParseOk _ <> err       = err+ err       <> _         = err -- left-biased +instance ( Monoid m , Semigroup m) => Monoid (ParseResult m) where+  mempty = ParseOk mempty  -- internal version data ParseStatus a = Ok ParseState a | Failed SrcLoc String@@ -94,11 +130,11 @@ -- (True,_) = We're in a do context. -- (_, True)= Next token must be a virtual closing brace. -type ParseState = ([LexContext],[ExtContext],CtxtFlag,[Comment])+type ParseState = ([LexContext],[[KnownExtension]],[ExtContext],CtxtFlag,[Comment])  indentOfParseState :: ParseState -> Int-indentOfParseState (Layout n:_,_,_,_) = n-indentOfParseState _                  = 0+indentOfParseState (Layout n:_,_,_,_,_) = n+indentOfParseState _                    = 0  -- | Static parameters governing a parse. --   Note that the various parse functions in "Language.Haskell.Exts.Parser"@@ -110,6 +146,8 @@ data ParseMode = ParseMode {         -- | original name of the file being parsed         parseFilename :: String,+        -- | base language (e.g. Haskell98, Haskell2010)+        baseLanguage :: Language,         -- | list of extensions enabled for parsing         extensions :: [Extension],         -- | if 'True', the parser won't care about further extensions@@ -119,7 +157,9 @@         --   from LINE pragmas in source files         ignoreLinePragmas :: Bool,         -- | list of fixities to be aware of-        fixities :: [Fixity]+        fixities :: Maybe [Fixity],+        -- | Checks whether functions have a consistent arity+        ignoreFunctionArity :: Bool         }  -- | Default parameters for a parse.@@ -130,26 +170,46 @@ defaultParseMode :: ParseMode defaultParseMode = ParseMode {         parseFilename = "<unknown>.hs",+        baseLanguage = Haskell2010,         extensions = [],         ignoreLanguagePragmas = False,         ignoreLinePragmas = True,-        fixities = preludeFixities+        fixities = Just preludeFixities,+        ignoreFunctionArity = False         } +-- Version of ParseMode used internally,+-- where the language and extensions have+-- been expanded+data InternalParseMode = IParseMode {+        iParseFilename :: String,+        iExtensions :: [KnownExtension],+        -- iIgnoreLanguagePragmas :: Bool,+        iIgnoreLinePragmas :: Bool,+        iIgnoreFunctionArity :: Bool+        -- iFixities :: Maybe [Fixity]+    }++toInternalParseMode :: ParseMode -> InternalParseMode+toInternalParseMode (ParseMode pf bLang exts _ilang iline _fx farity) =+    IParseMode pf (toExtensionList bLang exts) {-_ilang -} iline {- _fx -} farity++ -- | Monad for parsing  newtype P a = P { runP ::-                String      -- input string-             -> Int     -- current column-             -> Int     -- current line-             -> SrcLoc      -- location of last token read-             -> ParseState  -- layout info.-             -> ParseMode   -- parse parameters+                String              -- input string+             -> Int                 -- current column+             -> Int                 -- current line+             -> SrcLoc              -- location of last token read+             -> Char                -- Last token read used for lexing TypeApplication UGH+             -> ParseState          -- layout info.+             -> InternalParseMode   -- parse parameters              -> ParseStatus a         }  runParserWithMode :: ParseMode -> P a -> String -> ParseResult a-runParserWithMode mode (P m) s = case m s 0 1 start ([],[],(False,False),[]) mode of+{-runParserWithMode mode (P m) s = case m s 0 1 start ([],[],(False,False),[]) mode of     Ok _ a -> ParseOk a     Failed loc msg -> ParseFailed loc msg     where start = SrcLoc {@@ -157,38 +217,55 @@         srcLine = 1,         srcColumn = 1     }+-}+runParserWithMode mode pm = fmap fst . runParserWithModeComments mode pm  runParser :: P a -> String -> ParseResult a runParser = runParserWithMode defaultParseMode  runParserWithModeComments :: ParseMode -> P a -> String -> ParseResult (a, [Comment])-runParserWithModeComments mode (P m) s = case m s 0 1 start ([],[],(False,False),[]) mode of-    Ok (_,_,_,cs) a -> ParseOk (a, reverse cs)-    Failed loc msg -> ParseFailed loc msg+runParserWithModeComments mode = let mode2 = toInternalParseMode mode in \(P m) s ->+  case m s 0 1 start '\n' ([],[],[],(False,False),[]) mode2 of+    Ok (_,_,_,_,cs) a -> ParseOk (a, reverse cs)+    Failed loc msg    -> ParseFailed loc msg     where start = SrcLoc {         srcFilename = parseFilename mode,         srcLine = 1,         srcColumn = 1-    }+        }+  --        allExts mode@(ParseMode {extensions = es}) = mode { extensions = impliesExts es } +    --      allExts mode = let imode = to++instance Functor P where+  fmap = liftM++instance Applicative P where+  pure a = P $ \_i _x _y _l _ch s _m -> Ok s a+  (<*>) = ap+ instance Monad P where-    return a = P $ \_i _x _y _l s _m -> Ok s a-    P m >>= k = P $ \i x y l s mode ->-        case m i x y l s mode of+    P m >>= k = P $ \i x y l ch s mode ->+        case m i x y l ch s mode of             Failed loc msg -> Failed loc msg-            Ok s' a -> runP (k a) i x y l s' mode-    fail s = P $ \_r _col _line loc _stk _m -> Failed loc s+            Ok s' a -> runP (k a) i x y l ch s' mode+#if !MIN_VERSION_base(4,13,0)+    fail   = Fail.fail+#endif +instance Fail.MonadFail P where+    fail s = P $ \_r _col _line loc _ _stk _m -> Failed loc s+ atSrcLoc :: P a -> SrcLoc -> P a-P m `atSrcLoc` loc = P $ \i x y _l -> m i x y loc+P m `atSrcLoc` loc = P $ \i x y _l ch -> m i x y loc ch  getSrcLoc :: P SrcLoc-getSrcLoc = P $ \_i _x _y l s _m -> Ok s l+getSrcLoc = P $ \_i _x _y l _ s _m -> Ok s l  getModuleName :: P String-getModuleName = P $ \_i _x _y _l s m ->-    let fn = parseFilename m-        mn = concat $ intersperse "." $ splitPath fn+getModuleName = P $ \_i _x _y _l _ch s m ->+    let fn = iParseFilename m+        mn = intercalate "." $ splitPath fn          splitPath :: String -> [String]         splitPath ""   = []@@ -213,25 +290,25 @@     dob <- pullDoStatus     let loc = srcColumn lc     when (dob && loc < indent-           || not dob && loc <= indent) $ pushCtxtFlag+           || not dob && loc <= indent) pushCtxtFlag     pushContext (Layout loc)  currentIndent :: P Int-currentIndent = P $ \_r _x _y loc stk _mode -> Ok stk (indentOfParseState stk)+currentIndent = P $ \_r _x _y _ _ stk _mode -> Ok stk (indentOfParseState stk)  pushContext :: LexContext -> P () pushContext ctxt = --trace ("pushing lexical scope: " ++ show ctxt ++"\n") $-    P $ \_i _x _y _l (s, e, p, c) _m -> Ok (ctxt:s, e, p, c) ()+    P $ \_i _x _y _l _ (s, exts, e, p, c) _m -> Ok (ctxt:s, exts, e, p, c) ()  popContext :: P ()-popContext = P $ \_i _x _y _l stk _m ->+popContext = P $ \_i _x _y loc _ stk _m ->       case stk of-        (_:s, e, p, c) -> --trace ("popping lexical scope, context now "++show s ++ "\n") $-                          Ok (s, e, p, c) ()-        ([],_,_,_)     -> error "Internal error: empty context in popContext"-+        (_:s, exts, e, p, c) -> --trace ("popping lexical scope, context now "++show s ++ "\n") $+                          Ok (s, exts, e, p, c) ()+        ([],_,_,_,_)   -> Failed loc "Unexpected }" -- error "Internal error: empty context in popContext" +{- -- HaRP/Hsx pushExtContext :: ExtContext -> P () pushExtContext ctxt = P $ \_i _x _y _l (s, e, p, c) _m -> Ok (s, ctxt:e, p, c) ()@@ -242,33 +319,50 @@      (_:e') ->        Ok (s, e', p, c) ()      [] -> error "Internal error: empty context in popExtContext"-+-}  -- Extension-aware lexing/parsing-getExtensions :: P [Extension]-getExtensions = P $ \_i _x _y _l s m ->-    Ok s $ extensions m+getExtensions :: P [KnownExtension]+getExtensions = P $ \_i _x _y _l _ s m ->+    Ok s $ iExtensions m  pushCtxtFlag :: P () pushCtxtFlag =-    P $ \_i _x _y _l (s, e, (d,c), cs) _m -> case c of-        False -> Ok (s, e, (d,True), cs) ()+    P $ \_i _x _y _l _ (s, exts, e, (d,c), cs) _m -> case c of+        False -> Ok (s, exts, e, (d,True), cs) ()         _     -> error "Internal error: context flag already pushed"  pullDoStatus :: P Bool-pullDoStatus = P $ \_i _x _y _l (s, e, (d,c), cs) _m -> Ok (s,e,(False,c),cs) d+pullDoStatus = P $ \_i _x _y _l _ (s, exts, e, (d,c), cs) _m -> Ok (s,exts,e,(False,c),cs) d +getIgnoreFunctionArity :: P Bool+getIgnoreFunctionArity = P $ \_i _x _y _l _ s m ->+  Ok s $ iIgnoreFunctionArity m +++ ---------------------------------------------------------------------------- -- Monad for lexical analysis: -- a continuation-passing version of the parsing monad  newtype Lex r a = Lex { runL :: (a -> P r) -> P r } +instance Functor (Lex r) where+    fmap = liftM++instance Applicative (Lex r) where+    pure a = Lex $ \k -> k a+    (<*>) = ap+ instance Monad (Lex r) where-    return a = Lex $ \k -> k a     Lex v >>= f = Lex $ \k -> v (\a -> runL (f a) k)     Lex v >> Lex w = Lex $ \k -> v (\_ -> w k)+#if !MIN_VERSION_base(4,13,0)+    fail   = Fail.fail+#endif++instance Fail.MonadFail (Lex r) where     fail s = Lex $ \_ -> fail s  -- Operations on this monad@@ -279,12 +373,24 @@ -- | Discard some input characters (these must not include tabs or newlines).  discard :: Int -> Lex r ()-discard n = Lex $ \cont -> P $ \r x -> runP (cont ()) (drop n r) (x+n)+discard n = Lex $ \cont -> P $ \r x y loc ch+                        -> let (newCh:rest)= if n > 0 then drop (n-1) r else (ch:r)+                           in runP (cont ()) rest (x+n) y loc newCh +-- | Get the last discarded character.+-- This is only used for type application.++getLastChar :: Lex r Char+getLastChar = Lex $ \cont -> P $ \r x y loc ch -> runP (cont ch) r x y loc ch++ -- | Discard the next character, which must be a newline.  lexNewline :: Lex a ()-lexNewline = Lex $ \cont -> P $ \(_:r) _x y -> runP (cont ()) r 1 (y+1)+lexNewline = Lex $ \cont -> P $ \rs _x y loc  ->+  case rs of+    (_:r) -> runP (cont ()) r 1 (y+1) loc+    []    -> \_ _ _ -> Failed loc "Lexer: expected newline."  -- | Discard the next character, which must be a tab. @@ -295,15 +401,31 @@ nextTab x = x + (tAB_LENGTH - (x-1) `mod` tAB_LENGTH)  tAB_LENGTH :: Int-tAB_LENGTH = 8 :: Int+tAB_LENGTH = 8  -- Consume and return the largest string of characters satisfying p  lexWhile :: (Char -> Bool) -> Lex a String-lexWhile p = Lex $ \cont -> P $ \r x ->-    let (cs,rest) = span p r in-    runP (cont cs) rest (x + length cs)+lexWhile p = Lex $ \cont -> P $ \rss c l loc char ->+  case rss of+    [] -> runP (cont []) [] c l loc char+    (r:rs) ->+      let+        l' = case r of+              '\n' -> l + 1+              _    -> l+        c' = case r of+              '\n' -> 1+              _    -> c + 1+       in if p r+            then runP (runL ((r:) <$> lexWhile p) cont) rs c' l' loc r+            else runP (cont []) (r:rs) c l loc char +-- | lexWhile without the return value.+lexWhile_ :: (Char -> Bool) -> Lex a ()+lexWhile_ p = do _ <- lexWhile p+                 return ()+ -- An alternative scan, to which we can return if subsequent scanning -- is unsuccessful. @@ -338,13 +460,13 @@ -- Set the loc to the current position  startToken :: Lex a ()-startToken = Lex $ \cont -> P $ \s x y _ stk mode ->+startToken = Lex $ \cont -> P $ \s x y _ c stk mode ->     let loc = SrcLoc {-        srcFilename = parseFilename mode,+        srcFilename = iParseFilename mode,         srcLine = y,         srcColumn = x     } in-    runP (cont ()) s x y loc stk mode+    runP (cont ()) s x y loc c stk mode  -- Current status with respect to the offside (layout) rule: -- LT: we are to the left of the current indent (if any)@@ -352,8 +474,8 @@ -- GT: we are to the right of the current indent, or not subject to layout  getOffside :: Lex a Ordering-getOffside = Lex $ \cont -> P $ \r x y loc stk ->-        runP (cont (compare x (indentOfParseState stk))) r x y loc stk+getOffside = Lex $ \cont -> P $ \r x y loc ch stk ->+        runP (cont (compare x (indentOfParseState stk))) r x y loc ch stk  getSrcLocL :: Lex a SrcLoc getSrcLocL = Lex $ \cont -> P $ \i x y l ->@@ -364,62 +486,79 @@         runP (cont ()) i x y  pushContextL :: LexContext -> Lex a ()-pushContextL ctxt = Lex $ \cont -> P $ \r x y loc (stk, e, pst, cs) ->-        runP (cont ()) r x y loc (ctxt:stk, e, pst, cs)+pushContextL ctxt = Lex $ \cont -> P $ \r x y loc ch (stk, exts, e, pst, cs) ->+        runP (cont ()) r x y loc ch (ctxt:stk, exts, e, pst, cs)  popContextL :: String -> Lex a ()-popContextL fn = Lex $ \cont -> P $ \r x y loc stk -> case stk of-        (_:ctxt, e, pst, cs) -> runP (cont ()) r x y loc (ctxt, e, pst, cs)-        ([], _, _, _)        -> error ("Internal error: empty context in " ++ fn)+popContextL _ = Lex $ \cont -> P $ \r x y loc ch stk m -> case stk of+        (_:ctxt, exts, e, pst, cs) -> runP (cont ()) r x y loc ch (ctxt, exts, e, pst, cs) m+        ([], _, _, _, _)           -> Failed loc "Unexpected }"  pullCtxtFlag :: Lex a Bool-pullCtxtFlag = Lex $ \cont -> P $ \r x y loc (ct, e, (d,c), cs) ->-        runP (cont c) r x y loc (ct, e, (d,False), cs)+pullCtxtFlag = Lex $ \cont -> P $ \r x y loc ch (ct, exts, e, (d,c), cs) ->+        runP (cont c) r x y loc ch (ct, exts, e, (d,False), cs)   flagDo :: Lex a ()-flagDo = Lex $ \cont -> P $ \r x y loc (ct, e, (d,c), cs) ->-        runP (cont ()) r x y loc (ct, e, (True,c), cs)+flagDo = Lex $ \cont -> P $ \r x y loc ch (ct, exts, e, (_,c), cs) ->+        runP (cont ()) r x y loc ch (ct, exts, e, (True,c), cs)   -- Harp/Hsx  getExtContext :: Lex a (Maybe ExtContext)-getExtContext = Lex $ \cont -> P $ \r x y loc stk@(_, e, _, _) ->+getExtContext = Lex $ \cont -> P $ \r x y loc ch stk@(_, _, e, _, _) ->         let me = case e of               [] -> Nothing               (c:_) -> Just c-        in runP (cont me) r x y loc stk+        in runP (cont me) r x y loc ch stk  pushExtContextL :: ExtContext -> Lex a ()-pushExtContextL ec = Lex $ \cont -> P $ \r x y loc (s, e, p, c) ->-        runP (cont ()) r x y loc (s, ec:e, p, c)+pushExtContextL ec = Lex $ \cont -> P $ \r x y loc ch (s, exts, e, p, c) ->+        runP (cont ()) r x y loc ch (s, exts, ec:e, p, c)  popExtContextL :: String -> Lex a ()-popExtContextL fn = Lex $ \cont -> P $ \r x y loc stk@(s,e,p,c) -> case e of-            (_:ec) -> runP (cont ()) r x y loc (s,ec,p,c)-            []       -> error ("Internal error: empty tag context in " ++ fn)+popExtContextL fn = Lex $ \cont -> P $ \r x y loc ch (s,exts,e,p,c) m -> case e of+            (_:ec)   -> runP (cont ()) r x y loc ch (s,exts,ec,p,c) m+            []       -> Failed loc ("Internal error: empty tag context in " ++ fn)   -- Extension-aware lexing -getExtensionsL :: Lex a [Extension]-getExtensionsL = Lex $ \cont -> P $ \r x y loc s m ->-        runP (cont $ extensions m) r x y loc s m+getExtensionsL :: Lex a [KnownExtension]+getExtensionsL = Lex $ \cont -> P $ \r x y loc ch s m ->+        runP (cont $ iExtensions m) r x y loc ch s m +-- | Add an extension to the current configuration.+addExtensionL :: KnownExtension -> Lex a ()+addExtensionL ext = Lex $ \cont -> P $ \r x y loc ch (s, oldExts, e, p, c) m ->+        let newExts = impliesExts [ext] ++ iExtensions m+        in runP (cont ()) r x y loc ch (s, oldExts, e, p, c) (m {iExtensions = newExts})++-- | Save the current configuration of extensions.+saveExtensionsL :: Lex a ()+saveExtensionsL = Lex $ \cont -> P $ \r x y loc ch (s, oldExts, e, p, c) m ->+        runP (cont ()) r x y loc ch (s, iExtensions m:oldExts, e, p, c) m++-- | Return to the previous saved extensions configuration.+restoreExtensionsL :: Lex a ()+restoreExtensionsL = Lex $ \cont -> P $ \r x y loc ch (s,exts,e,p,c) m -> case exts of+            (_:prev) -> runP (cont ()) r x y loc ch (s,prev,e,p,c) m+            _        -> Failed loc "Internal error: empty extension stack"+ -- LINE-aware lexing  ignoreLinePragmasL :: Lex a Bool-ignoreLinePragmasL = Lex $ \cont -> P $ \r x y loc s m ->-        runP (cont $ ignoreLinePragmas m) r x y loc s m+ignoreLinePragmasL = Lex $ \cont -> P $ \r x y loc c s m ->+        runP (cont $ iIgnoreLinePragmas m) r x y loc c s m  -- If we read a file name in a LINE pragma, we should update the state. setLineFilenameL :: String -> Lex a ()-setLineFilenameL name = Lex $ \cont -> P $ \r x y loc s m ->-        runP (cont ()) r x y loc s (m {parseFilename = name})-        +setLineFilenameL name = Lex $ \cont -> P $ \r x y loc ch s m ->+        runP (cont ()) r x y loc ch s (m {iParseFilename = name})+ -- Comments  pushComment :: Comment -> Lex a ()-pushComment c = Lex $ \cont -> P $ \r x y loc (s, e, p, cs) ->-        runP (cont ()) r x y loc (s, e, p, c:cs)+pushComment c = Lex $ \cont -> P $ \r x y loc ch (s, exts, e, p, cs) ->+        runP (cont ()) r x y loc ch (s, exts, e, p, c:cs)
src/Language/Haskell/Exts/ParseSyntax.hs view
@@ -1,434 +1,385 @@-{-# OPTIONS_HADDOCK hide #-}
-module Language.Haskell.Exts.ParseSyntax where
-
-import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )
-import qualified Language.Haskell.Exts.Annotated.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )
-
----------------------------------------
--- Expressions as we parse them (and patters, and regular patterns)
-
-data PExp l
-    = Var l (QName l)                       -- ^ variable
-    | IPVar l (IPName l)                    -- ^ implicit parameter variable
-    | Con l (QName l)                       -- ^ data constructor
-    | Lit l (Literal l)                     -- ^ literal constant
-    | InfixApp l (PExp l) (QOp l) (PExp l)  -- ^ infix application
-    | App l (PExp l) (PExp l)               -- ^ ordinary application
-    | NegApp l (PExp l)                     -- ^ negation expression @-@ /exp/
-    | Lambda l [Pat l] (PExp l)             -- ^ lambda expression
-    | Let l (Binds l) (PExp l)              -- ^ local declarations with @let@
-    | If l (PExp l) (PExp l) (PExp l)       -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/
-    | Case l (PExp l) [Alt l]               -- ^ @case@ /exp/ @of@ /alts/
-    | Do l [Stmt l]                         -- ^ @do@-expression:
-                                            --   the last statement in the list
-                                            --   should be an expression.
-    | MDo l [Stmt l]                        -- ^ @mdo@-expression
---    | Tuple [PExp]                        -- ^ tuple expression
-    | TupleSection l [Maybe (PExp l)]       -- ^ tuple section expression, e.g. @(,,3)@
-    | List l [PExp l]                       -- ^ list expression
-    | Paren l (PExp l)                      -- ^ parenthesized expression
---     RightSection QOp PExp                -- ^ right section @(@/qop/ /exp/@)@
-    | RecConstr l (QName l) [PFieldUpdate l]
-                                            -- ^ record construction expression
-    | RecUpdate l (PExp l) [PFieldUpdate l]
-                                            -- ^ record update expression
-    | EnumFrom l (PExp l)                   -- ^ unbounded arithmetic sequence,
-                                            --   incrementing by 1
-    | EnumFromTo l (PExp l) (PExp l)        -- ^ bounded arithmetic sequence,
-                                            --   incrementing by 1
-    | EnumFromThen l (PExp l) (PExp l)      -- ^ unbounded arithmetic sequence,
-                                            --   with first two elements given
-    | EnumFromThenTo l (PExp l) (PExp l) (PExp l)
-                                            -- ^ bounded arithmetic sequence,
-                                            --   with first two elements given
-    | ParComp l (PExp l) [[QualStmt l]]     -- ^ parallel list comprehension
-    | ExpTypeSig l (PExp l) (S.Type l)      -- ^ expression type signature
-    | AsPat l (Name l) (PExp l)             -- ^ patterns only
-    | WildCard l                            -- ^ patterns only
-    | IrrPat l (PExp l)                     -- ^ patterns only
-
--- Post-ops for parsing left sections and regular patterns. Not to be left in the final tree.
-    | PostOp l (PExp l) (QOp l)             -- ^ post-ops
-    | PreOp l (QOp l) (PExp l)              -- ^ pre-ops
-
--- View patterns
-    | ViewPat l (PExp l) (PExp l)           -- ^ patterns only
-
--- HaRP
-    | SeqRP l [PExp l]                      -- ^ regular patterns only
-    | GuardRP l (PExp l) [Stmt l]           -- ^ regular patterns only
-    | EitherRP l (PExp l) (PExp l)          -- ^ regular patterns only
-    | CAsRP l (Name l) (PExp l)             -- ^ regular patterns only
-
--- Template Haskell
-    | VarQuote l (QName l)                  -- ^ 'x
-    | TypQuote l (QName l)                  -- ^ ''T
-    | BracketExp l (Bracket l)
-    | SpliceExp l (Splice l)
-    | QuasiQuote l String String            -- ^ [$...|...]
-
--- Hsx
-    | XTag  l (XName l) [ParseXAttr l] (Maybe (PExp l)) [PExp l]
-                                            -- ^ <Name>...</Name>
-    | XETag l (XName l) [ParseXAttr l] (Maybe (PExp l))
-                                            -- ^ <Name />
-    | XPcdata l String                      -- ^ PCDATA
-    | XExpTag l (PExp l)                    -- ^ <% ... %>
-    | XRPats l [PExp l]                     -- ^ <[ ... ]>
-
--- Pragmas
-    | CorePragma l      String  (PExp l)    -- ^ {-# CORE #-} pragma
-    | SCCPragma  l      String  (PExp l)    -- ^ {-# SCC #-} pragma
-    | GenPragma  l      String (Int, Int) (Int, Int) (PExp l)
-                                            -- ^ {-# GENERATED ... #-} pragma
-
--- Generics
-    | ExplTypeArg l (QName l) (S.Type l)    -- ^ f {| Int |} x = ...
-
--- Bang Patterns
-    | BangPat l (PExp l)                    -- ^ f !a = ...
-
--- Arrows
-    | Proc l (Pat l) (PExp l)               -- ^ proc p -> do
-    | LeftArrApp      l (PExp l) (PExp l)   -- ^ e -< e
-    | RightArrApp     l (PExp l) (PExp l)   -- ^ e >- e
-    | LeftArrHighApp  l (PExp l) (PExp l)   -- ^ e -<< e
-    | RightArrHighApp l (PExp l) (PExp l)   -- ^ e >>- e
-   deriving (Eq,Show)
-
-data PFieldUpdate l
-    = FieldUpdate l (QName l) (PExp l)
-    | FieldPun l (Name l)
-    | FieldWildcard l
-  deriving (Eq,Show)
-
-data ParseXAttr l = XAttr l (XName l) (PExp l)
-  deriving (Eq,Show)
-
-instance Annotated PExp where
-    ann e = case e of
-        Var l qn        -> l
-        IPVar l ipn     -> l
-        Con l qn        -> l
-        Lit l lit       -> l
-        InfixApp l e1 qop e2    -> l
-        App l e1 e2     -> l
-        NegApp l e      -> l
-        Lambda l ps e   -> l
-        Let l bs e      -> l
-        If l ec et ee   -> l
-        Case l e alts   -> l
-        Do l ss         -> l
-        MDo l ss        -> l
-        TupleSection l mes  -> l
-        List l es       -> l
-        Paren l e       -> l
-        RecConstr l qn fups     -> l
-        RecUpdate l e  fups     -> l
-        EnumFrom l e            -> l
-        EnumFromTo l ef et      -> l
-        EnumFromThen l ef et    -> l
-        EnumFromThenTo l ef eth eto -> l
-        ParComp  l e qsss       -> l
-        ExpTypeSig l e t        -> l
-        AsPat l n e             -> l
-        WildCard l              -> l
-        IrrPat l e              -> l
-        PostOp l e op           -> l
-        PreOp l op e            -> l
-        ViewPat l e1 e2         -> l
-        SeqRP l es              -> l
-        GuardRP l e ss          -> l
-        EitherRP l e1 e2        -> l
-        CAsRP l n e             -> l
-
-        VarQuote l qn           -> l
-        TypQuote l qn           -> l
-        BracketExp l br         -> l
-        SpliceExp l sp          -> l
-        QuasiQuote l sn se      -> l
-
-        XTag  l xn xas me es    -> l
-        XETag l xn xas me       -> l
-        XPcdata l s             -> l
-        XExpTag l e             -> l
-        XRPats l es             -> l
-
-        CorePragma l s e   -> l
-        SCCPragma  l s e   -> l
-        GenPragma  l s n12 n34 e -> l
-
-        ExplTypeArg l qn t      -> l
-        BangPat l e             -> l
-
-        Proc            l p e   -> l
-        LeftArrApp      l e1 e2 -> l
-        RightArrApp     l e1 e2 -> l
-        LeftArrHighApp  l e1 e2 -> l
-        RightArrHighApp l e1 e2 -> l
-
-    amap f e = case e of
-        Var l qn                -> Var   (f l) qn
-        IPVar l ipn             -> IPVar (f l) ipn
-        Con l qn                -> Con   (f l) qn
-        Lit l lit               -> Lit   (f l) lit
-        InfixApp l e1 qop e2    -> InfixApp (f l) e1 qop e2
-        App l e1 e2             -> App (f l) e1 e2
-        NegApp l e              -> NegApp (f l) e
-        Lambda l ps e           -> Lambda (f l) ps e
-        Let l bs e              -> Let (f l) bs e
-        If l ec et ee           -> If (f l) ec et ee
-        Case l e alts           -> Case (f l) e alts
-        Do l ss                 -> Do (f l) ss
-        MDo l ss                -> MDo (f l) ss
-        TupleSection l mes      -> TupleSection (f l) mes
-        List l es               -> List (f l) es
-        Paren l e               -> Paren (f l) e
-        RecConstr l qn fups     -> RecConstr (f l) qn fups
-        RecUpdate l e  fups     -> RecUpdate (f l) e  fups
-        EnumFrom l e            -> EnumFrom (f l) e
-        EnumFromTo l ef et      -> EnumFromTo (f l) ef et
-        EnumFromThen l ef et    -> EnumFromThen (f l) ef et
-        EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto
-        ParComp  l e qsss       -> ParComp  (f l) e qsss
-        ExpTypeSig l e t        -> ExpTypeSig (f l) e t
-
-        AsPat l n e             -> AsPat (f l) n e
-        WildCard l              -> WildCard (f l)
-        IrrPat l e              -> IrrPat (f l) e
-        PostOp l e op           -> PostOp (f l) e op
-        PreOp l op e            -> PreOp (f l) op e
-        ViewPat l e1 e2         -> ViewPat (f l) e1 e2
-        SeqRP l es              -> SeqRP (f l) es
-        GuardRP l e ss          -> GuardRP (f l) e ss
-        EitherRP l e1 e2        -> EitherRP (f l) e1 e2
-        CAsRP l n e             -> CAsRP (f l) n e
-        ExplTypeArg l n t       -> ExplTypeArg (f l) n t
-        BangPat l e             -> BangPat (f l) e
-
-        VarQuote l qn           -> VarQuote (f l) qn
-        TypQuote l qn           -> TypQuote (f l) qn
-        BracketExp l br         -> BracketExp (f l) br
-        SpliceExp l sp          -> SpliceExp (f l) sp
-        QuasiQuote l sn se      -> QuasiQuote (f l) sn se
-
-        XTag  l xn xas me es    -> XTag  (f l) xn xas me es
-        XETag l xn xas me       -> XETag (f l) xn xas me
-        XPcdata l s             -> XPcdata (f l) s
-        XExpTag l e             -> XExpTag (f l) e
-
-        CorePragma l s e        -> CorePragma (f l) s e
-        SCCPragma  l s e        -> SCCPragma  (f l) s e
-        GenPragma  l s n12 n34 e -> GenPragma  (f l) s n12 n34 e
-
-        Proc            l p e   -> Proc            (f l) p e
-        LeftArrApp      l e1 e2 -> LeftArrApp      (f l) e1 e2
-        RightArrApp     l e1 e2 -> RightArrApp     (f l) e1 e2
-        LeftArrHighApp  l e1 e2 -> LeftArrHighApp  (f l) e1 e2
-        RightArrHighApp l e1 e2 -> RightArrHighApp (f l) e1 e2
-
-instance Functor PExp where
-      fmap f e = case e of
-          Var l qn                -> Var   (f l) (fmap f qn)
-          IPVar l ipn             -> IPVar (f l) (fmap f ipn)
-          Con l qn                -> Con   (f l) (fmap f qn)
-          Lit l lit               -> Lit   (f l) (fmap f lit)
-          InfixApp l e1 qop e2    -> InfixApp (f l) (fmap f e1) (fmap f qop) (fmap f e2)
-          App l e1 e2             -> App (f l) (fmap f e1) (fmap f e2)
-          NegApp l e              -> NegApp (f l) (fmap f e)
-          Lambda l ps e           -> Lambda (f l) (map (fmap f) ps) (fmap f e)
-          Let l bs e              -> Let (f l) (fmap f bs) (fmap f e)
-          If l ec et ee           -> If (f l) (fmap f ec) (fmap f et) (fmap f ee)
-          Case l e alts           -> Case (f l) (fmap f e) (map (fmap f) alts)
-          Do l ss                 -> Do (f l) (map (fmap f) ss)
-          MDo l ss                -> MDo (f l) (map (fmap f) ss)
-          TupleSection l mes      -> TupleSection (f l) (map (fmap (fmap f)) mes)
-          List l es               -> List (f l) (map (fmap f) es)
-          Paren l e               -> Paren (f l) (fmap f e)
-          RecConstr l qn fups     -> RecConstr (f l) (fmap f qn) (map (fmap f) fups)
-          RecUpdate l e  fups     -> RecUpdate (f l) (fmap f e)  (map (fmap f) fups)
-          EnumFrom l e            -> EnumFrom (f l) (fmap f e)
-          EnumFromTo l ef et      -> EnumFromTo (f l) (fmap f ef) (fmap f et)
-          EnumFromThen l ef et    -> EnumFromThen (f l) (fmap f ef) (fmap f et)
-          EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) (fmap f ef) (fmap f eth) (fmap f eto)
-          ParComp  l e qsss       -> ParComp  (f l) (fmap f e) (map (map (fmap f)) qsss)
-          ExpTypeSig l e t        -> ExpTypeSig (f l) (fmap f e) (fmap f t)
-
-          AsPat l n e             -> AsPat (f l) (fmap f n) (fmap f e)
-          WildCard l              -> WildCard (f l)
-          IrrPat l e              -> IrrPat (f l) (fmap f e)
-          PostOp l e op           -> PostOp (f l) (fmap f e) (fmap f op)
-          PreOp l op e            -> PreOp (f l) (fmap f op) (fmap f e)
-          ViewPat l e1 e2         -> ViewPat (f l) (fmap f e1) (fmap f e2)
-          SeqRP l es              -> SeqRP (f l) (map (fmap f) es)
-          GuardRP l e ss          -> GuardRP (f l) (fmap f e) (map (fmap f) ss)
-          EitherRP l e1 e2        -> EitherRP (f l) (fmap f e1) (fmap f e2)
-          CAsRP l n e             -> CAsRP (f l) (fmap f n) (fmap f e)
-          ExplTypeArg l n t       -> ExplTypeArg (f l) (fmap f n) (fmap f t)
-          BangPat l e             -> BangPat (f l) (fmap f e)
-
-          VarQuote l qn           -> VarQuote (f l) (fmap f qn)
-          TypQuote l qn           -> TypQuote (f l) (fmap f qn)
-          BracketExp l br         -> BracketExp (f l) (fmap f br)
-          SpliceExp l sp          -> SpliceExp (f l) (fmap f sp)
-          QuasiQuote l sn se      -> QuasiQuote (f l) sn se
-
-          XTag  l xn xas me es    -> XTag  (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)
-          XETag l xn xas me       -> XETag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me)
-          XPcdata l s             -> XPcdata (f l) s
-          XExpTag l e             -> XExpTag (f l) (fmap f e)
-
-          CorePragma l s e        -> CorePragma (f l) s (fmap f e)
-          SCCPragma  l s e        -> SCCPragma  (f l) s (fmap f e)
-          GenPragma  l s n12 n34 e -> GenPragma  (f l) s n12 n34 (fmap f e)
-
-          Proc            l p e   -> Proc            (f l) (fmap f p) (fmap f e)
-          LeftArrApp      l e1 e2 -> LeftArrApp      (f l) (fmap f e1) (fmap f e2)
-          RightArrApp     l e1 e2 -> RightArrApp     (f l) (fmap f e1) (fmap f e2)
-          LeftArrHighApp  l e1 e2 -> LeftArrHighApp  (f l) (fmap f e1) (fmap f e2)
-          RightArrHighApp l e1 e2 -> RightArrHighApp (f l) (fmap f e1) (fmap f e2)
-
-
-
-instance Functor PFieldUpdate where
-    fmap f (FieldUpdate l qn e) = FieldUpdate (f l) (fmap f qn) (fmap f e)
-    fmap f (FieldPun l n)       = FieldPun (f l) (fmap f n)
-    fmap f (FieldWildcard l)    = FieldWildcard (f l)
-
-instance Annotated PFieldUpdate where
-    ann (FieldUpdate l qn e) = l
-    ann (FieldPun l n)       = l
-    ann (FieldWildcard l)    = l
-    amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e
-    amap f (FieldPun l n)       = FieldPun (f l) n
-    amap f (FieldWildcard l)    = FieldWildcard (f l)
-
-instance Functor ParseXAttr where
-    fmap f (XAttr l xn e) = XAttr (f l) (fmap f xn) (fmap f e)
-
-instance Annotated ParseXAttr where
-    ann (XAttr l _ _) = l
-    amap f (XAttr l xn e) = XAttr (f l) xn e
-
-p_unit_con :: l -> PExp l
-p_unit_con l         = Con l (unit_con_name l)
-
-p_tuple_con :: l -> Boxed -> Int -> PExp l
-p_tuple_con l b i       = Con l (tuple_con_name l b i)
-
-p_unboxed_singleton_con :: l -> PExp l
-p_unboxed_singleton_con l = Con l (unboxed_singleton_con_name l)
-
-data PContext l
-    = CxSingle l (PAsst l)
-    | CxTuple  l [PAsst l]
-    | CxParen  l (PContext l)
-    | CxEmpty  l
- deriving (Eq, Show)
-
-instance Functor PContext where
-  fmap f (CxSingle l asst) = CxSingle (f l) (fmap f asst)
-  fmap f (CxTuple l assts) = CxTuple (f l) (map (fmap f) assts)
-  fmap f (CxParen l ctxt)  = CxParen (f l) (fmap f ctxt)
-  fmap f (CxEmpty l)       = CxEmpty (f l)
-
-instance Annotated PContext where
-  ann (CxSingle l asst ) = l
-  ann (CxTuple  l assts) = l
-  ann (CxParen  l ctxt ) = l
-  ann (CxEmpty  l)       = l
-  amap f (CxSingle l asst ) = CxSingle (f l) asst
-  amap f (CxTuple  l assts) = CxTuple  (f l) assts
-  amap f (CxParen  l ctxt ) = CxParen  (f l) ctxt
-  amap f (CxEmpty l) = CxEmpty (f l)
-
-data PType l
-     = TyForall l
-        (Maybe [TyVarBind l])
-        (Maybe (PContext l))
-        (PType l)
-     | TyFun   l (PType l) (PType l)            -- ^ function type
-     | TyTuple l Boxed     [PType l]            -- ^ tuple type, possibly boxed
-     | TyList  l (PType l)                      -- ^ list syntax, e.g. [a], as opposed to [] a
-     | TyApp   l (PType l) (PType l)            -- ^ application of a type constructor
-     | TyVar   l (Name l)                       -- ^ type variable
-     | TyCon   l (QName l)                      -- ^ named type or type constructor
-     | TyParen l (PType l)                      -- ^ type surrounded by parentheses
-     | TyPred  l (PAsst l)                      -- ^ assertion of an implicit parameter
-     | TyInfix l (PType l) (QName l) (PType l)  -- ^ infix type constructor
-     | TyKind  l (PType l) (Kind l)             -- ^ type with explicit kind signature
-  deriving (Eq, Show)
-
-instance Functor PType where
-    fmap f t = case t of
-      TyForall l mtvs mcx t         -> TyForall (f l) (fmap (map (fmap f)) mtvs) (fmap (fmap f) mcx) (fmap f t)
-      TyFun   l t1 t2               -> TyFun (f l) (fmap f t1) (fmap f t2)
-      TyTuple l b ts                -> TyTuple (f l) b (map (fmap f) ts)
-      TyList  l t                   -> TyList (f l) (fmap f t)
-      TyApp   l t1 t2               -> TyApp (f l) (fmap f t1) (fmap f t2)
-      TyVar   l n                   -> TyVar (f l) (fmap f n)
-      TyCon   l qn                  -> TyCon (f l) (fmap f qn)
-      TyParen l t                   -> TyParen (f l) (fmap f t)
-      TyPred  l asst                -> TyPred (f l) (fmap f asst)
-      TyInfix l ta qn tb            -> TyInfix (f l) (fmap f ta) (fmap f qn) (fmap f tb)
-      TyKind  l t k                 -> TyKind (f l) (fmap f t) (fmap f k)
-
-instance Annotated PType where
-    ann t = case t of
-      TyForall l mtvs cx t          -> l
-      TyFun   l t1 t2               -> l
-      TyTuple l b ts                -> l
-      TyList  l t                   -> l
-      TyApp   l t1 t2               -> l
-      TyVar   l n                   -> l
-      TyCon   l qn                  -> l
-      TyParen l t                   -> l
-      TyInfix l ta qn tb            -> l
-      TyKind  l t k                 -> l
-    amap f t = case t of
-      TyForall l mtvs mcx t         -> TyForall (f l) mtvs mcx t
-      TyFun   l t1 t2               -> TyFun (f l) t1 t2
-      TyTuple l b ts                -> TyTuple (f l) b ts
-      TyList  l t                   -> TyList (f l) t
-      TyApp   l t1 t2               -> TyApp (f l) t1 t2
-      TyVar   l n                   -> TyVar (f l) n
-      TyCon   l qn                  -> TyCon (f l) qn
-      TyParen l t                   -> TyParen (f l) t
-      TyInfix l ta qn tb            -> TyInfix (f l) ta qn tb
-      TyKind  l t k                 -> TyKind (f l) t k
-
-data PAsst l
-    = ClassA l (QName l) [PType l]
-    | InfixA l (PType l) (QName l) (PType l)
-    | IParam l (IPName l) (PType l)
-    | EqualP l (PType l)  (PType l)
-  deriving (Eq, Show)
-
-instance Functor PAsst where
-    fmap f asst = case asst of
-        ClassA l qn ts      -> ClassA (f l) (fmap f qn) (map (fmap f) ts)
-        InfixA l ta qn tb   -> InfixA (f l) (fmap f ta) (fmap f qn) (fmap f tb)
-        IParam l ipn t      -> IParam (f l) (fmap f ipn) (fmap f t)
-        EqualP l t1 t2      -> EqualP (f l) (fmap f t1) (fmap f t2)
-
-instance Annotated PAsst where
-    ann asst = case asst of
-        ClassA l qn ts      -> l
-        InfixA l ta qn tb   -> l
-        IParam l ipn t      -> l
-        EqualP l t1 t2      -> l
-    amap f asst = case asst of
-        ClassA l qn ts      -> ClassA (f l) qn ts
-        InfixA l ta qn tb   -> InfixA (f l) ta qn tb
-        IParam l ipn t      -> IParam (f l) ipn t
-        EqualP l t1 t2      -> EqualP (f l) t1 t2
-
-
-unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: l -> PType l
-unit_tycon              l = TyCon l (unit_tycon_name l)
-fun_tycon               l = TyCon l (fun_tycon_name l)
-list_tycon              l = TyCon l (list_tycon_name l)
-unboxed_singleton_tycon l = TyCon l (unboxed_singleton_tycon_name l)
-
-tuple_tycon :: l -> Boxed -> Int -> PType l
-tuple_tycon l b i         = TyCon l (tuple_tycon_name l b i)
+{-# LANGUAGE DeriveFunctor #-}+{-# OPTIONS_HADDOCK hide #-}+module Language.Haskell.Exts.ParseSyntax where++import Language.Haskell.Exts.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )+import qualified Language.Haskell.Exts.Syntax as S ( Type(..), Promoted(..) )++---------------------------------------+-- Expressions as we parse them (and patterns, and regular patterns)++data PExp l+    = Var l (QName l)                       -- ^ variable+    | OverloadedLabel l String              -- ^ overloaded label #foo+    | IPVar l (IPName l)                    -- ^ implicit parameter variable+    | Con l (QName l)                       -- ^ data constructor+    | Lit l (Literal l)                     -- ^ literal constant+    | InfixApp l (PExp l) (QOp l) (PExp l)  -- ^ infix application+    | App l (PExp l) (PExp l)               -- ^ ordinary application+    | NegApp l (PExp l)                     -- ^ negation expression @-@ /exp/+    | Lambda l [Pat l] (PExp l)             -- ^ lambda expression+    | Let l (Binds l) (PExp l)              -- ^ local declarations with @let@+    | If l (PExp l) (PExp l) (PExp l)       -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/+    | MultiIf l [GuardedRhs l]              -- ^ @if@ @|@ /stmts/ @->@ /exp/ ...+    | Case l (PExp l) [Alt l]               -- ^ @case@ /exp/ @of@ /alts/+    | Do l [Stmt l]                         -- ^ @do@-expression:+                                            --   the last statement in the list+                                            --   should be an expression.+    | MDo l [Stmt l]                        -- ^ @mdo@-expression+    | TupleSection l Boxed [Maybe (PExp l)] -- ^ tuple section expression, e.g. @(,,3)@+    | UnboxedSum l Int Int (PExp l)         -- ^ Unboxed sum+    | List l [PExp l]                       -- ^ list expression+    | ParArray l [PExp l]                   -- ^ parallel array expression+    | Paren l (PExp l)                      -- ^ parenthesized expression+    | RecConstr l (QName l) [PFieldUpdate l]+                                            -- ^ record construction expression+    | RecUpdate l (PExp l) [PFieldUpdate l]+                                            -- ^ record update expression+    | EnumFrom l (PExp l)                   -- ^ unbounded arithmetic sequence,+                                            --   incrementing by 1+    | EnumFromTo l (PExp l) (PExp l)        -- ^ bounded arithmetic sequence,+                                            --   incrementing by 1+    | EnumFromThen l (PExp l) (PExp l)      -- ^ unbounded arithmetic sequence,+                                            --   with first two elements given+    | EnumFromThenTo l (PExp l) (PExp l) (PExp l)+                                            -- ^ bounded arithmetic sequence,+                                            --   with first two elements given+    | ParArrayFromTo l (PExp l) (PExp l)    -- ^ bounded arithmetic sequence,+                                            --   incrementing by 1+    | ParArrayFromThenTo l (PExp l) (PExp l) (PExp l)+                                            -- ^ bounded arithmetic sequence,+                                            --   with first two elements given+    | ParComp l (PExp l) [[QualStmt l]]     -- ^ parallel list comprehension+    | ParArrayComp l (PExp l) [[QualStmt l]] -- ^ parallel array comprehension+    | ExpTypeSig l (PExp l) (S.Type l)      -- ^ expression type signature+    | AsPat l (Name l) (PExp l)             -- ^ patterns only+    | WildCard l                            -- ^ patterns only+    | IrrPat l (PExp l)                     -- ^ patterns only++-- Post-ops for parsing left sections and regular patterns. Not to be left in the final tree.+    | PostOp l (PExp l) (QOp l)             -- ^ post-ops+    | PreOp l (QOp l) (PExp l)              -- ^ pre-ops++-- View patterns+    | ViewPat l (PExp l) (Pat l)            -- ^ patterns only++-- HaRP+    | SeqRP l [PExp l]                      -- ^ regular patterns only+    | GuardRP l (PExp l) [Stmt l]           -- ^ regular patterns only+    | EitherRP l (PExp l) (PExp l)          -- ^ regular patterns only+    | CAsRP l (Name l) (PExp l)             -- ^ regular patterns only++-- Template Haskell+    | VarQuote l (QName l)                  -- ^ 'x+    | TypQuote l (QName l)                  -- ^ ''T+    | BracketExp l (Bracket l)+    | SpliceExp l (Splice l)+    | QuasiQuote l String String            -- ^ [$...|...]++-- Hsx+    | XTag  l (XName l) [ParseXAttr l] (Maybe (PExp l)) [PExp l]+                                            -- ^ <Name>...</Name>+    | XETag l (XName l) [ParseXAttr l] (Maybe (PExp l))+                                            -- ^ <Name />+    | XPcdata l String                      -- ^ PCDATA+    | XExpTag l (PExp l)                    -- ^ <% ... %>+    | XChildTag l [PExp l]                  -- ^ <%> ... </%>+    | XRPats l [PExp l]                     -- ^ <[ ... ]>++-- Pragmas+    | CorePragma l      String  (PExp l)    -- ^ {-# CORE #-} pragma+    | SCCPragma  l      String  (PExp l)    -- ^ {-# SCC #-} pragma+    | GenPragma  l      String (Int, Int) (Int, Int) (PExp l)+                                            -- ^ {-# GENERATED ... #-} pragma++-- Bang Patterns+    | BangPat l (PExp l)                    -- ^ f !a = ...++-- Arrows+    | Proc l (Pat l) (PExp l)               -- ^ proc p -> do+    | LeftArrApp      l (PExp l) (PExp l)   -- ^ e -< e+    | RightArrApp     l (PExp l) (PExp l)   -- ^ e >- e+    | LeftArrHighApp  l (PExp l) (PExp l)   -- ^ e -<< e+    | RightArrHighApp l (PExp l) (PExp l)   -- ^ e >>- e+    | ArrOp l (PExp l)                      -- ^ (| e |)++-- LambdaCase+    | LCase l [Alt l]                       -- ^ @\case@ /alts/+    | TypeApp l (S.Type l)+   deriving (Eq,Show,Functor)++data PFieldUpdate l+    = FieldUpdate l (QName l) (PExp l)+    | FieldPun l (QName l)+    | FieldWildcard l+  deriving (Eq,Show,Functor)++data ParseXAttr l = XAttr l (XName l) (PExp l)+  deriving (Eq,Show,Functor)++instance Annotated PExp where+    ann e = case e of+        Var l _                 -> l+        OverloadedLabel l _     -> l+        IPVar l _               -> l+        Con l _                 -> l+        Lit l _                 -> l+        InfixApp l _ _ _        -> l+        App l _ _               -> l+        NegApp l _              -> l+        Lambda l _ _            -> l+        Let l _ _               -> l+        If l _ _ _              -> l+        Case l _ _              -> l+        Do l _                  -> l+        MDo l _                 -> l+        TupleSection l _ _      -> l+        UnboxedSum l _ _ _      -> l+        List l _                -> l+        ParArray l _            -> l+        Paren l _               -> l+        RecConstr l _ _         -> l+        RecUpdate l _  _        -> l+        EnumFrom l _            -> l+        EnumFromTo l _ _        -> l+        EnumFromThen l _ _      -> l+        EnumFromThenTo l _ _ _  -> l+        ParArrayFromTo l _ _    -> l+        ParArrayFromThenTo l _ _ _ -> l+        ParComp  l _ _          -> l+        ParArrayComp  l _ _     -> l+        ExpTypeSig l _ _        -> l+        AsPat l _ _             -> l+        WildCard l              -> l+        IrrPat l _              -> l+        PostOp l _ _            -> l+        PreOp l _ _             -> l+        ViewPat l _ _           -> l+        SeqRP l _               -> l+        GuardRP l _ _           -> l+        EitherRP l _ _          -> l+        CAsRP l _ _             -> l++        VarQuote l _            -> l+        TypQuote l _            -> l+        BracketExp l _          -> l+        SpliceExp l _           -> l+        QuasiQuote l _ _        -> l++        XTag  l _ _ _ _         -> l+        XETag l _  _ _          -> l+        XPcdata l _             -> l+        XExpTag l _             -> l+        XChildTag l _           -> l+        XRPats l _              -> l++        CorePragma l _ _        -> l+        SCCPragma  l _ _        -> l+        GenPragma  l _ _ _ _    -> l++        BangPat l _             -> l++        Proc            l _ _   -> l+        LeftArrApp      l _ _   -> l+        RightArrApp     l _ _   -> l+        LeftArrHighApp  l _ _   -> l+        RightArrHighApp l _ _   -> l+        ArrOp           l _     -> l++        LCase l _               -> l+        MultiIf l _             -> l+        TypeApp l _             -> l+++    amap f e' = case e' of+        Var l qn                -> Var   (f l) qn+        OverloadedLabel l qn    -> OverloadedLabel (f l) qn+        IPVar l ipn             -> IPVar (f l) ipn+        Con l qn                -> Con   (f l) qn+        Lit l lit               -> Lit   (f l) lit+        InfixApp l e1 qop e2    -> InfixApp (f l) e1 qop e2+        App l e1 e2             -> App (f l) e1 e2+        NegApp l e              -> NegApp (f l) e+        Lambda l ps e           -> Lambda (f l) ps e+        Let l bs e              -> Let (f l) bs e+        If l ec et ee           -> If (f l) ec et ee+        Case l e alts           -> Case (f l) e alts+        Do l ss                 -> Do (f l) ss+        MDo l ss                -> MDo (f l) ss+        TupleSection l bx mes   -> TupleSection (f l) bx mes+        UnboxedSum l b a e     -> UnboxedSum (f l) b a e+        List l es               -> List (f l) es+        ParArray l es           -> ParArray (f l) es+        Paren l e               -> Paren (f l) e+        RecConstr l qn fups     -> RecConstr (f l) qn fups+        RecUpdate l e  fups     -> RecUpdate (f l) e  fups+        EnumFrom l e            -> EnumFrom (f l) e+        EnumFromTo l ef et      -> EnumFromTo (f l) ef et+        EnumFromThen l ef et    -> EnumFromThen (f l) ef et+        EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto+        ParArrayFromTo l ef et  -> ParArrayFromTo (f l) ef et+        ParArrayFromThenTo l ef eth eto -> ParArrayFromThenTo (f l) ef eth eto+        ParComp  l e qsss       -> ParComp  (f l) e qsss+        ParArrayComp  l e qsss  -> ParArrayComp  (f l) e qsss+        ExpTypeSig l e t        -> ExpTypeSig (f l) e t++        AsPat l n e             -> AsPat (f l) n e+        WildCard l              -> WildCard (f l)+        IrrPat l e              -> IrrPat (f l) e+        PostOp l e op           -> PostOp (f l) e op+        PreOp l op e            -> PreOp (f l) op e+        ViewPat l e1 e2         -> ViewPat (f l) e1 e2+        SeqRP l es              -> SeqRP (f l) es+        GuardRP l e ss          -> GuardRP (f l) e ss+        EitherRP l e1 e2        -> EitherRP (f l) e1 e2+        CAsRP l n e             -> CAsRP (f l) n e+        BangPat l e             -> BangPat (f l) e++        VarQuote l qn           -> VarQuote (f l) qn+        TypQuote l qn           -> TypQuote (f l) qn+        BracketExp l br         -> BracketExp (f l) br+        SpliceExp l sp          -> SpliceExp (f l) sp+        QuasiQuote l sn se      -> QuasiQuote (f l) sn se++        XTag  l xn xas me es    -> XTag  (f l) xn xas me es+        XETag l xn xas me       -> XETag (f l) xn xas me+        XPcdata l s             -> XPcdata (f l) s+        XExpTag l e             -> XExpTag (f l) e+        XChildTag l es          -> XChildTag (f l) es+        XRPats l es             -> XRPats (f l) es++        CorePragma l s e        -> CorePragma (f l) s e+        SCCPragma  l s e        -> SCCPragma  (f l) s e+        GenPragma  l s n12 n34 e -> GenPragma  (f l) s n12 n34 e++        Proc            l p e   -> Proc            (f l) p e+        LeftArrApp      l e1 e2 -> LeftArrApp      (f l) e1 e2+        RightArrApp     l e1 e2 -> RightArrApp     (f l) e1 e2+        LeftArrHighApp  l e1 e2 -> LeftArrHighApp  (f l) e1 e2+        RightArrHighApp l e1 e2 -> RightArrHighApp (f l) e1 e2+        ArrOp           l e     -> ArrOp           (f l) e++        LCase l alts -> LCase (f l) alts+        MultiIf l alts -> MultiIf (f l) alts+        TypeApp l ty -> TypeApp (f l) ty++instance Annotated PFieldUpdate where+    ann (FieldUpdate l _  _) = l+    ann (FieldPun l _)       = l+    ann (FieldWildcard l)    = l+    amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e+    amap f (FieldPun l n)       = FieldPun (f l) n+    amap f (FieldWildcard l)    = FieldWildcard (f l)++instance Annotated ParseXAttr where+    ann (XAttr l _ _) = l+    amap f (XAttr l xn e) = XAttr (f l) xn e++p_unit_con :: l -> PExp l+p_unit_con l         = Con l (unit_con_name l)++p_tuple_con :: l -> Boxed -> Int -> PExp l+p_tuple_con l b i       = Con l (tuple_con_name l b i)++p_unboxed_singleton_con :: l -> PExp l+p_unboxed_singleton_con l = Con l (unboxed_singleton_con_name l)++data PContext l+    = CxSingle l (PAsst l)+    | CxTuple  l [PAsst l]+    | CxEmpty  l+ deriving (Eq, Show, Functor)++instance Annotated PContext where+  ann (CxSingle l _ ) = l+  ann (CxTuple  l _)  = l+  ann (CxEmpty  l)       = l+  amap f (CxSingle l asst ) = CxSingle (f l) asst+  amap f (CxTuple  l assts) = CxTuple  (f l) assts+  amap f (CxEmpty l) = CxEmpty (f l)++data PType l+     = TyForall l+        (Maybe [TyVarBind l])+        (Maybe (PContext l))+        (PType l)+     | TyStar  l                                -- ^ @*@, the type of types+     | TyFun   l (PType l) (PType l)            -- ^ function type+     | TyTuple l Boxed     [PType l]            -- ^ tuple type, possibly boxed+     | TyUnboxedSum l [PType l]                 -- ^ unboxed sum+     | TyList  l (PType l)                      -- ^ list syntax, e.g. [a], as opposed to [] a+     | TyParArray l (PType l)                   -- ^ parallel array syntax, e.g. [:a:]+     | TyApp   l (PType l) (PType l)            -- ^ application of a type constructor+     | TyVar   l (Name l)                       -- ^ type variable+     | TyCon   l (QName l)                      -- ^ named type or type constructor+     | TyParen l (PType l)                      -- ^ type surrounded by parentheses+     | TyPred  l (PAsst l)                      -- ^ assertion of an implicit parameter+     | TyInfix l (PType l) (MaybePromotedName l) (PType l)  -- ^ infix type constructor+     | TyKind  l (PType l) (Kind l)             -- ^ type with explicit kind signature+     | TyPromoted l (S.Promoted l)              -- ^ promoted data type+     | TyEquals l (PType l) (PType l)           -- ^ type equality constraint+     | TySplice l (Splice l)                    -- ^ template haskell splice type+     | TyBang l (BangType l) (Unpackedness l) (PType l) -- ^ Strict type marked with \"@!@\" or type marked with UNPACK pragma.+     | TyWildCard l (Maybe (Name l))            -- ^ Type wildcard+     | TyQuasiQuote l String String             -- ^ @[qq| |]@+  deriving (Eq, Show, Functor)++instance Annotated PType where+    ann t = case t of+      TyForall l _ _ _              -> l+      TyStar  l                     -> l+      TyFun   l _ _                 -> l+      TyTuple l _ _                 -> l+      TyUnboxedSum l _              -> l+      TyList  l _                   -> l+      TyParArray  l _               -> l+      TyApp   l _ _                 -> l+      TyVar   l _                   -> l+      TyCon   l _                   -> l+      TyParen l _                   -> l+      TyInfix l _ _ _               -> l+      TyKind  l _ _                 -> l+      TyPromoted l   _              -> l+      TyEquals l _ _                 -> l+      TyPred l _                    -> l+      TySplice l _                  -> l+      TyBang  l _ _ _                 -> l+      TyWildCard  l _               -> l+      TyQuasiQuote l _ _            -> l+    amap f t' = case t' of+      TyForall l mtvs mcx t         -> TyForall (f l) mtvs mcx t+      TyStar  l                     -> TyStar (f l)+      TyFun   l t1 t2               -> TyFun (f l) t1 t2+      TyTuple l b ts                -> TyTuple (f l) b ts+      TyUnboxedSum l ts             -> TyUnboxedSum (f l) ts+      TyList  l t                   -> TyList (f l) t+      TyParArray  l t               -> TyParArray (f l) t+      TyApp   l t1 t2               -> TyApp (f l) t1 t2+      TyVar   l n                   -> TyVar (f l) n+      TyCon   l qn                  -> TyCon (f l) qn+      TyParen l t                   -> TyParen (f l) t+      TyInfix l ta qn tb            -> TyInfix (f l) ta qn tb+      TyKind  l t k                 -> TyKind (f l) t k+      TyPromoted l   p              -> TyPromoted (f l)   p+      TyEquals l t1 t2              -> TyEquals (f l) t1 t2+      TyPred l asst                 -> TyPred (f l) asst+      TySplice l s                  -> TySplice (f l) s+      TyBang  l b u t                 -> TyBang (f l) b u t+      TyWildCard l mn               -> TyWildCard (f l) mn+      TyQuasiQuote l n s            -> TyQuasiQuote (f l) n s++data PAsst l+    = TypeA l (PType l)+    | IParam l (IPName l) (PType l)+    | ParenA l (PAsst l)+  deriving (Eq, Show, Functor)++instance Annotated PAsst where+    ann asst = case asst of+        TypeA l _           -> l+        IParam l _ _        -> l+        ParenA l _          -> l+    amap f asst = case asst of+        TypeA l t           -> TypeA (f l) t+        IParam l ipn t      -> IParam (f l) ipn t+        ParenA l a          -> ParenA (f l) a
src/Language/Haskell/Exts/ParseUtils.hs view
@@ -1,4 +1,6 @@ {-# OPTIONS_HADDOCK hide #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE PatternGuards #-} ----------------------------------------------------------------------------- -- | -- Module      :  Language.Haskell.Exts.ParseUtils@@ -17,6 +19,8 @@ module Language.Haskell.Exts.ParseUtils (       splitTyConApp         -- PType -> P (Name,[Type])     , checkEnabled          -- (Show e, Enabled e) => e -> P ()+    , checkEnabledOneOf+    , checkToplevel         -- ??     , checkPatternGuards    -- [Stmt] -> P ()     , mkRecConstrOrUpdate   -- PExp -> [PFieldUpdate] -> P Exp     , checkPrec             -- Integer -> P Int@@ -30,18 +34,30 @@     , checkPattern          -- PExp -> P Pat     , checkExpr             -- PExp -> P Exp     , checkType             -- PType -> P Type+    , checkTyVar            -- Name  -> P PType+    , bangType              -- L -> BangType -> Type -> Type+    , checkKind             -- Kind -> P ()     , checkValDef           -- SrcLoc -> PExp -> Maybe Type -> Rhs -> Binds -> P Decl+    , checkExplicitPatSyn   --     , checkClassBody        -- [ClassDecl] -> P [ClassDecl]     , checkInstBody         -- [InstDecl] -> P [InstDecl]     , checkUnQual           -- QName -> P Name+    , checkQualOrUnQual     -- QName -> P QName+    , checkSingleDecl       -- [Decl] -> P Decl     , checkRevDecls         -- [Decl] -> P [Decl]     , checkRevClsDecls      -- [ClassDecl] -> P [ClassDecl]     , checkRevInstDecls     -- [InstDecl] -> P [InstDecl]-    , checkDataOrNew        -- DataOrNew -> [a] -> P ()+    , checkDataOrNew        -- DataOrNew -> [QualConDecl] -> P ()+    , checkDataOrNewG       -- DataOrNew -> [GadtDecl] -> P ()     , checkSimpleType       -- PType -> P (Name, [TyVarBind])     , checkSigVar           -- PExp -> P Name+    , checkDefSigDef        -- Decl -> P Decl     , getGConName           -- S.Exp -> P QName     , mkTyForall            -- Maybe [TyVarBind] -> PContext -> PType -> PType+    , mkRoleAnnotDecl       --+    , mkAssocType+    , mkEThingWith+    , splitTilde     -- HaRP     , checkRPattern         -- PExp -> P RPat     -- Hsx@@ -52,34 +68,47 @@     -- Pragmas     , checkRuleExpr         -- PExp -> P Exp     , readTool              -- Maybe String -> Maybe Tool+    -- Helpers+    , updateQNameLoc        -- l -> QName l -> QName l +    , SumOrTuple(..), mkSumOrTuple+     -- Parsed expressions and types     , PExp(..), PFieldUpdate(..), ParseXAttr(..), PType(..), PContext, PAsst(..)     , p_unit_con            -- PExp     , p_tuple_con           -- Boxed -> Int -> PExp     , p_unboxed_singleton_con   -- PExp+    , pexprToQName     ) where -import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )-import qualified Language.Haskell.Exts.Annotated.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )-import Language.Haskell.Exts.Annotated.Build+import Language.Haskell.Exts.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )+import qualified Language.Haskell.Exts.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..), Role(..), PatternSynDirection(..))  import Language.Haskell.Exts.ParseSyntax import Language.Haskell.Exts.ParseMonad import Language.Haskell.Exts.Pretty-import Language.Haskell.Exts.SrcLoc+import Language.Haskell.Exts.SrcLoc hiding (loc) import Language.Haskell.Exts.Extension import Language.Haskell.Exts.ExtScheme -import Data.List (intersperse)-import Data.Maybe (fromJust)-import Control.Monad (when,liftM)+import Prelude hiding (mod)+import Data.List (intercalate, intersperse)+import Data.Maybe (fromJust, fromMaybe)+import Data.Either+import Control.Monad (when,unless) ---- import Debug.Trace (trace)+#if __GLASGOW_HASKELL__ < 710+import Control.Applicative ((<$>))+#endif  type L = SrcSpanInfo type S = SrcSpan +pexprToQName :: PExp l -> P (QName l)+pexprToQName (Con _ qn) = return qn+pexprToQName (List l []) = return $ Special l (ListCon l)+pexprToQName _ = fail "pexprToQName"+ splitTyConApp :: PType L -> P (Name L, [S.Type L]) splitTyConApp t0 = do             (n, pts) <- split t0 []@@ -89,7 +118,7 @@     split :: PType L -> [PType L] -> P (Name L, [PType L])     split (TyApp _ t u) ts = split t (u:ts)     split (TyCon _ (UnQual _ t)) ts = return (t,ts)-    split (TyInfix l a op b) ts = split (TyCon l op) (a:b:ts)+    split (TyInfix l a op b) ts = split (TyCon l (getMaybePromotedQName op)) (a:b:ts)     split _ _ = fail "Illegal data/newtype declaration"  -----------------------------------------------------------------------------@@ -98,14 +127,41 @@ checkEnabled :: (Show e, Enabled e) => e  -> P () checkEnabled e = do     exts <- getExtensions-    if isEnabled e exts-     then return ()-     else fail $ show e ++ " is not enabled"+    unless (isEnabled e exts) $ fail errorMsg+ where errorMsg = unwords+          [ show e+          , "language extension is not enabled."+          , "Please add {-# LANGUAGE " ++ show e ++  " #-}"+          , "pragma at the top of your module."+          ] +checkEnabledOneOf :: (Show e, Enabled e) => [e] -> P ()+checkEnabledOneOf es = do+    exts <- getExtensions+    unless (any (`isEnabled` exts) es) $+        fail errorMsg+  where errorMsg = unwords+          [ "At least one of"+          , joinOr id+          , "language extensions needs to be enabled."+          , "Please add:"+          , joinOr (\s -> "{-# LANGUAGE " ++ s ++ " #-}")+          , "language pragma at the top of your module."+          ]+        joinOr f = concat . intersperse " or "  . map (f . show) $ es+ checkPatternGuards :: [Stmt L] -> P () checkPatternGuards [Qualifier _ _] = return () checkPatternGuards _ = checkEnabled PatternGuards +checkToplevel :: PExp t -> P ()+checkToplevel e = do+    exts <- getExtensions+    let isQQ = case e of+            QuasiQuote {} -> isEnabled QuasiQuotes exts+            _ -> False+    unless isQQ (checkEnabled TemplateHaskell)+ ----------------------------------------------------------------------------- -- Checking contexts @@ -119,8 +175,12 @@ checkPContext (TyCon l (Special _ (UnitCon _))) =     return $ CxEmpty l checkPContext (TyParen l t) = do-    c <- checkPContext t-    return $ CxParen l c+    c <- checkAssertion t+    return $ CxSingle l (ParenA l c)+checkPContext t@(TyEquals tp _ _) = do+  checkEnabledOneOf [TypeFamilies, GADTs]+  return $ CxSingle tp $ TypeA tp t+ checkPContext t = do     c <- checkAssertion t     return $ CxSingle (ann c) c@@ -131,41 +191,82 @@ -- the class assertion parameters for later. checkAssertion :: PType L -> P (PAsst L) -- We cannot even get here unless ImplicitParameters is enabled.-checkAssertion (TyPred _ p@(IParam _ _ _)) = return p--- We cannot even get here unless TypeFamilies is enabled.-checkAssertion (TyPred _ p@(EqualP _ _ _)) = return p-checkAssertion t = checkAssertion' id [] t+checkAssertion (TyParen l asst) = do+    asst' <- checkAssertion asst+    return $ ParenA l asst'+checkAssertion (TyPred _ p) = checkAAssertion p+-- We cannot even get here unless TypeFamilies or GADTs is enabled.+-- N.B.: this is called only when the equality assertion is part of a+-- tuple+checkAssertion t' = do+        t'' <- checkAssertion' id [] t'+        return $ TypeA (ann t'') t''     where   -- class assertions must have at least one argument-            checkAssertion' fl ts@(_:xs) (TyCon l c) = do-                when (not $ null xs) $ checkEnabled MultiParamTypeClasses-                when (isSymbol c)    $ checkEnabled TypeOperators-                return $ ClassA (fl l) c ts-            checkAssertion' fl ts (TyApp l a t) = do+            checkAssertion' _ _ t@(TyEquals _ _ _) = return t+            checkAssertion' fl ts (TyCon l c) = do+                when (length ts < 1) $ checkEnabled FlexibleContexts+                checkAndWarnTypeOperators c+                return $ tyApps (fl l) (TyCon (fl l) c) ts+            checkAssertion' fl ts (TyApp l a t) =                 -- no check on t at this stage                 checkAssertion' (const (fl l)) (t:ts) a-            checkAssertion' fl ts (TyInfix l a op b) = do+            checkAssertion' fl _ (TyInfix l a op b) = do                 -- infix operators require TypeOperators-                checkEnabled TypeOperators-                return $ InfixA (fl l) a op b+                checkAndWarnTypeOperators (getMaybePromotedQName op)+                return $ TyInfix (fl l) a op b             checkAssertion' fl ts (TyParen l t) =                 checkAssertion' (const (fl l)) ts t-            checkAssertion' _ _ _ = fail "Illegal class assertion"+            checkAssertion' fl ts (TyVar l t) = do -- Dict :: cxt => Dict cxt+                checkEnabled ConstraintKinds+                return $ tyApps (fl l) (TyVar (fl l) t) ts+            checkAssertion' _ _ t@(TyWildCard _ _) = return t+            checkAssertion' _ _ t = do+                checkEnabled QuantifiedConstraints -- anything goes+                return t+            tyApps :: L -> PType L -> [PType L] -> PType L+            tyApps _ c [] = c+            tyApps l c (a:aa) = tyApps l (TyApp l c a) aa -isSymbol :: QName L -> Bool-isSymbol (UnQual _ (Symbol _ _)) = True-isSymbol (Qual _ _ (Symbol _ _)) = True-isSymbol _                       = False+checkAAssertion :: PAsst L -> P (PAsst L)+checkAAssertion (TypeA _ t) = checkAssertion t+checkAAssertion (ParenA l a) = do+    a' <- checkAAssertion a+    return $ ParenA l a'+checkAAssertion p = return p +-- Check class/instance declaration for multiparams+checkMultiParam :: PType L -> P ()+checkMultiParam = checkMultiParam' []+    where+        checkMultiParam' ts (TyCon _ _) =+            when (length ts /= 1) $ checkEnabled MultiParamTypeClasses+        checkMultiParam' ts (TyApp _ a t) = checkMultiParam' (t:ts) a+        checkMultiParam' _ (TyInfix _ _ _ _) = checkEnabled MultiParamTypeClasses+        checkMultiParam' ts (TyParen _ t) = checkMultiParam' ts t+        checkMultiParam' _ _ = return () +getSymbol :: QName L -> Maybe String+getSymbol (UnQual _ (Symbol _ s)) = Just s+getSymbol (Qual _ _ (Symbol _ s)) = Just s+getSymbol _                       = Nothing++-- | Checks whether the parameter is a symbol, and gives a nice warning for+-- "." if ExplicitForAll/TypeOperators are not enabled.+checkAndWarnTypeOperators :: QName L -> P ()+checkAndWarnTypeOperators c =+    case getSymbol c of+        Just s | s == "."  -> checkEnabledOneOf [ExplicitForAll, TypeOperators]+               | otherwise -> checkEnabled TypeOperators+        Nothing -> return ()+ -- Checks simple contexts for class and instance -- headers. If FlexibleContexts is enabled then -- anything goes, otherwise only tyvars are allowed. checkSContext :: Maybe (PContext L) -> P (Maybe (S.Context L)) checkSContext (Just ctxt) = case ctxt of     CxEmpty l -> return $ Just $ S.CxEmpty l-    CxSingle l a -> checkAsst True a >>= return . Just . S.CxSingle l-    CxTuple l as -> mapM (checkAsst True) as >>= return . Just . S.CxTuple l-    CxParen l cx -> checkSContext (Just cx) >>= return . fmap (S.CxParen l)+    CxSingle l a -> checkAsst a >>= return . Just . S.CxSingle l+    CxTuple l as -> mapM checkAsst as >>= return . Just . S.CxTuple l checkSContext _ = return Nothing  -- Checks ordinary contexts for sigtypes and data type@@ -175,40 +276,22 @@ checkContext :: Maybe (PContext L) -> P (Maybe (S.Context L)) checkContext (Just ctxt) = case ctxt of     CxEmpty l -> return $ Just $ S.CxEmpty l-    CxSingle l a -> checkAsst False a >>= return . Just . S.CxSingle l-    CxTuple l as -> mapM (checkAsst False) as >>= return . Just . S.CxTuple l-    CxParen l cx -> checkSContext (Just cx) >>= return . fmap (S.CxParen l)+    CxSingle l a -> checkAsst a >>= return . Just . S.CxSingle l+    CxTuple l as -> mapM checkAsst as >>= return . Just . S.CxTuple l checkContext _ = return Nothing -checkAsst :: Bool -> PAsst L -> P (S.Asst L)-checkAsst isSimple asst =+checkAsst :: PAsst L -> P (S.Asst L)+checkAsst asst =     case asst of-      ClassA l qn pts -> do-                ts <- mapM (checkAsstParam isSimple) pts-                return $ S.ClassA l qn ts-      InfixA l a op b -> do-                [a,b] <- mapM (checkAsstParam isSimple) [a,b]-                return $ S.InfixA l a op b+      TypeA l pt -> do+                t <- checkType pt+                return $ S.TypeA l t       IParam l ipn pt -> do                 t <- checkType pt                 return $ S.IParam l ipn t-      EqualP l pa pb  -> do-                a <- checkType pa-                b <- checkType pb-                return $ S.EqualP l a b--checkAsstParam :: Bool -> PType L -> P (S.Type L)-checkAsstParam isSimple t = do-        exts <- getExtensions-        if FlexibleContexts `elem` exts-         then checkType t-         else case t of-                TyVar l n     -> return $ S.TyVar l n-                TyApp l pf pt | not isSimple    -> do-                        f <- checkAsstParam isSimple pf-                        t <- checkType pt-                        return $ S.TyApp l f t-                _       -> fail "Malformed context: FlexibleContexts not enabled"+      ParenA l a      -> do+                a' <- checkAsst a+                return $ S.ParenA l a'  ----------------------------------------------------------------------------- -- Checking Headers@@ -216,71 +299,97 @@  checkDataHeader :: PType L -> P (Maybe (S.Context L), DeclHead L) checkDataHeader (TyForall _ Nothing cs t) = do-    dh <- checkSimple "data/newtype" t []-    cs <- checkContext cs-    return (cs,dh)+    dh <- checkSimple "data/newtype" t+    cs' <- checkContext cs+    return (cs',dh) checkDataHeader t = do-    dh <- checkSimple "data/newtype" t []+    dh <- checkSimple "data/newtype" t     return (Nothing,dh)  checkClassHeader :: PType L -> P (Maybe (S.Context L), DeclHead L) checkClassHeader (TyForall _ Nothing cs t) = do-    dh <- checkSimple "class" t []-    cs <- checkSContext cs-    return (cs,dh)+    checkMultiParam t+    dh <- checkSimple "class" t+    cs' <- checkSContext cs+    return (cs',dh) checkClassHeader t = do-    dh <- checkSimple "class" t []+    checkMultiParam t+    dh <- checkSimple "class" t     return (Nothing,dh) -checkSimple :: String -> PType L -> [TyVarBind L] -> P (DeclHead L)-checkSimple kw (TyApp _ l t) xs | isTyVarBind t = checkSimple kw l (toTyVarBind t : xs)-checkSimple _  (TyInfix l t1 (UnQual _ t) t2) []-    | isTyVarBind t1 && isTyVarBind t2 =-       checkEnabled TypeOperators >> return (DHInfix l (toTyVarBind t1) t (toTyVarBind t2))-checkSimple _kw (TyCon l (UnQual _ t))   xs = do-    case t of-      Symbol _ _ -> checkEnabled TypeOperators-      _ -> return ()-    return (DHead l t xs)-checkSimple kw (TyParen l t) xs = do-    dh <- checkSimple kw t xs+checkSimple :: String -> PType L -> P (DeclHead L)+--checkSimple kw (TyApp _ l t) xs | isTyVarBind t = checkSimple kw l (toTyVarBind t : xs)++checkSimple kw (TyApp l h t) = do+  tvb <- mkTyVarBind kw t+  h' <- checkSimple kw h+  return $ DHApp l h' tvb+checkSimple kw (TyInfix l t1 mq t2)+  | c@(UnQual _ t) <- getMaybePromotedQName mq+  = do+       checkAndWarnTypeOperators c+       tv1 <- mkTyVarBind kw t1+       tv2 <- mkTyVarBind kw t2+       return $ DHApp l (DHInfix l tv1 t) tv2+checkSimple _kw (TyCon _ c@(UnQual l t)) = do+    checkAndWarnTypeOperators c+    return (DHead l t)+checkSimple kw (TyParen l t) = do+    dh <- checkSimple kw t     return (DHParen l dh)-checkSimple kw _ _ = fail ("Illegal " ++ kw ++ " declaration")+checkSimple kw _ = fail ("Illegal " ++ kw ++ " declaration") +mkTyVarBind :: String -> PType L -> P (TyVarBind L)+mkTyVarBind _ (TyVar l n) = return $ UnkindedVar l n+mkTyVarBind _ (TyKind l (TyVar _ n) k) = return $ KindedVar l n k+mkTyVarBind _ (TyCon l c@(UnQual _ n@(Symbol _ _))) = checkAndWarnTypeOperators c >> return (UnkindedVar l n)+mkTyVarBind _ (TyKind l (TyCon _ c@(UnQual _ n@(Symbol _ _))) k) = checkAndWarnTypeOperators c >> return (KindedVar l n k)+mkTyVarBind kw _ = fail ("Illegal " ++ kw ++ " declaration")++{- isTyVarBind :: PType L -> Bool isTyVarBind (TyVar _ _) = True+--isTyVarBind (TyCon _ (UnQual _ n@(Symbol _ _))) = True isTyVarBind (TyKind _ (TyVar _ _) _) = True isTyVarBind _ = False  toTyVarBind :: PType L -> TyVarBind L toTyVarBind (TyVar l n) = UnkindedVar l n toTyVarBind (TyKind l (TyVar _ n) k) = KindedVar l n k+-} -checkInstHeader :: PType L -> P (Maybe (S.Context L), InstHead L)-checkInstHeader (TyForall _ Nothing cs t) = do-    ih <- checkInsts t []-    cs <- checkSContext cs-    return (cs, ih)-checkInstHeader t = do-    ih <- checkInsts t []-    return (Nothing, ih)+checkInstHeader :: PType L -> P (InstRule L)+checkInstHeader (TyParen l t) = checkInstHeader t >>= return . IParen l+checkInstHeader (TyForall l mtvs cs t) = do+    cs' <- checkSContext cs+    checkMultiParam t+    checkInsts (Just l) mtvs cs' t+checkInstHeader t = checkMultiParam t >> checkInsts Nothing Nothing Nothing t  -checkInsts :: PType L -> [PType L] -> P (InstHead L)-checkInsts (TyApp _ l t) ts = checkInsts l (t:ts)-checkInsts (TyCon l c)   ts = do-    when (isSymbol c) $ checkEnabled TypeOperators-    ts <- checkTypes ts-    return $ IHead l c ts-checkInsts (TyInfix l a op b) [] = do-    checkEnabled TypeOperators+checkInsts :: Maybe L -> Maybe [TyVarBind L] -> Maybe (S.Context L) -> PType L -> P (InstRule L)+checkInsts _ mtvs mctxt (TyParen l t) = checkInsts Nothing mtvs mctxt t >>= return . IParen l+checkInsts l1 mtvs mctxt t = do+    t' <- checkInstsGuts t+    return $ IRule (fromMaybe (fmap ann mctxt <?+> ann t') l1) mtvs mctxt t'++checkInstsGuts :: PType L -> P (InstHead L)+checkInstsGuts (TyApp l h t) = do+    t' <- checkType t+    h' <- checkInstsGuts h+    return $ IHApp l h' t'+checkInstsGuts (TyCon l c) = do+    checkAndWarnTypeOperators c+    return $ IHCon l c+checkInstsGuts (TyInfix l a op b) = do+    checkAndWarnTypeOperators (getMaybePromotedQName op)     [ta,tb] <- checkTypes [a,b]-    return $ IHInfix l ta op tb-checkInsts (TyParen l t) [] = checkInsts t [] >>= return . IHParen l-checkInsts _ _ = fail "Illegal instance declaration"+    return $ IHApp l (IHInfix l ta (getMaybePromotedQName op)) tb+checkInstsGuts (TyParen l t) = checkInstsGuts t >>= return . IHParen l+checkInstsGuts _ = fail "Illegal instance declaration" -checkDeriving :: [PType L] -> P [InstHead L]-checkDeriving = mapM (flip checkInsts [])+checkDeriving :: [PType L] -> P [InstRule L]+checkDeriving = mapM (checkInsts Nothing Nothing Nothing)  ----------------------------------------------------------------------------- -- Checking Patterns.@@ -292,27 +401,32 @@ checkPattern e = checkPat e []  checkPat :: PExp L -> [Pat L] -> P (Pat L)-checkPat (Con l c) args = return (PApp l c args)-checkPat (App l f x) args = do-    x <- checkPat x []-    checkPat f (x:args)+checkPat (Con l c) args = do+  let l' = foldl combSpanInfo l (map ann args)+  return (PApp l' c args)+checkPat (App _ f x) args = do+    x' <- checkPat x []+    checkPat f (x':args) checkPat (InfixApp _ l op r) args-    | op =~= (QVarOp () (UnQual () (Symbol () "!"))) = do+    | op =~= QVarOp () (UnQual () (Symbol () "!")) = do         -- We must have BangPatterns on         checkEnabled BangPatterns         let (e,es) = splitBang r []         ps <- mapM checkPattern (BangPat (ann op) e:es)         checkPat l (ps++args)-checkPat e [] = case e of-    Var l (UnQual _ x)   -> return (PVar l x)-    Lit l lit            -> return (PLit l lit)+checkPat e' [] = case e' of+    Var _ (UnQual l x)   -> return (PVar l x)+    Var _ (Special l (ExprHole _)) -> return (PWildCard l)+    Lit l lit            -> return (PLit l (Signless l2) lit)+            where l2 = noInfoSpan . srcInfoSpan $ l     InfixApp loc l op r  ->         case op of             QConOp _ c -> do-                    l <- checkPat l []-                    r <- checkPat r []-                    return (PInfixApp loc l c r)+                    l' <- checkPat l []+                    r' <- checkPat r []+                    return (PInfixApp loc l' c r')             QVarOp ppos (UnQual _ (Symbol _ "+")) -> do+                    checkEnabled NPlusKPatterns                     case (l,r) of                         (Var _ (UnQual _ n@(Ident _ _)), Lit _ (Int kpos k _)) -> do                             let pp = srcInfoSpan ppos@@ -320,11 +434,13 @@                             return (PNPlusK (loc <** [pp,kp]) n k)                         _ -> patFail ""             _ -> patFail ""-    TupleSection l mes    ->-            if not (any ((==) Nothing) mes)+    TupleSection l bx mes    ->+            if Nothing `notElem` mes              then do ps <- mapM (\e -> checkPat e []) (map fromJust mes)-                     return (PTuple l ps)+                     return (PTuple l bx ps)              else fail "Illegal tuple section in pattern"+    UnboxedSum l b a e ->+      PUnboxedSum l b a <$> checkPattern e      List l es      -> do                   ps <- mapM checkRPattern es@@ -339,8 +455,8 @@                   isStdPat _           = False                   stripRP :: RPat L -> Pat L                   stripRP (RPPat  _ p) = p-                  stripRP (RPAs l n p) = PAsPat l n (stripRP p)-                  stripRP (RPParen l p) = PParen l (stripRP p)+                  stripRP (RPAs l' n p) = PAsPat l' n (stripRP p)+                  stripRP (RPParen l' p) = PParen l' (stripRP p)                   stripRP _           = error "cannot strip RP wrapper if not all patterns are base"      Paren l e      -> do@@ -354,13 +470,17 @@                   p <- checkPat e []                   return (PIrrPat l p)     ViewPat l e p  -> do-                  e <- checkExpr e-                  p <- checkPat p []-                  return (PViewPat l e p)+                  e1 <- checkExpr e+                  return (PViewPat l e1 p)     RecConstr l c fs   -> do-                  fs <- mapM checkPatField fs-                  return (PRec l c fs)-    NegApp l1 (Lit l2 lit) -> return (PNeg l1 (PLit l2 lit))+                  fs' <- mapM checkPatField fs+                  return (PRec l c fs')+    NegApp l (Lit _ lit) ->+                  let siSign = last . srcInfoPoints $ l+                      lSign = infoSpan siSign [siSign]+                  in do+                    when (not . isNegatableLiteral $ lit) (patFail $ prettyPrint e')+                    return (PLit l (Negative lSign) lit)     ExpTypeSig l e t -> do                   -- patterns cannot have signatures unless ScopedTypeVariables is enabled.                   checkEnabled ScopedTypeVariables@@ -392,10 +512,8 @@             rps <- mapM checkRPattern es             return (PXRPats l $ map fixRPOpPrec rps) -    -- Generics-    ExplTypeArg l qn t -> return $ PExplTypeArg l qn t--    -- QuasiQuotation+    -- Template Haskell+    SpliceExp l e -> return $ PSplice l e     QuasiQuote l n q -> return $ PQuasiQuote l n q      -- BangPatterns@@ -412,6 +530,14 @@  checkPat e _ = patFail $ prettyPrint e +isNegatableLiteral :: Literal a -> Bool+isNegatableLiteral (Int _ _ _) = True+isNegatableLiteral (Frac _ _ _) = True+isNegatableLiteral (PrimInt _ _ _) = True+isNegatableLiteral (PrimFloat _ _ _) = True+isNegatableLiteral (PrimDouble _ _ _) = True+isNegatableLiteral _ = False+ splitBang :: PExp L -> [PExp L] -> (PExp L, [PExp L]) splitBang (App _ f x) es = splitBang f (x:es) splitBang e es = (e, es)@@ -431,7 +557,7 @@ patFail s = fail $ "Parse error in pattern: " ++ s  checkRPattern :: PExp L -> P (RPat L)-checkRPattern e = case e of+checkRPattern e' = case e' of     SeqRP l es -> do         rps <- mapM checkRPattern es         return $ RPSeq l rps@@ -456,7 +582,7 @@         rp <- checkRPattern e         return $ RPParen l rp     _          -> do-        p <- checkPattern e+        p <- checkPattern e'         return $ RPPat (ann p) p  checkRPatOp :: QOp L -> P (RPatOp L)@@ -471,17 +597,18 @@      _    -> rpOpFail o checkRPatOp o = rpOpFail o +rpOpFail :: Pretty a => a -> P b rpOpFail sym = fail $ "Unrecognized regular pattern operator: " ++ prettyPrint sym  fixRPOpPrec :: RPat L -> RPat L-fixRPOpPrec rp = case rp of+fixRPOpPrec rp' = case rp' of     RPOp l rp rpop      -> fPrecOp rp (flip (RPOp l) rpop)     RPEither l rp1 rp2  -> RPEither l (fixRPOpPrec rp1) (fixRPOpPrec rp2)     RPSeq l rps         -> RPSeq l $ map fixRPOpPrec rps     RPCAs l n rp        -> RPCAs l n $ fixRPOpPrec rp     RPAs l n rp         -> RPAs l n $ fixRPOpPrec rp     RPParen l rp        -> RPParen l $ fixRPOpPrec rp-    _                   -> rp+    _                   -> rp'    where fPrecOp :: RPat L -> (RPat L -> RPat L) -> RPat L         fPrecOp (RPOp l rp rpop) f = fPrecOp rp (f . flip (RPOp l) rpop)@@ -495,7 +622,7 @@   mkChildrenPat :: [Pat L] -> [Pat L]-mkChildrenPat ps = mkCPAux ps []+mkChildrenPat ps' = mkCPAux ps' []   where mkCPAux :: [Pat L] -> [Pat L] -> [Pat L]         mkCPAux [] qs = reverse qs         mkCPAux (p:ps) qs = case p of@@ -512,55 +639,66 @@ -- Check Expression Syntax  checkExpr :: PExp L -> P (S.Exp L)-checkExpr e = case e of+checkExpr e' = case e' of     Var l v               -> return $ S.Var l v+    OverloadedLabel l v   -> return $ S.OverloadedLabel l v     IPVar l v             -> return $ S.IPVar l v     Con l c               -> return $ S.Con l c     Lit l lit             -> return $ S.Lit l lit     InfixApp l e1 op e2   -> check2Exprs e1 e2 (flip (S.InfixApp l) op)     App l e1 e2           -> check2Exprs e1 e2 (S.App l)+    NegApp _ (Lit _ (PrimWord _ _ _))+                          -> fail $ "Parse error: negative primitive word literal: " ++ prettyPrint e'     NegApp l e            -> check1Expr e (S.NegApp l)     Lambda loc ps e       -> check1Expr e (S.Lambda loc ps)     Let l bs e            -> check1Expr e (S.Let l bs)     If l e1 e2 e3         -> check3Exprs e1 e2 e3 (S.If l)+    MultiIf l alts        -> return (S.MultiIf l alts)     Case l e alts         -> do-                     e <- checkExpr e-                     return (S.Case l e alts)+                     e1 <- checkExpr e+                     return (S.Case l e1 alts)     Do l stmts            -> checkDo stmts >> return (S.Do l stmts)     MDo l stmts           -> checkDo stmts >> return (S.MDo l stmts)-    TupleSection l mes -> if not (any ((==) Nothing) mes)-                           then checkManyExprs (map fromJust mes) (S.Tuple l)-                           else do checkEnabled TupleSections-                                   mes' <- mapM mCheckExpr mes-                                   return $ S.TupleSection l mes'+    TupleSection l bx mes -> if Nothing `notElem` mes+                             then checkManyExprs (map fromJust mes) (S.Tuple l bx)+                             else do checkEnabled TupleSections+                                     mes' <- mapM mCheckExpr mes+                                     return $ S.TupleSection l bx mes'+    UnboxedSum l before after e -> S.UnboxedSum l before after <$> checkExpr e       List l es         -> checkManyExprs es (S.List l)+    ParArray l es     -> checkManyExprs es (S.ParArray l)     -- Since we don't parse things as left or right sections, we need to mangle them into that.     Paren l e         -> case e of                           PostOp _ e1 op -> check1Expr e1 (flip (S.LeftSection l) op)                           PreOp  _ op e2 -> check1Expr e2 (S.RightSection l op)                           _            -> check1Expr e (S.Paren l)     RecConstr l c fields      -> do-                     fields <- mapM checkField fields-                     return (S.RecConstr l c fields)+                     fields1 <- mapM checkField fields+                     return (S.RecConstr l c fields1)     RecUpdate l e fields      -> do-                     fields <- mapM checkField fields-                     e <- checkExpr e-                     return (S.RecUpdate l e fields)+                     fields1 <- mapM checkField fields+                     e1 <- checkExpr e+                     return (S.RecUpdate l e1 fields1)     EnumFrom l e          -> check1Expr e (S.EnumFrom l)     EnumFromTo l e1 e2    -> check2Exprs e1 e2 (S.EnumFromTo l)     EnumFromThen l e1 e2      -> check2Exprs e1 e2 (S.EnumFromThen l)     EnumFromThenTo l e1 e2 e3 -> check3Exprs e1 e2 e3 (S.EnumFromThenTo l)+    ParArrayFromTo l e1 e2    -> check2Exprs e1 e2 (S.ParArrayFromTo l)+    ParArrayFromThenTo l e1 e2 e3 -> check3Exprs e1 e2 e3 (S.ParArrayFromThenTo l)     -- a parallel list comprehension, which could be just a simple one     ParComp l e qualss        -> do-                     e <- checkExpr e+                     e1 <- checkExpr e                      case qualss of-                      [quals] -> return (S.ListComp l e quals)-                      _       -> return (S.ParComp l e qualss)+                      [quals] -> return (S.ListComp l e1 quals)+                      _       -> return (S.ParComp l e1 qualss)+    ParArrayComp l e qualss        -> do+                     e1 <- checkExpr e+                     return (S.ParArrayComp l e1 qualss)     ExpTypeSig loc e ty     -> do-                     e <- checkExpr e-                     return (S.ExpTypeSig loc e ty)+                     e1 <- checkExpr e+                     return (S.ExpTypeSig loc e1 ty)      --Template Haskell     BracketExp l e        -> return $ S.BracketExp l e@@ -570,20 +708,22 @@     QuasiQuote l n q      -> return $ S.QuasiQuote l n q      -- Hsx-    XTag l n attrs mattr cs -> do attrs <- mapM checkAttr attrs-                                  cs <- mapM checkExpr cs-                                  mattr <- maybe (return Nothing)+    XTag l n attrs mattr cs -> do attrs1 <- mapM checkAttr attrs+                                  cs1 <- mapM checkExpr cs+                                  mattr1 <- maybe (return Nothing)                                               (\e -> checkExpr e >>= return . Just)                                               mattr-                                  return $ S.XTag l n attrs mattr cs-    XETag l n attrs mattr   -> do attrs <- mapM checkAttr attrs-                                  mattr <- maybe (return Nothing)+                                  return $ S.XTag l n attrs1 mattr1 cs1+    XETag l n attrs mattr   -> do attrs1 <- mapM checkAttr attrs+                                  mattr1 <- maybe (return Nothing)                                               (\e -> checkExpr e >>= return . Just)                                               mattr-                                  return $ S.XETag l n attrs mattr+                                  return $ S.XETag l n attrs1 mattr1     XPcdata l p       -> return $ S.XPcdata l p-    XExpTag l e       -> do e <- checkExpr e-                            return $ S.XExpTag l e+    XExpTag l e       -> do e1 <- checkExpr e+                            return $ S.XExpTag l e1+    XChildTag l es    -> do es1 <- mapM checkExpr es+                            return $ S.XChildTag l es1     -- Pragmas     CorePragma l s e  -> check1Expr e (S.CorePragma l s)     SCCPragma  l s e  -> check1Expr e (S.SCCPragma l s)@@ -591,19 +731,27 @@ --    UnknownExpPragma n s -> return $ S.UnknownExpPragma n s      -- Arrows-    Proc l p e        -> do e <- checkExpr e-                            return $ S.Proc l p e+    Proc l p e              -> do e1 <- checkExpr e+                                  return $ S.Proc l p e1     LeftArrApp l e1 e2      -> check2Exprs e1 e2 (S.LeftArrApp l)     RightArrApp l e1 e2     -> check2Exprs e1 e2 (S.RightArrApp l)     LeftArrHighApp l e1 e2  -> check2Exprs e1 e2 (S.LeftArrHighApp l)     RightArrHighApp l e1 e2 -> check2Exprs e1 e2 (S.RightArrHighApp l)+    ArrOp l e               -> S.ArrOp l <$> checkExpr e -    _             -> fail $ "Parse error in expression: " ++ prettyPrint e+    -- LamdaCase+    LCase l alts -> return $ S.LCase l alts +    -- Hole+    TypeApp l ty   -> return $ S.TypeApp l ty++    _             -> fail $ "Parse error in expression: " ++ prettyPrint e'+ checkAttr :: ParseXAttr L -> P (S.XAttr L)-checkAttr (XAttr l n v) = do v <- checkExpr v-                             return $ S.XAttr l n v+checkAttr (XAttr l n v) = do v' <- checkExpr v+                             return $ S.XAttr l n v' +checkDo :: [Stmt t] -> P () checkDo [] = fail "Parse error: Last statement in a do-block must be an expression" checkDo [Qualifier _ _] = return () checkDo (_:xs) = checkDo xs@@ -611,26 +759,26 @@ -- type signature for polymorphic recursion!! check1Expr :: PExp L -> (S.Exp L -> a) -> P a check1Expr e1 f = do-    e1 <- checkExpr e1-    return (f e1)+    e1' <- checkExpr e1+    return (f e1')  check2Exprs :: PExp L -> PExp L -> (S.Exp L -> S.Exp L -> a) -> P a check2Exprs e1 e2 f = do-    e1 <- checkExpr e1-    e2 <- checkExpr e2-    return (f e1 e2)+    e1' <- checkExpr e1+    e2' <- checkExpr e2+    return (f e1' e2')  check3Exprs :: PExp L -> PExp L -> PExp L -> (S.Exp L -> S.Exp L -> S.Exp L -> a) -> P a check3Exprs e1 e2 e3 f = do-    e1 <- checkExpr e1-    e2 <- checkExpr e2-    e3 <- checkExpr e3-    return (f e1 e2 e3)+    e1' <- checkExpr e1+    e2' <- checkExpr e2+    e3' <- checkExpr e3+    return (f e1' e2' e3')  checkManyExprs :: [PExp L] -> ([S.Exp L] -> a) -> P a checkManyExprs es f = do-    es <- mapM checkExpr es-    return (f es)+    es' <- mapM checkExpr es+    return (f es')  mCheckExpr :: Maybe (PExp L) -> P (Maybe (S.Exp L)) mCheckExpr Nothing = return Nothing@@ -662,7 +810,7 @@ ----------------------------------------------------------------------------- -- Check Equation Syntax -checkValDef :: L -> PExp L -> Maybe (S.Type L) -> Rhs L -> Maybe (Binds L) -> P (Decl L)+checkValDef :: L -> PExp L -> Maybe (S.Type L, S) -> Rhs L -> Maybe (Binds L) -> P (Decl L) checkValDef l lhs optsig rhs whereBinds = do     mlhs <- isFunLhs lhs []     let whpt = srcInfoPoints l@@ -673,32 +821,40 @@             case optsig of -- only pattern bindings can have signatures                 Nothing -> return (FunBind l $                             if b then [Match l' f ps rhs whereBinds]-                                 else let (a:bs) = ps +                                 else let (a:bs) = ps                                        in [InfixMatch l' a f bs rhs whereBinds])                 Just _  -> fail "Cannot give an explicit type signature to a function binding"      Nothing     -> do-            lhs <- checkPattern lhs-            return (PatBind l lhs optsig rhs whereBinds)+            lhs1 <- checkPattern lhs+            let lhs' = case optsig of+                        Nothing -> lhs1+                        Just (ty, pt) -> let lp = (ann lhs1 <++> ann ty) <** [pt]+                                         in PatTypeSig lp lhs1 ty+            return (PatBind l lhs' rhs whereBinds)  -- A variable binding is parsed as a PatBind.  isFunLhs :: PExp L -> [PExp L] -> P (Maybe (Name L, [PExp L], Bool, [S]))-isFunLhs (InfixApp ll l (QVarOp loc (UnQual _ op)) r) es-    | op =~= (Symbol () "!") = do+isFunLhs (InfixApp _ l (QVarOp loc (UnQual _ op)) r) es+    | op =~= Symbol () "!" = do         exts <- getExtensions         if BangPatterns `elem` exts          then let (b,bs) = splitBang r []-               in isFunLhs l (BangPat loc b : bs ++ es)+                  loc' = combSpanInfo loc (ann b)+               in isFunLhs l (BangPat loc' b : bs ++ es)          else return $ Just (op, l:r:es, False, []) -- It's actually a definition of the operator !-    | otherwise = return $ Just (op, l:r:es, False, [])-isFunLhs (App _ (Var _ (UnQual _ f)) e) es = return $ Just (f, e:es, True, [])+    | otherwise =+        let infos = srcInfoPoints loc+            op'   = amap (\s -> s { srcInfoPoints = infos }) op+        in (return $ Just (op', l:r:es, False, []))+isFunLhs (App _ (Var l (UnQual _ f)) e) es = return $ Just (f, e:es, True, srcInfoPoints l) isFunLhs (App _ f e) es = isFunLhs f (e:es) isFunLhs (Var _ (UnQual _ f)) es@(_:_) = return $ Just (f, es, True, [])-isFunLhs (Paren l f) es@(_:_) = do mlhs <- isFunLhs f es +isFunLhs (Paren l f) es@(_:_) = do mlhs <- isFunLhs f es                                    case mlhs of-                                    Just (f,es,b,pts) -> +                                    Just (f',es',b,pts) ->                                        let [x,y] = srcInfoPoints l-                                        in return $ Just (f,es,b,x:pts++[y])+                                        in return $ Just (f',es',b,x:pts++[y])                                     _ -> return Nothing isFunLhs _ _ = return Nothing @@ -706,9 +862,22 @@ -- a post-processing step  checkSigVar :: PExp L -> P (Name L)-checkSigVar (Var _ (UnQual _ n)) = return n+checkSigVar (Var _ (UnQual l n)) = return $ fmap (const l) n checkSigVar e = fail $ "Left-hand side of type signature is not a variable: " ++ prettyPrint e +checkExplicitPatSyn :: S -> S -> ([Decl L], [S]) -> S -> P (PatternSynDirection L)+checkExplicitPatSyn whereLoc openLoc (decls, semis) closeLoc =+  let l = whereLoc <^^> closeLoc  <** ([whereLoc, openLoc] ++ semis ++ [closeLoc])+  in  S.ExplicitBidirectional l  <$> mapM checkDecls decls+  where+    checkDecls :: Decl L -> P (Decl L)+    checkDecls p@(PatBind _ pat _ _) =+      case pat of+        PApp _ _ _        -> return p+        PInfixApp _ _ _ _ ->  return p+        _ -> fail "Illegal pattern binding in PatternSynonym"+    checkDecls _                 = fail "pattern synonym 'where' clause must contain a PatBind"+ ----------------------------------------------------------------------------- -- In a class or instance body, a pattern binding must be of a variable. @@ -727,20 +896,33 @@         checkInstMethodDef _ = return ()  checkMethodDef :: Decl L -> P ()-checkMethodDef (PatBind _ (PVar _ _) _ _ _) = return ()-checkMethodDef (PatBind loc _ _ _ _) =-    fail "illegal method definition" -- `atSrcLoc` loc+checkMethodDef (PatBind _ (PVar _ _) _ _) = return ()+checkMethodDef (PatBind loc _ _ _) =+    fail "illegal method definition" `atSrcLoc` fromSrcInfo loc checkMethodDef _ = return () +checkDefSigDef :: Decl L -> P (Name L,S.Type L,S)+checkDefSigDef (TypeSig loc [name] typ) =+  let (b:_) = srcInfoPoints loc in return (name,typ,b)+checkDefSigDef (TypeSig _ _ _) =+    fail "default signature must be for a single name"+checkDefSigDef _ =+    fail "default signature must be a type signature"+ ----------------------------------------------------------------------------- -- Check that an identifier or symbol is unqualified. -- For occasions when doing this in the grammar would cause conflicts.  checkUnQual :: QName L -> P (Name L) checkUnQual (Qual  _ _ _) = fail "Illegal qualified name"-checkUnQual (UnQual  _ n) = return n+checkUnQual (UnQual  l n) = return $ fmap (const l) n checkUnQual (Special _ _) = fail "Illegal special name" +checkQualOrUnQual :: QName L -> P (QName L)+checkQualOrUnQual n@(Qual  _ _ _) = return n+checkQualOrUnQual n@(UnQual  _ _) = return n+checkQualOrUnQual (Special _ _)   = fail "Illegal special name"+ ----------------------------------------------------------------------------- -- Check that two xml tag names are equal checkEqNames :: XName L -> XName L -> P (XName L)@@ -751,8 +933,8 @@ checkEqNames n m = fail $ "opening tag '" ++ showTag n ++                    "' does not match closing tag '" ++ showTag m ++ "'"     where-        showTag (XName _ n) = n-        showTag (XDomName _ d n) = d ++ ":" ++ n+        showTag (XName _ n') = n'+        showTag (XDomName _ d n') = d ++ ":" ++ n'   -----------------------------------------------------------------------------@@ -760,14 +942,30 @@  checkPrec :: Integer -> P Int checkPrec i | 0 <= i && i <= 9 = return (fromInteger i)-checkPrec i | otherwise        = fail ("Illegal precedence " ++ show i)+            | otherwise        = fail ("Illegal precedence " ++ show i)  mkRecConstrOrUpdate :: PExp L -> [PFieldUpdate L] -> P (PExp L) mkRecConstrOrUpdate (Con l c) fs       = return (RecConstr l c fs) mkRecConstrOrUpdate e         fs@(_:_) = return (RecUpdate (ann e) e fs) mkRecConstrOrUpdate _         _        = fail "Empty record update" +updateQNameLoc :: l -> QName l -> QName l+updateQNameLoc l (Qual _ mn n) = Qual l mn n+updateQNameLoc l (UnQual _ n)  = UnQual l n+updateQNameLoc l (Special _ s) = Special l s+ -----------------------------------------------------------------------------+-- For standalone top level Decl parser, check that we actually only+-- parsed one Decl. This is needed since we parse matches of the same+-- FunBind as multiple separate declarations, and merge them after.+-- This should be called *after* checkRevDecls.++checkSingleDecl :: [Decl L] -> P (Decl L)+checkSingleDecl [d] = return d+checkSingleDecl ds =+    fail $ "Expected a single declaration, found " ++ show (length ds)++ -- Reverse a list of declarations, merging adjacent FunBinds of the -- same name and checking that their arities match. @@ -775,19 +973,20 @@ checkRevDecls = mergeFunBinds []     where     mergeFunBinds revDs [] = return revDs-    mergeFunBinds revDs (FunBind l ms1@(Match _ name ps _ _:_):ds1) =-        mergeMatches ms1 ds1 l+    mergeFunBinds revDs (FunBind l' ms1@(Match _ name ps _ _:_):ds1) =+        mergeMatches ms1 ds1 l'         where         arity = length ps         mergeMatches ms' (FunBind _ ms@(Match loc name' ps' _ _:_):ds) l-            | name' =~= name =-            if length ps' /= arity-            then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")-                    -- `atSrcLoc` loc-            else mergeMatches (ms++ms') ds (loc <++> l)+            | name' =~= name = do+            ignoreArity <- getIgnoreFunctionArity+            if length ps' == arity || ignoreArity+              then mergeMatches (ms++ms') ds (loc <++> l)+              else fail ("arity mismatch for '" ++ prettyPrint name ++ "'")+                    `atSrcLoc` fromSrcInfo loc         mergeMatches ms' ds l = mergeFunBinds (FunBind l ms':revDs) ds-    mergeFunBinds revDs (FunBind l ims1@(InfixMatch _ _ name _ _ _:_):ds1) =-        mergeInfix ims1 ds1 l+    mergeFunBinds revDs (FunBind l' ims1@(InfixMatch _ _ name _ _ _:_):ds1) =+        mergeInfix ims1 ds1 l'         where         mergeInfix ims' (FunBind _ ims@(InfixMatch loc _ name' _ _ _:_):ds) l             | name' =~= name =@@ -799,19 +998,20 @@ checkRevClsDecls = mergeClsFunBinds []     where     mergeClsFunBinds revDs [] = return revDs-    mergeClsFunBinds revDs (ClsDecl l (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =-        mergeMatches ms1 ds1 l+    mergeClsFunBinds revDs (ClsDecl l' (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =+        mergeMatches ms1 ds1 l'         where         arity = length ps         mergeMatches ms' (ClsDecl _ (FunBind _ ms@(Match loc name' ps' _ _:_)):ds) l-            | name' =~= name =-            if length ps' /= arity-            then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")-                    -- `atSrcLoc` loc-            else mergeMatches (ms++ms') ds (loc <++> l)+            | name' =~= name = do+            ignoreArity <- getIgnoreFunctionArity+            if length ps' == arity || ignoreArity+              then mergeMatches (ms++ms') ds (loc <++> l)+              else fail ("arity mismatch for '" ++ prettyPrint name ++ "'")+                    `atSrcLoc` fromSrcInfo loc         mergeMatches ms' ds l = mergeClsFunBinds (ClsDecl l (FunBind l ms'):revDs) ds-    mergeClsFunBinds revDs (ClsDecl l (FunBind _ ims1@(InfixMatch _ _ name _ _ _:_)):ds1) =-        mergeInfix ims1 ds1 l+    mergeClsFunBinds revDs (ClsDecl l' (FunBind _ ims1@(InfixMatch _ _ name _ _ _:_)):ds1) =+        mergeInfix ims1 ds1 l'         where         mergeInfix ims' (ClsDecl _ (FunBind _ ims@(InfixMatch loc _ name' _ _ _:_)):ds) l             | name' =~= name =@@ -824,19 +1024,20 @@     where     mergeInstFunBinds :: [InstDecl L] -> [InstDecl L] -> P [InstDecl L]     mergeInstFunBinds revDs [] = return revDs-    mergeInstFunBinds revDs (InsDecl l (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =-        mergeMatches ms1 ds1 l+    mergeInstFunBinds revDs (InsDecl l' (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =+        mergeMatches ms1 ds1 l'         where         arity = length ps         mergeMatches ms' (InsDecl _ (FunBind _ ms@(Match loc name' ps' _ _:_)):ds) l-            | name' =~= name =-            if length ps' /= arity-            then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")-                    -- `atSrcLoc` loc-            else mergeMatches (ms++ms') ds (loc <++> l)+            | name' =~= name = do+            ignoreArity <- getIgnoreFunctionArity+            if length ps' == arity || ignoreArity+              then mergeMatches (ms++ms') ds (loc <++> l)+              else fail ("arity mismatch for '" ++ prettyPrint name ++ "'")+                    `atSrcLoc` fromSrcInfo loc         mergeMatches ms' ds l = mergeInstFunBinds (InsDecl l (FunBind l ms'):revDs) ds-    mergeInstFunBinds revDs (InsDecl l (FunBind _ ims1@(InfixMatch _ _ name _ _ _:_)):ds1) =-        mergeInfix ims1 ds1 l+    mergeInstFunBinds revDs (InsDecl l' (FunBind _ ims1@(InfixMatch _ _ name _ _ _:_)):ds1) =+        mergeInfix ims1 ds1 l'         where         mergeInfix ims' (InsDecl _ (FunBind _ ims@(InfixMatch loc _ name' _ _ _:_)):ds) l             | name' =~= name =@@ -848,47 +1049,83 @@ -- Check that newtype declarations have -- the right number (1) of constructors -checkDataOrNew :: DataOrNew L -> [a] -> P ()-checkDataOrNew (NewType _) [x] = return ()+checkDataOrNew :: DataOrNew L -> [QualConDecl L] -> P () checkDataOrNew (DataType _) _  = return ()+checkDataOrNew (NewType _) [QualConDecl _ _ _ x] = cX x >> return ()+  where cX (ConDecl _ _ [_]) = return ()+        cX (RecDecl _ _ [_]) = return ()+        cX _ = fail "newtype declaration constructor must have exactly one parameter." checkDataOrNew _        _  = fail "newtype declaration must have exactly one constructor." +checkDataOrNewG :: DataOrNew L -> [GadtDecl L] -> P ()+checkDataOrNewG (DataType _) _  = return ()+checkDataOrNewG (NewType _) [_] = return ()+checkDataOrNewG _        _  = fail "newtype declaration must have exactly one constructor."+ checkSimpleType :: PType L -> P (DeclHead L)-checkSimpleType t = checkSimple "test" t []+checkSimpleType = checkSimple "test"  --------------------------------------- -- Check actual types +-- | Add a strictness/unpack annotation on a type.+bangType :: Maybe (L -> BangType L, S) -> Maybe (Unpackedness L) -> PType L -> PType L+bangType mstrict munpack ty =+  case (mstrict,munpack) of+    (Nothing, Just upack) -> TyBang (ann upack <++> ann ty) (NoStrictAnnot noSrcSpan) upack ty+    (Just (strict, pos), _)  ->+      TyBang (fmap ann munpack <?+> noInfoSpan pos <++> ann ty) (strict (noInfoSpan pos))+        (fromMaybe (NoUnpackPragma noSrcSpan) munpack) ty+    (Nothing, Nothing) -> ty++ checkType :: PType L -> P (S.Type L) checkType t = checkT t False  checkT :: PType L -> Bool -> P (S.Type L) checkT t simple = case t of-    TyForall l tvs@Nothing cs pt    -> do-            when (simple) $ checkEnabled ExplicitForall+    TyForall l Nothing cs pt    -> do+            when simple $ checkEnabled ExplicitForAll             ctxt <- checkContext cs             check1Type pt (S.TyForall l Nothing ctxt)     TyForall l tvs cs pt -> do-            checkEnabled ExplicitForall+            checkEnabled ExplicitForAll             ctxt <- checkContext cs             check1Type pt (S.TyForall l tvs ctxt)+    TyStar  l         -> return $ S.TyStar l     TyFun   l at rt   -> check2Types at rt (S.TyFun l)     TyTuple l b pts   -> checkTypes pts >>= return . S.TyTuple l b+    TyUnboxedSum l es -> checkTypes es >>= return . S.TyUnboxedSum l     TyList  l pt      -> check1Type pt (S.TyList l)+    TyParArray l pt   -> check1Type pt (S.TyParArray l)     TyApp   l ft at   -> check2Types ft at (S.TyApp l)     TyVar   l n       -> return $ S.TyVar l n     TyCon   l n       -> do-            when (isSymbol n) $ checkEnabled TypeOperators+            checkAndWarnTypeOperators n             return $ S.TyCon l n     TyParen l pt      -> check1Type pt (S.TyParen l)     -- Here we know that t will be used as an actual type (and not a data constructor)     -- so we can check that TypeOperators are enabled.-    TyInfix l at op bt -> checkEnabled TypeOperators >> check2Types at bt (flip (S.TyInfix l) op)+    TyInfix l at op bt -> checkAndWarnTypeOperators (getMaybePromotedQName op)+                           >> check2Types at bt (flip (S.TyInfix l) op)     TyKind  l pt k    -> check1Type pt (flip (S.TyKind l) k) -    -- TyPred  cannot be a valid type+    TyPromoted l p -> return $ S.TyPromoted l p -- ??+    TyEquals l at bt   -> check2Types at bt (S.TyEquals l)+    TySplice l s        -> do+                              checkEnabled TemplateHaskell+                              return $ S.TySplice l s+    TyBang l b u t' -> check1Type t' (S.TyBang l b u)+    TyWildCard l mn -> return $ S.TyWildCard l mn+    TyQuasiQuote l n s -> do+                              checkEnabled QuasiQuotes+                              return $ S.TyQuasiQuote l n s     _   -> fail $ "Parse error in type: " ++ prettyPrint t +getMaybePromotedQName :: MaybePromotedName l -> QName l+getMaybePromotedQName (PromotedName _ q) = q+getMaybePromotedQName (UnpromotedName _ q) = q+ check1Type :: PType L -> (S.Type L -> S.Type L) -> P (S.Type L) check1Type pt f = checkT pt True >>= return . f @@ -898,36 +1135,177 @@ checkTypes :: [PType L] -> P [S.Type L] checkTypes = mapM (flip checkT True) +checkTyVar ::  Name L -> P (PType L)+checkTyVar n = do+  e <- getExtensions+  return $+    case n of+      Ident il ('_':ident) | NamedWildCards `elem` e ->+        TyWildCard il (Just (Ident (reduceSrcSpanInfo il) ident))+      _ ->+        TyVar (ann n) n+  where+    -- Reduces the length of the SrcSpanInfo by 1 so that it just covers the identifier.+    reduceSrcSpanInfo spaninfo =+      let ss = srcInfoSpan spaninfo+          ss' = ss { srcSpanStartColumn = srcSpanStartColumn ss + 1 }+      in  spaninfo { srcInfoSpan = ss' } ---------------------------------------+-- Check kinds++-- ConstraintKinds allow the kind "Constraint", but not "Nat", etc. Specifically+-- test for that.+checkKind :: Kind l -> P ()+checkKind k = case k of+        S.TyVar _ q | constrKind q -> checkEnabledOneOf [ConstraintKinds, DataKinds]+            where constrKind name = case name of+                    Ident _ n -> n == "Constraint"+                    _                      -> False++        _ -> checkEnabled DataKinds++--------------------------------------- -- Converting a complete page  checkPageModule :: PExp L -> ([ModulePragma L],[S],L) -> P (Module L) checkPageModule xml (os,ss,inf) = do     mod <- getModuleName-    xml <- checkExpr xml-    case xml of+    xml' <- checkExpr xml+    case xml' of         S.XTag  l xn ats mattr cs -> return $ XmlPage (inf<++>l<**(srcInfoPoints l ++ ss)) (ModuleName l mod) os xn ats mattr cs         S.XETag l xn ats mattr    -> return $ XmlPage (inf<++>l<**(srcInfoPoints l ++ ss)) (ModuleName l mod) os xn ats mattr []+        _ -> fail "Unexpected expression; tag is expected"  checkHybridModule :: PExp L -> Module L -> S -> S -> P (Module L) checkHybridModule xml (Module inf mh os is ds) s1 s2 = do-    xml <- checkExpr xml-    case xml of+    xml' <- checkExpr xml+    case xml' of         S.XTag  l xn ats mattr cs -> return $ XmlHybrid (inf<++>l<**(s1 : srcInfoPoints inf ++ s2 : srcInfoPoints l))                                                 mh os is ds xn ats mattr cs         S.XETag l xn ats mattr    -> return $ XmlHybrid (inf<++>l<**(s1 : srcInfoPoints inf ++ s2 : srcInfoPoints l))                                                 mh os is ds xn ats mattr []+        _ -> fail "Unexpected expression; tag is expected"+checkHybridModule _ _ _ _ = fail "Hybrid module expected"  --------------------------------------- -- Handle dash-identifiers  mkDVar :: [String] -> String-mkDVar = concat . intersperse "-"+mkDVar = intercalate "-"  ------------------------------------------ Combine adjacent for-alls. NO!+-- Combine adjacent for-alls. -- -- A valid type must have one for-all at the top of the type, or of the fn arg types  mkTyForall :: L -> Maybe [TyVarBind L] -> Maybe (PContext L) -> PType L -> PType L-mkTyForall l mtvs ctxt ty = TyForall l mtvs ctxt ty+mkTyForall l mtvs ctxt ty =+    case (ctxt, ty) of+        (Nothing, TyForall _ Nothing ctxt2 ty2) -> TyForall l mtvs ctxt2 ty2+        _                                       -> TyForall l mtvs ctxt ty++-- Make a role annotation++mkRoleAnnotDecl ::  S -> S -> QName L -> [(Maybe String, L)] -> P (Decl L)+mkRoleAnnotDecl l1 l2 tycon roles+  = do roles' <- mapM parse_role roles+       return (RoleAnnotDecl loc' tycon roles')+  where+    loc' =+      case roles of+        [] -> (l1 <^^> l2 <++> ann tycon) <** [l1, l2]+        _  -> (l1 <^^> l2 <++> ann tycon <++> foldl1 (<++>) (map snd roles)) <** [l1, l2]+    possible_roles = [ ("phantom", S.Phantom)+                     , ("representational", S.Representational)+                     , ("nominal", S.Nominal)]++    parse_role (Nothing, loc_role) = return $ S.RoleWildcard loc_role+    parse_role (Just role, loc_role)+      = case lookup role possible_roles of+          Just found_role -> return $ found_role loc_role+          Nothing         ->+            fail ("Illegal role name " ++ role)+++++mkAssocType :: S -> PType L -> (Maybe (ResultSig L), Maybe (S, S.Type L), Maybe (InjectivityInfo L)) -> P (ClassDecl L)+mkAssocType tyloc ty (mres, mty, minj)  =+  case (mres,mty, minj) of+    -- No additional information+    (Nothing, Nothing, Nothing) -> do+      dh <- checkSimpleType ty+      return $ ClsTyFam (noInfoSpan tyloc <++> ann ty) dh Nothing Nothing+    -- Type default+    (_, Just (eqloc, rhsty), Nothing) -> do+      ty' <- checkType ty+      let tyeq = TypeEqn (ann ty <++> ann rhsty <** [eqloc]) ty' rhsty+      return $ ClsTyDef (noInfoSpan tyloc <++> ann ty <** [tyloc]) tyeq+    -- Declaration with kind sig+    (Just ressig, _, _) -> do+      dh <- checkSimpleType ty+      return $ ClsTyFam (noInfoSpan tyloc <++> ann ressig <** [tyloc]) dh (Just ressig) Nothing+    -- Decl with inj info+    (Nothing, Just (eqloc, rhsty), Just injinfo) -> do+      ressig <- checkKTyVar eqloc rhsty+      dh <- checkSimpleType ty+      return $ ClsTyFam (noInfoSpan tyloc <++> ann injinfo <** [tyloc]) dh (Just ressig) minj+    _ -> error "mkAssocType"++  where+    checkKTyVar :: S -> S.Type L -> P (ResultSig L)+    checkKTyVar eqloc rhsty =+      case rhsty of+       S.TyVar l n -> return $ TyVarSig (noInfoSpan eqloc <++> l <** [eqloc]) (UnkindedVar l n)+       S.TyKind l (S.TyVar _ n) k -> return $ TyVarSig (noInfoSpan eqloc <++> l <** [eqloc]) (KindedVar l n k)+       _ -> fail ("Result of type family must be a type variable")++-- | Transform btype with strict_mark's into HsEqTy's+-- (((~a) ~b) c) ~d ==> ((~a) ~ (b c)) ~ d+splitTilde :: PType L -> PType L+splitTilde t = go t+  where go (TyApp loc t1 t2)+          | TyBang _ (LazyTy eqloc) (NoUnpackPragma _) t2' <- t2+          = TyEquals (loc <** [srcInfoSpan eqloc]) (go t1) t2'+          | otherwise+          = case go t1 of+              TyEquals eqloc tl tr ->+                TyEquals (eqloc <++> ann t2 <** srcInfoPoints eqloc) tl (TyApp (ann tr <++> ann t2) tr t2)+              t' -> TyApp loc t' t2++        go t' = t'++-- Expects the arguments in the right order+mkEThingWith :: L -> QName L -> [Either S (CName L)] -> P (ExportSpec L)+mkEThingWith loc qn mcns = do+  when (isWc wc && not (null cnames)) (checkEnabled PatternSynonyms)+  return $ EThingWith loc wc qn cnames+  where+    isWc (NoWildcard {}) = False+    isWc _ = True++    wc :: EWildcard L+    wc = maybe (NoWildcard noSrcSpan)+               (\(n,Left s) -> EWildcard (noInfoSpan s) n)+               (findWithIndex 0 checkLeft mcns)++    checkLeft :: Either a b -> Bool+    checkLeft (Left _) = True+    checkLeft _ = False++    cnames = rights mcns++    findWithIndex :: Int -> (a -> Bool) -> [a] -> Maybe (Int, a)+    findWithIndex _ _ [] = Nothing+    findWithIndex n p (x:xs)+      | p x = Just (n, x)+      | otherwise = findWithIndex (n + 1) p xs++data SumOrTuple l = SSum Int Int (PExp l)+                  | STuple [Maybe (PExp l)]++mkSumOrTuple :: Boxed -> L -> SumOrTuple L -> P (PExp L)+mkSumOrTuple Unboxed s (SSum before after e) = return (UnboxedSum s before after e)+mkSumOrTuple boxity s (STuple ms) =+    return $ TupleSection s boxity ms+mkSumOrTuple Boxed _s (SSum {}) = fail "Boxed sums are not implemented"
src/Language/Haskell/Exts/Parser.hs view
@@ -1,174 +1,259 @@-module Language.Haskell.Exts.Parser
-            (
-                -- * General parsing
-                Parseable(..),
-                ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult,
-                -- * Parsing of specific AST elements
-                -- ** Modules
-                parseModule, parseModuleWithMode, parseModuleWithComments,
-                -- ** Expressions
-                parseExp, parseExpWithMode, parseExpWithComments,
-                -- ** Statements
-                parseStmt, parseStmtWithMode, parseStmtWithComments,
-                -- ** Patterns
-                parsePat, parsePatWithMode, parsePatWithComments,
-                -- ** Declarations
-                parseDecl, parseDeclWithMode, parseDeclWithComments,
-                -- ** Types
-                parseType, parseTypeWithMode, parseTypeWithComments,
-                -- ** Option pragmas
-                getTopPragmas
-            ) where
-
-
-import Language.Haskell.Exts.InternalParser ( ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult )
-import qualified Language.Haskell.Exts.InternalParser as P
-
-import Language.Haskell.Exts.Annotated.Syntax
-import qualified Language.Haskell.Exts.Syntax as S
-import Language.Haskell.Exts.Annotated.Simplify
-
-import Language.Haskell.Exts.SrcLoc
-import Language.Haskell.Exts.Comments
-
-getTopPragmas :: String -> ParseResult [S.ModulePragma]
-getTopPragmas = fmap (map sModulePragma) . P.getTopPragmas
-
--- | Class to reuse the parse function at many different types.
-class Parseable ast where
-  -- | Parse a string with default mode.
-  parse :: String -> ParseResult ast
-  -- | Parse a string with an explicit mode.
-  parseWithMode :: ParseMode -> String -> ParseResult ast
-  -- | Parse a string with an explicit mode, returning all comments along the AST
-  parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment])
-
-
-instance SrcInfo loc => Parseable (Module loc) where
-  parse = fmap (fmap fromSrcInfo) . P.parseModule
-  parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseModuleWithMode
-  parseWithComments md s = P.parseModuleWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)
-
-instance SrcInfo loc => Parseable (Exp loc) where
-  parse = fmap (fmap fromSrcInfo) . P.parseExp
-  parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseExpWithMode
-  parseWithComments md s = P.parseExpWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)
-
-instance SrcInfo loc => Parseable (Pat loc) where
-  parse = fmap (fmap fromSrcInfo) . P.parsePat
-  parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parsePatWithMode
-  parseWithComments md s = P.parsePatWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)
-
-instance SrcInfo loc => Parseable (Decl loc) where
-  parse = fmap (fmap fromSrcInfo) . P.parseDecl
-  parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseDeclWithMode
-  parseWithComments md s = P.parseDeclWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)
-
-instance SrcInfo loc => Parseable (Type loc) where
-  parse = fmap (fmap fromSrcInfo) . P.parseType
-  parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseTypeWithMode
-  parseWithComments md s = P.parseTypeWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)
-
-instance SrcInfo loc => Parseable (Stmt loc) where
-  parse = fmap (fmap fromSrcInfo) . P.parseStmt
-  parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseStmtWithMode
-  parseWithComments md s = P.parseStmtWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)
-
-
--- | Parse of a string, which should contain a complete Haskell module.
-parseModule :: String -> ParseResult S.Module
-parseModule = fmap sModule . P.parseModule
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode.
-parseModuleWithMode :: ParseMode -> String -> ParseResult S.Module
-parseModuleWithMode = (fmap sModule .) . P.parseModuleWithMode
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseModuleWithComments :: ParseMode -> String -> ParseResult (S.Module, [Comment])
-parseModuleWithComments = (fmap (\(mod, cs) -> (sModule mod, cs)) .) . P.parseModuleWithComments
-
--- | Parse of a string containing a Haskell expression.
-parseExp :: String -> ParseResult S.Exp
-parseExp = fmap sExp . P.parseExp
-
--- | Parse of a string containing a Haskell expression, using an explicit mode.
-parseExpWithMode :: ParseMode -> String -> ParseResult S.Exp
-parseExpWithMode = (fmap sExp .) . P.parseExpWithMode
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseExpWithComments :: ParseMode -> String -> ParseResult (S.Exp, [Comment])
-parseExpWithComments = (fmap (\(e, cs) -> (sExp e, cs)) .) . P.parseExpWithComments
-
--- | Parse of a string containing a Haskell pattern.
-parsePat :: String -> ParseResult S.Pat
-parsePat = fmap sPat . P.parsePat
-
--- | Parse of a string containing a Haskell pattern, using an explicit mode.
-parsePatWithMode :: ParseMode -> String -> ParseResult S.Pat
-parsePatWithMode = (fmap sPat .) . P.parsePatWithMode
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parsePatWithComments :: ParseMode -> String -> ParseResult (S.Pat, [Comment])
-parsePatWithComments = (fmap (\(p, cs) -> (sPat p, cs)) .) . P.parsePatWithComments
-
--- | Parse of a string containing a Haskell top-level declaration.
-parseDecl :: String -> ParseResult S.Decl
-parseDecl = fmap sDecl . P.parseDecl
-
--- | Parse of a string containing a Haskell top-level declaration, using an explicit mode.
-parseDeclWithMode :: ParseMode -> String -> ParseResult S.Decl
-parseDeclWithMode = (fmap sDecl .) . P.parseDeclWithMode
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseDeclWithComments :: ParseMode -> String -> ParseResult (S.Decl, [Comment])
-parseDeclWithComments = (fmap (\(decl, cs) -> (sDecl decl, cs)) .) . P.parseDeclWithComments
-
--- | Parse of a string containing a Haskell type.
-parseType :: String -> ParseResult S.Type
-parseType = fmap sType . P.parseType
-
--- | Parse of a string containing a Haskell type, using an explicit mode.
-parseTypeWithMode :: ParseMode -> String -> ParseResult S.Type
-parseTypeWithMode = (fmap sType .) . P.parseTypeWithMode
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseTypeWithComments :: ParseMode -> String -> ParseResult (S.Type, [Comment])
-parseTypeWithComments = (fmap (\(t, cs) -> (sType t, cs)) .) . P.parseTypeWithComments
-
--- | Parse of a string containing a Haskell type.
-parseStmt :: String -> ParseResult S.Stmt
-parseStmt = fmap sStmt . P.parseStmt
-
--- | Parse of a string containing a Haskell type, using an explicit mode.
-parseStmtWithMode :: ParseMode -> String -> ParseResult S.Stmt
-parseStmtWithMode = (fmap sStmt .) . P.parseStmtWithMode
-
--- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.
-parseStmtWithComments :: ParseMode -> String -> ParseResult (S.Stmt, [Comment])
-parseStmtWithComments = (fmap (\(s, cs) -> (sStmt s, cs)) .) . P.parseStmtWithComments
-
-
-instance Parseable S.Module where
-  parse = parseModule
-  parseWithMode = parseModuleWithMode
-  parseWithComments = parseModuleWithComments
-
-instance Parseable S.Exp where
-  parse = parseExp
-  parseWithMode = parseExpWithMode
-  parseWithComments = parseExpWithComments
-
-instance Parseable S.Pat where
-  parse = parsePat
-  parseWithMode = parsePatWithMode
-  parseWithComments = parsePatWithComments
-
-instance Parseable S.Decl where
-  parse = parseDecl
-  parseWithMode = parseDeclWithMode
-  parseWithComments = parseDeclWithComments
-
-instance Parseable S.Type where
-  parse = parseType
-  parseWithMode = parseTypeWithMode
-  parseWithComments = parseTypeWithComments
+{-# LANGUAGE CPP, DeriveDataTypeable, FlexibleInstances, DeriveFunctor #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.Annotated.Parser+-- Copyright   :  (c) Niklas Broberg 2004-2009+--                (c) Michael Sloan 2013+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+-- Stability   :  stable+-- Portability :  portable+--+-- Annotated parser for Haskell with extensions.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.Parser+    (+    -- * General parsing+      Parseable(parse, parseWithMode, parseWithComments)+    , ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult+    -- * Parsing of specific AST elements+    -- ** Modules+    , parseModule, parseModuleWithMode, parseModuleWithComments+    -- ** Expressions+    , parseExp, parseExpWithMode, parseExpWithComments+    -- ** Statements+    , parseStmt, parseStmtWithMode, parseStmtWithComments+    -- ** Patterns+    , parsePat, parsePatWithMode, parsePatWithComments+    -- ** Declarations+    , parseDecl, parseDeclWithMode, parseDeclWithComments+    -- ** Types+    , parseType, parseTypeWithMode, parseTypeWithComments+    -- ** Imports+    , parseImportDecl, parseImportDeclWithMode, parseImportDeclWithComments+    -- * Non-greedy parsers+    , NonGreedy(..)+    , ListOf(..), unListOf+    -- ** Module head parsers+    , getTopPragmas+    , PragmasAndModuleName(..)+    , PragmasAndModuleHead(..)+    , ModuleHeadAndImports(..)+    ) where++import Data.Data hiding (Fixity)+import Language.Haskell.Exts.Fixity+import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.Comments+import Language.Haskell.Exts.InternalParser+import Language.Haskell.Exts.ParseMonad+import Language.Haskell.Exts.SrcLoc++instance Parseable (Decl   SrcSpanInfo) where parser = normalParser mparseDecl+instance Parseable (Exp    SrcSpanInfo) where parser = normalParser mparseExp+instance Parseable (Module SrcSpanInfo) where parser = normalParser mparseModule+instance Parseable (Pat    SrcSpanInfo) where parser = normalParser mparsePat+instance Parseable (Stmt   SrcSpanInfo) where parser = normalParser mparseStmt+instance Parseable (Type   SrcSpanInfo) where parser = normalParserNoFixity mparseType+instance Parseable (ImportDecl SrcSpanInfo) where parser = normalParserNoFixity mparseImportDecl++normalParser :: AppFixity a => P (a SrcSpanInfo) -> Maybe [Fixity] -> P (a SrcSpanInfo)+normalParser p Nothing = p+normalParser p (Just fixs) = p >>= \ast -> applyFixities fixs ast `atSrcLoc` noLoc++normalParserNoFixity :: P (a SrcSpanInfo) -> Maybe [Fixity] -> P (a SrcSpanInfo)+normalParserNoFixity p _ = p++-- Type-specific functions++-- | Parse of a string, which should contain a complete Haskell module, using 'defaultParseMode'.+parseModule :: String -> ParseResult (Module SrcSpanInfo)+parseModule = parse++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode'.+parseModuleWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)+parseModuleWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseModuleWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])+parseModuleWithComments = parseWithComments++-- | Parse of a string containing a Haskell expression, using 'defaultParseMode'.+parseExp :: String -> ParseResult (Exp SrcSpanInfo)+parseExp = parse++-- | Parse of a string containing a Haskell expression, using an explicit 'ParseMode'.+parseExpWithMode :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo)+parseExpWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseExpWithComments :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo, [Comment])+parseExpWithComments = parseWithComments++-- | Parse of a string containing a Haskell pattern, using 'defaultParseMode'.+parsePat :: String -> ParseResult (Pat SrcSpanInfo)+parsePat = parse++-- | Parse of a string containing a Haskell pattern, using an explicit 'ParseMode'.+parsePatWithMode :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo)+parsePatWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parsePatWithComments :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo, [Comment])+parsePatWithComments = parseWithComments++-- | Parse of a string containing a Haskell top-level declaration, using 'defaultParseMode'.+parseDecl :: String -> ParseResult (Decl SrcSpanInfo)+parseDecl = parse++-- | Parse of a string containing a Haskell top-level declaration, using an explicit 'ParseMode'.+parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo)+parseDeclWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo, [Comment])+parseDeclWithComments = parseWithComments++-- | Parse of a string containing a Haskell type, using 'defaultParseMode'.+parseType :: String -> ParseResult (Type SrcSpanInfo)+parseType = parse++-- | Parse of a string containing a Haskell type, using an explicit 'ParseMode'.+parseTypeWithMode :: ParseMode -> String -> ParseResult (Type SrcSpanInfo)+parseTypeWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseTypeWithComments :: ParseMode -> String -> ParseResult (Type SrcSpanInfo, [Comment])+parseTypeWithComments = parseWithComments++-- | Parse of a string containing a Haskell statement, using 'defaultParseMode'.+parseStmt :: String -> ParseResult (Stmt SrcSpanInfo)+parseStmt = parse++-- | Parse of a string containing a Haskell type, using an explicit 'ParseMode'.+parseStmtWithMode :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo)+parseStmtWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseStmtWithComments :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo, [Comment])+parseStmtWithComments = parseWithComments++-- | Parse of a string containing a Haskell statement, using 'defaultParseMode'.+parseImportDecl :: String -> ParseResult (ImportDecl SrcSpanInfo)+parseImportDecl = parse++-- | Parse of a string containing a Haskell type, using an explicit 'ParseMode'.+parseImportDeclWithMode :: ParseMode -> String -> ParseResult (ImportDecl SrcSpanInfo)+parseImportDeclWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseImportDeclWithComments :: ParseMode -> String -> ParseResult (ImportDecl SrcSpanInfo, [Comment])+parseImportDeclWithComments = parseWithComments++-- Non-greedy parsers (should use ng- prefixed parses exported by InternalParser)++-- | Non-greedy parse of a string starting with a series of top-level option pragmas.+getTopPragmas :: String -> ParseResult [ModulePragma SrcSpanInfo]+getTopPragmas = fmap (unListOf . unNonGreedy) . parse++instance Parseable (NonGreedy (ListOf (ModulePragma SrcSpanInfo))) where+  parser = nglistParserNoFixity ngparseModulePragmas++nglistParserNoFixity :: P ([a SrcSpanInfo], [SrcSpan], SrcSpanInfo) -> Maybe [Fixity] -> P (NonGreedy (ListOf (a SrcSpanInfo)))+nglistParserNoFixity f = fmap (NonGreedy . toListOf) . normalParserNoFixity f++-- | Type intended to be used with 'Parseable', with instances that implement a+--   non-greedy parse of the module name, including top-level pragmas.  This+--   means that a parse error that comes after the module header won't be+--   returned. If the 'Maybe' value is 'Nothing', then this means that there was+--   no module header.+data PragmasAndModuleName l = PragmasAndModuleName l+    [ModulePragma l]+    (Maybe (ModuleName l))+  deriving (Eq,Ord,Show,Typeable,Data)++instance Parseable (NonGreedy (PragmasAndModuleName SrcSpanInfo)) where+    parser _ = do+        ((pragmas, pss, pl), mn) <- ngparsePragmasAndModuleName+        let l = combSpanMaybe (pl <** pss) (fmap ann mn)+        return $ NonGreedy $ PragmasAndModuleName l pragmas mn++--   Type intended to be used with 'Parseable', with instances that+--   implement a non-greedy parse of the module name, including+--   top-level pragmas.  This means that a parse error that comes+--   after the module header won't be returned. If the 'Maybe' value+--   is 'Nothing', this means that there was no module head.+--+--   Note that the 'ParseMode' matters for this due to the 'MagicHash'+--   changing the lexing of identifiers to include \"#\".+data PragmasAndModuleHead l = PragmasAndModuleHead l+    [ModulePragma l]+    (Maybe (ModuleHead l))+  deriving (Eq,Ord,Show,Typeable,Data)++instance Parseable (NonGreedy (PragmasAndModuleHead SrcSpanInfo)) where+    parser _ = do+        ((pragmas, pss, pl), mh) <- ngparsePragmasAndModuleHead+        let l = combSpanMaybe (pl <** pss) (fmap ann mh)+        return $ NonGreedy $ PragmasAndModuleHead l pragmas mh++--   Type intended to be used with 'Parseable', with instances that+--   implement a non-greedy parse of the module head, including+--   top-level pragmas, module name, export list, and import+--   list. This means that if a parse error that comes after the+--   imports won't be returned.  If the 'Maybe' value is 'Nothing',+--   this means that there was no module head.+--+--   Note that the 'ParseMode' matters for this due to the 'MagicHash'+--   changing the lexing of identifiers to include \"#\".+data ModuleHeadAndImports l = ModuleHeadAndImports l+    [ModulePragma l]+    (Maybe (ModuleHead l))+    [ImportDecl l]+  deriving (Eq,Ord,Show,Typeable,Data)++instance Parseable (NonGreedy (ModuleHeadAndImports SrcSpanInfo)) where+    parser _ = do+        ((pragmas, pss, pl), mh, mimps) <- ngparseModuleHeadAndImports+        let l = (pl <** pss) `combSpanMaybe`+                (fmap ann mh) `combSpanMaybe`+                (fmap (\(_, iss, il) -> il <** iss) mimps)+            imps = maybe [] (\(x, _, _) -> x) mimps+        return $ NonGreedy $ ModuleHeadAndImports l pragmas mh imps++-- | Instances of 'Parseable' for @NonGreedy a@ will only consume the input+--   until @a@ is fully parsed.  This means that parse errors that come later+--   in the input will be ignored.  It's also more efficient, as it's fully lazy+--   in the remainder of the input:+--+--   >>> parse (unlines ("module A where" : "main =" : repeat "blah")) :: ParseResult PragmasAndModuleHead+--   ParseOk (NonGreedy {unNonGreedy = PragmasAndModuleHead [] (ModuleName "A",Nothing,Nothing)})+--+--   (this example uses the simplified AST)+newtype NonGreedy a = NonGreedy { unNonGreedy :: a }+  deriving (Eq,Ord,Show,Typeable,Data)++instance Functor NonGreedy where+    fmap f (NonGreedy x) = NonGreedy (f x)++-- | @ListOf a@ stores lists of the AST type @a@, along with a 'SrcSpanInfo',+--   in order to provide 'Parseable' instances for lists.  These instances are+--   provided when the type is used as a list in the syntax, and the same+--   delimiters are used in all of its usages. Some exceptions are made:+data ListOf a = ListOf SrcSpanInfo [a]+  deriving (Eq,Ord,Show,Typeable,Data,Functor)++unListOf :: ListOf a -> [a]+unListOf (ListOf _ xs) = xs++-- It's safe to forget about the previous SrcSpanInfo 'srcInfoPoints',+-- as long as they are created with (presently) are all created with+-- 'noInfoSpan' ('nIS'), '(<^^>)', or '(<++>)', all of which have+-- empty 'srcInfoPoints'. Ideally, the parsers would return better+-- types, but this works.+toListOf :: ([a], [SrcSpan], SrcSpanInfo) -> ListOf a+toListOf (xs, ss, l) = ListOf (infoSpan (srcInfoSpan l) ss) xs
src/Language/Haskell/Exts/Pretty.hs view
@@ -1,1644 +1,1717 @@--------------------------------------------------------------------------------- |--- Module      :  Language.Haskell.Exts.Pretty--- Copyright   :  (c) Niklas Broberg 2004-2009,---                (c) The GHC Team, Noel Winstanley 1997-2000--- License     :  BSD-style (see the file LICENSE.txt)------ Maintainer  :  Niklas Broberg, d00nibro@chalmers.se--- Stability   :  stable--- Portability :  portable------ Pretty printer for Haskell with extensions.-----------------------------------------------------------------------------------module Language.Haskell.Exts.Pretty (-                -- * Pretty printing-                Pretty,-                prettyPrintStyleMode, prettyPrintWithMode, prettyPrint,-                -- * Pretty-printing styles (from "Text.PrettyPrint.HughesPJ")-                P.Style(..), P.style, P.Mode(..),-                -- * Haskell formatting modes-                PPHsMode(..), Indent, PPLayout(..), defaultMode) where--import Language.Haskell.Exts.Syntax-import qualified Language.Haskell.Exts.Annotated.Syntax as A-import Language.Haskell.Exts.Annotated.Simplify-import qualified Language.Haskell.Exts.ParseSyntax as P--import Language.Haskell.Exts.SrcLoc--import qualified Text.PrettyPrint as P-import Data.List (intersperse)--infixl 5 $$$----------------------------------------------------------------------------------- | Varieties of layout we can use.-data PPLayout = PPOffsideRule   -- ^ classical layout-              | PPSemiColon     -- ^ classical layout made explicit-              | PPInLine        -- ^ inline decls, with newlines between them-              | PPNoLayout      -- ^ everything on a single line-              deriving Eq--type Indent = Int---- | Pretty-printing parameters.------ /Note:/ the 'onsideIndent' must be positive and less than all other indents.-data PPHsMode = PPHsMode {-                                -- | indentation of a class or instance-                classIndent :: Indent,-                                -- | indentation of a @do@-expression-                doIndent :: Indent,-                                -- | indentation of the body of a-                                -- @case@ expression-                caseIndent :: Indent,-                                -- | indentation of the declarations in a-                                -- @let@ expression-                letIndent :: Indent,-                                -- | indentation of the declarations in a-                                -- @where@ clause-                whereIndent :: Indent,-                                -- | indentation added for continuation-                                -- lines that would otherwise be offside-                onsideIndent :: Indent,-                                -- | blank lines between statements?-                spacing :: Bool,-                                -- | Pretty-printing style to use-                layout :: PPLayout,-                                -- | add GHC-style @LINE@ pragmas to output?-                linePragmas :: Bool-                }---- | The default mode: pretty-print using the offside rule and sensible--- defaults.-defaultMode :: PPHsMode-defaultMode = PPHsMode{-                      classIndent = 8,-                      doIndent = 3,-                      caseIndent = 4,-                      letIndent = 4,-                      whereIndent = 6,-                      onsideIndent = 2,-                      spacing = True,-                      layout = PPOffsideRule,-                      linePragmas = False-                      }---- | Pretty printing monad-newtype DocM s a = DocM (s -> a)--instance Functor (DocM s) where-         fmap f xs = do x <- xs; return (f x)--instance Monad (DocM s) where-        (>>=) = thenDocM-        (>>) = then_DocM-        return = retDocM--{-# INLINE thenDocM #-}-{-# INLINE then_DocM #-}-{-# INLINE retDocM #-}-{-# INLINE unDocM #-}-{-# INLINE getPPEnv #-}--thenDocM :: DocM s a -> (a -> DocM s b) -> DocM s b-thenDocM m k = DocM $ (\s -> case unDocM m $ s of a -> unDocM (k a) $ s)--then_DocM :: DocM s a -> DocM s b -> DocM s b-then_DocM m k = DocM $ (\s -> case unDocM m $ s of _ -> unDocM k $ s)--retDocM :: a -> DocM s a-retDocM a = DocM (\_s -> a)--unDocM :: DocM s a -> (s -> a)-unDocM (DocM f) = f---- all this extra stuff, just for this one function.-getPPEnv :: DocM s s-getPPEnv = DocM id---- So that pp code still looks the same--- this means we lose some generality though---- | The document type produced by these pretty printers uses a 'PPHsMode'--- environment.-type Doc = DocM PPHsMode P.Doc---- | Things that can be pretty-printed, including all the syntactic objects--- in "Language.Haskell.Exts.Syntax" and "Language.Haskell.Exts.Annotated.Syntax".-class Pretty a where-        -- | Pretty-print something in isolation.-        pretty :: a -> Doc-        -- | Pretty-print something in a precedence context.-        prettyPrec :: Int -> a -> Doc-        pretty = prettyPrec 0-        prettyPrec _ = pretty---- The pretty printing combinators--empty :: Doc-empty = return P.empty--nest :: Int -> Doc -> Doc-nest i m = m >>= return . P.nest i----- Literals--text, ptext :: String -> Doc-text = return . P.text-ptext = return . P.text--char :: Char -> Doc-char = return . P.char--int :: Int -> Doc-int = return . P.int--integer :: Integer -> Doc-integer = return . P.integer--float :: Float -> Doc-float = return . P.float--double :: Double -> Doc-double = return . P.double--rational :: Rational -> Doc-rational = return . P.rational---- Simple Combining Forms--parens, brackets, braces,quotes,doubleQuotes :: Doc -> Doc-parens d = d >>= return . P.parens-brackets d = d >>= return . P.brackets-braces d = d >>= return . P.braces-quotes d = d >>= return . P.quotes-doubleQuotes d = d >>= return . P.doubleQuotes--parensIf :: Bool -> Doc -> Doc-parensIf True = parens-parensIf False = id---- Constants--semi,comma,colon,space,equals :: Doc-semi = return P.semi-comma = return P.comma-colon = return P.colon-space = return P.space-equals = return P.equals--lparen,rparen,lbrack,rbrack,lbrace,rbrace :: Doc-lparen = return  P.lparen-rparen = return  P.rparen-lbrack = return  P.lbrack-rbrack = return  P.rbrack-lbrace = return  P.lbrace-rbrace = return  P.rbrace---- Combinators--(<>),(<+>),($$),($+$) :: Doc -> Doc -> Doc-aM <> bM = do{a<-aM;b<-bM;return (a P.<> b)}-aM <+> bM = do{a<-aM;b<-bM;return (a P.<+> b)}-aM $$ bM = do{a<-aM;b<-bM;return (a P.$$ b)}-aM $+$ bM = do{a<-aM;b<-bM;return (a P.$+$ b)}--hcat,hsep,vcat,sep,cat,fsep,fcat :: [Doc] -> Doc-hcat dl = sequence dl >>= return . P.hcat-hsep dl = sequence dl >>= return . P.hsep-vcat dl = sequence dl >>= return . P.vcat-sep dl = sequence dl >>= return . P.sep-cat dl = sequence dl >>= return . P.cat-fsep dl = sequence dl >>= return . P.fsep-fcat dl = sequence dl >>= return . P.fcat---- Some More--hang :: Doc -> Int -> Doc -> Doc-hang dM i rM = do{d<-dM;r<-rM;return $ P.hang d i r}---- Yuk, had to cut-n-paste this one from Pretty.hs-punctuate :: Doc -> [Doc] -> [Doc]-punctuate _ []     = []-punctuate p (d1:ds) = go d1 ds-                   where-                     go d [] = [d]-                     go d (e:es) = (d <> p) : go e es---- | render the document with a given style and mode.-renderStyleMode :: P.Style -> PPHsMode -> Doc -> String-renderStyleMode ppStyle ppMode d = P.renderStyle ppStyle . unDocM d $ ppMode---- | render the document with a given mode.-renderWithMode :: PPHsMode -> Doc -> String-renderWithMode = renderStyleMode P.style---- | render the document with 'defaultMode'.-render :: Doc -> String-render = renderWithMode defaultMode---- | pretty-print with a given style and mode.-prettyPrintStyleMode :: Pretty a => P.Style -> PPHsMode -> a -> String-prettyPrintStyleMode ppStyle ppMode = renderStyleMode ppStyle ppMode . pretty---- | pretty-print with the default style and a given mode.-prettyPrintWithMode :: Pretty a => PPHsMode -> a -> String-prettyPrintWithMode = prettyPrintStyleMode P.style---- | pretty-print with the default style and 'defaultMode'.-prettyPrint :: Pretty a => a -> String-prettyPrint = prettyPrintWithMode defaultMode--fullRenderWithMode :: PPHsMode -> P.Mode -> Int -> Float ->-                      (P.TextDetails -> a -> a) -> a -> Doc -> a-fullRenderWithMode ppMode m i f fn e mD =-                   P.fullRender m i f fn e $ (unDocM mD) ppMode---fullRender :: P.Mode -> Int -> Float -> (P.TextDetails -> a -> a)-              -> a -> Doc -> a-fullRender = fullRenderWithMode defaultMode---------------------------  Pretty-Print a Module ---------------------instance Pretty Module where-        pretty (Module pos m os mbWarn mbExports imp decls) =-                markLine pos $-                myVcat $ map pretty os ++-                    (if m == ModuleName "" then id-                     else \x -> [topLevel (ppModuleHeader m mbWarn mbExports) x])-                    (map pretty imp ++ map pretty decls)----------------------------  Module Header -------------------------------ppModuleHeader :: ModuleName -> Maybe WarningText -> Maybe [ExportSpec] -> Doc-ppModuleHeader m mbWarn mbExportList = mySep [-        text "module",-        pretty m,-        maybePP ppWarnTxt mbWarn,-        maybePP (parenList . map pretty) mbExportList,-        text "where"]--ppWarnTxt :: WarningText -> Doc-ppWarnTxt (DeprText s) = mySep [text "{-# DEPRECATED", text s, text "#-}"]-ppWarnTxt (WarnText s) = mySep [text "{-# WARNING",    text s, text "#-}"]--instance Pretty ModuleName where-        pretty (ModuleName modName) = text modName--instance Pretty ExportSpec where-        pretty (EVar name)                = pretty name-        pretty (EAbs name)                = pretty name-        pretty (EThingAll name)           = pretty name <> text "(..)"-        pretty (EThingWith name nameList) =-                pretty name <> (parenList . map pretty $ nameList)-        pretty (EModuleContents m)        = text "module" <+> pretty m--instance Pretty ImportDecl where-        pretty (ImportDecl pos m qual src mbPkg mbName mbSpecs) =-                markLine pos $-                mySep [text "import",-                       if src  then text "{-# SOURCE #-}" else empty,-                       if qual then text "qualified" else empty,-                       maybePP (\s -> text (show s)) mbPkg,-                       pretty m,-                       maybePP (\m' -> text "as" <+> pretty m') mbName,-                       maybePP exports mbSpecs]-            where-                exports (b,specList) =-                        if b then text "hiding" <+> specs else specs-                    where specs = parenList . map pretty $ specList--instance Pretty ImportSpec where-        pretty (IVar name)                = pretty name-        pretty (IAbs name)                = pretty name-        pretty (IThingAll name)           = pretty name <> text "(..)"-        pretty (IThingWith name nameList) =-                pretty name <> (parenList . map pretty $ nameList)---------------------------  Declarations -------------------------------instance Pretty Decl where-        pretty (TypeDecl loc name nameList htype) =-                blankline $-                markLine loc $-                mySep ( [text "type", pretty name]-                        ++ map pretty nameList-                        ++ [equals, pretty htype])--        pretty (DataDecl loc don context name nameList constrList derives) =-                blankline $-                markLine loc $-                mySep ( [pretty don, ppContext context, pretty name]-                        ++ map pretty nameList)-                        <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))-                                                   (map pretty constrList))-                        $$$ ppDeriving derives)--        pretty (GDataDecl loc don context name nameList optkind gadtList derives) =-                blankline $-                markLine loc $-                mySep ( [pretty don, ppContext context, pretty name]-                        ++ map pretty nameList ++ ppOptKind optkind ++ [text "where"])-                        $$$ ppBody classIndent (map pretty gadtList)-                        $$$ ppDeriving derives--        pretty (TypeFamDecl loc name nameList optkind) =-                blankline $-                markLine loc $-                mySep ([text "type", text "family", pretty name]-                        ++ map pretty nameList-                        ++ ppOptKind optkind)--        pretty (DataFamDecl loc context name nameList optkind) =-                blankline $-                markLine loc $-                mySep ( [text "data", text "family", ppContext context, pretty name]-                        ++ map pretty nameList ++ ppOptKind optkind)--        pretty (TypeInsDecl loc ntype htype) =-                blankline $-                markLine loc $-                mySep [text "type", text "instance", pretty ntype, equals, pretty htype]--        pretty (DataInsDecl loc don ntype constrList derives) =-                blankline $-                markLine loc $-                mySep [pretty don, text "instance", pretty ntype]-                        <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))-                                                   (map pretty constrList))-                              $$$ ppDeriving derives)--        pretty (GDataInsDecl loc don ntype optkind gadtList derives) =-                blankline $-                markLine loc $-                mySep ( [pretty don, text "instance", pretty ntype]-                        ++ ppOptKind optkind ++ [text "where"])-                        $$$ ppBody classIndent (map pretty gadtList)-                        $$$ ppDeriving derives--        --m{spacing=False}-        -- special case for empty class declaration-        pretty (ClassDecl pos context name nameList fundeps []) =-                blankline $-                markLine pos $-                mySep ( [text "class", ppContext context, pretty name]-                        ++ map pretty nameList ++ [ppFunDeps fundeps])-        pretty (ClassDecl pos context name nameList fundeps declList) =-                blankline $-                markLine pos $-                mySep ( [text "class", ppContext context, pretty name]-                        ++ map pretty nameList ++ [ppFunDeps fundeps, text "where"])-                $$$ ppBody classIndent (map pretty declList)--        -- m{spacing=False}-        -- special case for empty instance declaration-        pretty (InstDecl pos context name args []) =-                blankline $-                markLine pos $-                mySep ( [text "instance", ppContext context, pretty name]-                        ++ map ppAType args)-        pretty (InstDecl pos context name args declList) =-                blankline $-                markLine pos $-                mySep ( [text "instance", ppContext context, pretty name]-                        ++ map ppAType args ++ [text "where"])-                $$$ ppBody classIndent (map pretty declList)--        pretty (DerivDecl pos context name args) =-                blankline $-                markLine pos $-                mySep ( [text "deriving", text "instance", ppContext context, pretty name]-                        ++ map ppAType args)-        pretty (DefaultDecl pos htypes) =-                blankline $-                markLine pos $-                text "default" <+> parenList (map pretty htypes)--        pretty (SpliceDecl pos splice) =-                blankline $-                markLine pos $-                pretty splice--        pretty (TypeSig pos nameList qualType) =-                blankline $-                markLine pos $-                mySep ((punctuate comma . map pretty $ nameList)-                      ++ [text "::", pretty qualType])--        pretty (FunBind matches) = do-                e <- fmap layout getPPEnv-                case e of PPOffsideRule -> foldr ($$$) empty (map pretty matches)-                          _ -> foldr (\x y -> x <> semi <> y) empty (map pretty matches)--        pretty (PatBind pos pat optsig rhs whereBinds) =-                markLine pos $-                myFsep [pretty pat, maybePP ppSig optsig, pretty rhs] $$$ ppWhere whereBinds--        pretty (InfixDecl pos assoc prec opList) =-                blankline $-                markLine pos $-                mySep ([pretty assoc, int prec]-                       ++ (punctuate comma . map pretty $ opList))--        pretty (ForImp pos cconv saf str name typ) =-                blankline $-                markLine pos $-                mySep [text "foreign import", pretty cconv, pretty saf,-                       text (show str), pretty name, text "::", pretty typ]--        pretty (ForExp pos cconv str name typ) =-                blankline $-                markLine pos $-                mySep [text "foreign export", pretty cconv,-                       text (show str), pretty name, text "::", pretty typ]--        pretty (RulePragmaDecl pos rules) =-                blankline $-                markLine pos $-                myVcat $ text "{-# RULES" : map pretty rules ++ [text " #-}"]--        pretty (DeprPragmaDecl pos deprs) =-                blankline $-                markLine pos $-                myVcat $ text "{-# DEPRECATED" : map ppWarnDepr deprs ++ [text " #-}"]--        pretty (WarnPragmaDecl pos deprs) =-                blankline $-                markLine pos $-                myVcat $ text "{-# WARNING" : map ppWarnDepr deprs ++ [text " #-}"]--        pretty (InlineSig pos inl activ name) =-                blankline $-                markLine pos $-                mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE"), pretty activ, pretty name, text "#-}"]--        pretty (InlineConlikeSig pos activ name) =-                blankline $-                markLine pos $-                mySep [text "{-# INLINE_CONLIKE", pretty activ, pretty name, text "#-}"]--        pretty (SpecSig pos name types) =-                blankline $-                markLine pos $-                mySep $ [text "{-# SPECIALISE", pretty name, text "::"]-                    ++ punctuate comma (map pretty types) ++ [text "#-}"]--        pretty (SpecInlineSig pos inl activ name types) =-                blankline $-                markLine pos $-                mySep $ [text "{-# SPECIALISE", text (if inl then "INLINE" else "NOINLINE"),-                        pretty activ, pretty name, text "::"]-                        ++ (punctuate comma $ map pretty types) ++ [text "#-}"]--        pretty (InstSig pos context name args) =-                blankline $-                markLine pos $-                mySep $ [text "{-# SPECIALISE", text "instance", ppContext context, pretty name]-                            ++ map ppAType args ++ [text "#-}"]--        pretty (AnnPragma pos ann) =-                blankline $-                markLine pos $-                mySep $ [text "{-# ANN", pretty ann, text "#-}"]--instance Pretty Annotation where-        pretty (Ann n e) = myFsep [pretty n, pretty e]-        pretty (TypeAnn n e) = myFsep [text "type", pretty n, pretty e]-        pretty (ModuleAnn e) = myFsep [text "module", pretty e]--instance Pretty DataOrNew where-        pretty DataType = text "data"-        pretty NewType  = text "newtype"--instance Pretty Assoc where-        pretty AssocNone  = text "infix"-        pretty AssocLeft  = text "infixl"-        pretty AssocRight = text "infixr"--instance Pretty Match where-        pretty (Match pos f ps optsig rhs whereBinds) =-                markLine pos $-                myFsep (lhs ++ [maybePP ppSig optsig, pretty rhs])-                $$$ ppWhere whereBinds-            where-                lhs = case ps of-                        l:r:ps' | isSymbolName f ->-                                let hd = [pretty l, ppName f, pretty r] in-                                if null ps' then hd-                                else parens (myFsep hd) : map (prettyPrec 2) ps'-                        _ -> pretty f : map (prettyPrec 2) ps--ppWhere :: Binds -> Doc-ppWhere (BDecls []) = empty-ppWhere (BDecls l)  = nest 2 (text "where" $$$ ppBody whereIndent (map pretty l))-ppWhere (IPBinds b) = nest 2 (text "where" $$$ ppBody whereIndent (map pretty b))--ppSig :: Type -> Doc-ppSig t = text "::" <+> pretty t--instance Pretty ClassDecl where-    pretty (ClsDecl decl) = pretty decl--    pretty (ClsDataFam loc context name nameList optkind) =-                markLine loc $-                mySep ( [text "data", ppContext context, pretty name]-                        ++ map pretty nameList ++ ppOptKind optkind)--    pretty (ClsTyFam loc name nameList optkind) =-                markLine loc $-                mySep ( [text "type", pretty name]-                        ++ map pretty nameList ++ ppOptKind optkind)--    pretty (ClsTyDef loc ntype htype) =-                markLine loc $-                mySep [text "type", pretty ntype, equals, pretty htype]--instance Pretty InstDecl where-        pretty (InsDecl decl) = pretty decl--        pretty (InsType loc ntype htype) =-                markLine loc $-                mySep [text "type", pretty ntype, equals, pretty htype]--        pretty (InsData loc don ntype constrList derives) =-                markLine loc $-                mySep [pretty don, pretty ntype]-                        <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))-                                                   (map pretty constrList))-                              $$$ ppDeriving derives)--        pretty (InsGData loc don ntype optkind gadtList derives) =-                markLine loc $-                mySep ( [pretty don, pretty ntype]-                        ++ ppOptKind optkind ++ [text "where"])-                        $$$ ppBody classIndent (map pretty gadtList)-                        $$$ ppDeriving derives----        pretty (InsInline loc inl activ name) =---                markLine loc $---                mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE"), pretty activ, pretty name, text "#-}"]---------------------------- FFI stuff --------------------------------------instance Pretty Safety where-        pretty PlayRisky        = text "unsafe"-        pretty (PlaySafe b)     = text $ if b then "threadsafe" else "safe"--instance Pretty CallConv where-        pretty StdCall  = text "stdcall"-        pretty CCall    = text "ccall"--------------------------- Pragmas ----------------------------------------ppWarnDepr :: ([Name], String) -> Doc-ppWarnDepr (names, txt) = mySep $ (punctuate comma $ map pretty names) ++ [text $ show txt]--instance Pretty Rule where-        pretty (Rule tag activ rvs rhs lhs) =-            mySep $ [text $ show tag, pretty activ,-                        maybePP ppRuleVars rvs,-                        pretty rhs, char '=', pretty lhs]--ppRuleVars :: [RuleVar] -> Doc-ppRuleVars []  = empty-ppRuleVars rvs = mySep $ text "forall" : map pretty rvs ++ [char '.']--instance Pretty Activation where-    pretty AlwaysActive    = empty-    pretty (ActiveFrom i)  = char '['  <> int i <> char ']'-    pretty (ActiveUntil i) = text "[~" <> int i <> char ']'--instance Pretty RuleVar where-    pretty (RuleVar n) = pretty n-    pretty (TypedRuleVar n t) = mySep [pretty n, text "::", pretty t]--instance Pretty ModulePragma where-    pretty (LanguagePragma _ ns) =-        myFsep $ text "{-# LANGUAGE" : punctuate (char ',') (map pretty ns) ++ [text "#-}"]-    pretty (OptionsPragma _ (Just tool) s) =-        myFsep $ [text "{-# OPTIONS_" <> pretty tool, text s, text "#-}"]-    pretty (OptionsPragma _ _ s) =-        myFsep $ [text "{-# OPTIONS", text s, text "#-}"]-    pretty (AnnModulePragma _ ann) =-        myFsep $ [text "{-# ANN", pretty ann, text "#-}"]-        --instance Pretty Tool where-    pretty (UnknownTool s) = text s-    pretty t               = text $ show t--------------------------- Data & Newtype Bodies --------------------------instance Pretty QualConDecl where-        pretty (QualConDecl _pos tvs ctxt con) =-                myFsep [ppForall (Just tvs), ppContext ctxt, pretty con]--instance Pretty GadtDecl where-        pretty (GadtDecl _pos name ty) =-                myFsep [pretty name, text "::", pretty ty]--instance Pretty ConDecl where-        pretty (RecDecl name fieldList) =-                pretty name <> (braceList . map ppField $ fieldList)--{-        pretty (ConDecl name@(Symbol _) [l, r]) =-                myFsep [prettyPrec prec_btype l, ppName name,-                        prettyPrec prec_btype r] -}-        pretty (ConDecl name typeList) =-                mySep $ ppName name : map (prettyPrec prec_atype) typeList-        pretty (InfixConDecl l name r) =-                myFsep [prettyPrec prec_btype l, ppNameInfix name,-                         prettyPrec prec_btype r]--ppField :: ([Name],BangType) -> Doc-ppField (names, ty) =-        myFsepSimple $ (punctuate comma . map pretty $ names) ++-                       [text "::", pretty ty]--instance Pretty BangType where-        prettyPrec _ (BangedTy ty) = char '!' <> ppAType ty-        prettyPrec p (UnBangedTy ty) = prettyPrec p ty-        prettyPrec p (UnpackedTy ty) = text "{-# UNPACK #-}" <+> char '!' <> prettyPrec p ty--ppDeriving :: [Deriving] -> Doc-ppDeriving []  = empty-ppDeriving [(d, [])] = text "deriving" <+> ppQName d-ppDeriving ds  = text "deriving" <+> parenList (map ppDer ds)-    where ppDer :: (QName, [Type]) -> Doc-          ppDer (n, ts) = mySep (pretty n : map pretty ts)--------------------------- Types --------------------------ppBType :: Type -> Doc-ppBType = prettyPrec prec_btype--ppAType :: Type -> Doc-ppAType = prettyPrec prec_atype---- precedences for types-prec_btype, prec_atype :: Int-prec_btype = 1  -- left argument of ->,-                -- or either argument of an infix data constructor-prec_atype = 2  -- argument of type or data constructor, or of a class--instance Pretty Type where-        prettyPrec p (TyForall mtvs ctxt htype) = parensIf (p > 0) $-                myFsep [ppForall mtvs, ppContext ctxt, pretty htype]-        prettyPrec p (TyFun a b) = parensIf (p > 0) $-                myFsep [ppBType a, text "->", pretty b]-        prettyPrec _ (TyTuple bxd l) =-                let ds = map pretty l-                 in case bxd of-                        Boxed   -> parenList ds-                        Unboxed -> hashParenList ds-        prettyPrec _ (TyList t)  = brackets $ pretty t-        prettyPrec p (TyApp a b) =-                {--                | a == list_tycon = brackets $ pretty b         -- special case-                | otherwise = -} parensIf (p > prec_btype) $-                                    myFsep [pretty a, ppAType b]-        prettyPrec _ (TyVar name) = pretty name-        prettyPrec _ (TyCon name) = pretty name-        prettyPrec _ (TyParen t) = parens (pretty t)---        prettyPrec _ (TyPred asst) = pretty asst-        prettyPrec _ (TyInfix a op b) = myFsep [pretty a, ppQNameInfix op, pretty b]-        prettyPrec _ (TyKind t k) = parens (myFsep [pretty t, text "::", pretty k])---instance Pretty TyVarBind where-        pretty (KindedVar var kind) = parens $ myFsep [pretty var, text "::", pretty kind]-        pretty (UnkindedVar var)    = pretty var--ppForall :: Maybe [TyVarBind] -> Doc-ppForall Nothing   = empty-ppForall (Just []) = empty-ppForall (Just vs) =    myFsep (text "forall" : map pretty vs ++ [char '.'])------------------------------ Kinds ------------------------------instance Pretty Kind where-        pretty KindStar      = text "*"-        pretty KindBang      = text "!"-        pretty (KindFn a b)  = myFsep [pretty a, text "->", pretty b]-        pretty (KindParen k) = parens $ pretty k-        pretty (KindVar n)   = pretty n--ppOptKind :: Maybe Kind -> [Doc]-ppOptKind Nothing  = []-ppOptKind (Just k) = [text "::", pretty k]--------------------- Functional Dependencies --------------------instance Pretty FunDep where-        pretty (FunDep from to) =-                myFsep $ map pretty from ++ [text "->"] ++ map pretty to---ppFunDeps :: [FunDep] -> Doc-ppFunDeps []  = empty-ppFunDeps fds = myFsep $ (char '|':) . punctuate comma . map pretty $ fds--------------------------- Expressions --------------------------instance Pretty Rhs where-        pretty (UnGuardedRhs e) = equals <+> pretty e-        pretty (GuardedRhss guardList) = myVcat . map pretty $ guardList--instance Pretty GuardedRhs where-        pretty (GuardedRhs _pos guards ppBody) =-                myFsep $ [char '|'] ++ (punctuate comma . map pretty $ guards) ++ [equals, pretty ppBody]--instance Pretty Literal where-        pretty (Int i)        = integer i-        pretty (Char c)       = text (show c)-        pretty (String s)     = text (show s)-        pretty (Frac r)       = double (fromRational r)-        -- GHC unboxed literals:-        pretty (PrimChar c)   = text (show c)           <> char '#'-        pretty (PrimString s) = text (show s)           <> char '#'-        pretty (PrimInt i)    = integer i               <> char '#'-        pretty (PrimWord w)   = integer w               <> text "##"-        pretty (PrimFloat r)  = float  (fromRational r) <> char '#'-        pretty (PrimDouble r) = double (fromRational r) <> text "##"--instance Pretty Exp where-        prettyPrec _ (Lit l) = pretty l-        -- lambda stuff-        prettyPrec p (InfixApp a op b) = parensIf (p > 0) $ myFsep [pretty a, pretty op, pretty b]-        prettyPrec _ (NegApp e) = parens $ myFsep [char '-', pretty e]-        prettyPrec p (App a b) = parensIf (p > 0) $ myFsep [pretty a, prettyPrec 1 b]-        prettyPrec p (Lambda _loc expList ppBody) = parensIf (p > 0) $ myFsep $-                char '\\' : map pretty expList ++ [text "->", pretty ppBody]-        -- keywords-        -- two cases for lets-        prettyPrec p (Let (BDecls declList) letBody) =-                parensIf (p > 0) $ ppLetExp declList letBody-        prettyPrec p (Let (IPBinds bindList) letBody) =-                parensIf (p > 0) $ ppLetExp bindList letBody--        prettyPrec p (If cond thenexp elsexp) = parensIf (p > 0) $-                myFsep [text "if", pretty cond,-                        text "then", pretty thenexp,-                        text "else", pretty elsexp]-        prettyPrec p (Case cond altList) = parensIf (p > 0) $-                myFsep [text "case", pretty cond, text "of"]-                $$$ ppBody caseIndent (map pretty altList)-        prettyPrec p (Do stmtList) = parensIf (p > 0) $ -                text "do" $$$ ppBody doIndent (map pretty stmtList)-        prettyPrec p (MDo stmtList) = parensIf (p > 0) $ -                text "mdo" $$$ ppBody doIndent (map pretty stmtList)-        -- Constructors & Vars-        prettyPrec _ (Var name) = pretty name-        prettyPrec _ (IPVar ipname) = pretty ipname-        prettyPrec _ (Con name) = pretty name-        prettyPrec _ (Tuple expList) = parenList . map pretty $ expList-        prettyPrec _ (TupleSection mExpList) = parenList . map (maybePP pretty) $ mExpList-        -- weird stuff-        prettyPrec _ (Paren e) = parens . pretty $ e-        prettyPrec _ (LeftSection e op) = parens (pretty e <+> pretty op)-        prettyPrec _ (RightSection op e) = parens (pretty op <+> pretty e)-        prettyPrec _ (RecConstr c fieldList) =-                pretty c <> (braceList . map pretty $ fieldList)-        prettyPrec _ (RecUpdate e fieldList) =-                pretty e <> (braceList . map pretty $ fieldList)-        -- Lists-        prettyPrec _ (List list) =-                bracketList . punctuate comma . map pretty $ list-        prettyPrec _ (EnumFrom e) =-                bracketList [pretty e, text ".."]-        prettyPrec _ (EnumFromTo from to) =-                bracketList [pretty from, text "..", pretty to]-        prettyPrec _ (EnumFromThen from thenE) =-                bracketList [pretty from <> comma, pretty thenE, text ".."]-        prettyPrec _ (EnumFromThenTo from thenE to) =-                bracketList [pretty from <> comma, pretty thenE,-                             text "..", pretty to]-        prettyPrec _ (ListComp e qualList) =-                bracketList ([pretty e, char '|']-                             ++ (punctuate comma . map pretty $ qualList))-        prettyPrec _ (ParComp e qualLists) =-                bracketList (intersperse (char '|') $-                                pretty e : (punctuate comma . concatMap (map pretty) $ qualLists))-        prettyPrec p (ExpTypeSig _pos e ty) = parensIf (p > 0) $ -                myFsep [pretty e, text "::", pretty ty]-        -- Template Haskell-        prettyPrec _ (BracketExp b) = pretty b-        prettyPrec _ (SpliceExp s) = pretty s-        prettyPrec _ (TypQuote t)  = text "\'\'" <> pretty t-        prettyPrec _ (VarQuote x)  = text "\'" <> pretty x-        prettyPrec _ (QuasiQuote n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")-        -- Hsx-        prettyPrec _ (XTag _ n attrs mattr cs) =-                let ax = maybe [] (return . pretty) mattr-                 in hcat $-                     (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):-                        map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]-        prettyPrec _ (XETag _ n attrs mattr) =-                let ax = maybe [] (return . pretty) mattr-                 in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]-        prettyPrec _ (XPcdata s) = text s-        prettyPrec _ (XExpTag e) =-                myFsep $ [text "<%", pretty e, text "%>"]-        -- Pragmas-        prettyPrec p (CorePragma s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]-        prettyPrec _ (SCCPragma  s e) = myFsep $ map text ["{-# SCC",  show s, "#-}"] ++ [pretty e]-        prettyPrec _ (GenPragma  s (a,b) (c,d) e) =-                myFsep $ [text "{-# GENERATED", text $ show s,-                            int a, char ':', int b, char '-',-                            int c, char ':', int d, text "#-}", pretty e]-        -- Arrows-        prettyPrec p (Proc _ pat e) = parensIf (p > 0) $ myFsep $ [text "proc", pretty pat, text "->", pretty e]-        prettyPrec p (LeftArrApp l r)      = parensIf (p > 0) $ myFsep $ [pretty l, text "-<",  pretty r]-        prettyPrec p (RightArrApp l r)     = parensIf (p > 0) $ myFsep $ [pretty l, text ">-",  pretty r]-        prettyPrec p (LeftArrHighApp l r)  = parensIf (p > 0) $ myFsep $ [pretty l, text "-<<", pretty r]-        prettyPrec p (RightArrHighApp l r) = parensIf (p > 0) $ myFsep $ [pretty l, text ">>-", pretty r]---instance Pretty XAttr where-        pretty (XAttr n v) =-                myFsep [pretty n, char '=', pretty v]--instance Pretty XName where-        pretty (XName n) = text n-        pretty (XDomName d n) = text d <> char ':' <> text n----ppLetExp :: [Decl] -> Exp -> Doc-ppLetExp l b = myFsep [text "let" <+> ppBody letIndent (map pretty l),-                        text "in", pretty b]--ppWith binds = nest 2 (text "with" $$$ ppBody withIndent (map pretty binds))-withIndent = whereIndent----------------------- Template Haskell ---------------------------instance Pretty Bracket where-        pretty (ExpBracket e) = ppBracket "[|" e-        pretty (PatBracket p) = ppBracket "[p|" p-        pretty (TypeBracket t) = ppBracket "[t|" t-        pretty (DeclBracket d) =-                myFsep $ text "[d|" : map pretty d ++ [text "|]"]--ppBracket o x = myFsep [text o, pretty x, text "|]"]--instance Pretty Splice where-        pretty (IdSplice s) = char '$' <> text s-        pretty (ParenSplice e) =-                myFsep [text "$(", pretty e, char ')']--------------------------- Patterns -------------------------------instance Pretty Pat where-        prettyPrec _ (PVar name) = pretty name-        prettyPrec _ (PLit lit) = pretty lit-        prettyPrec _ (PNeg p) = myFsep [char '-', pretty p]-        prettyPrec p (PInfixApp a op b) = parensIf (p > 0) $-                myFsep [pretty a, pretty (QConOp op), pretty b]-        prettyPrec p (PApp n ps) = parensIf (p > 1) $-                myFsep (pretty n : map pretty ps)-        prettyPrec _ (PTuple ps) = parenList . map pretty $ ps-        prettyPrec _ (PList ps) =-                bracketList . punctuate comma . map pretty $ ps-        prettyPrec _ (PParen p) = parens . pretty $ p-        prettyPrec _ (PRec c fields) =-                pretty c <> (braceList . map pretty $ fields)-        -- special case that would otherwise be buggy-        prettyPrec _ (PAsPat name (PIrrPat pat)) =-                myFsep [pretty name <> char '@', char '~' <> pretty pat]-        prettyPrec _ (PAsPat name pat) =-                hcat [pretty name, char '@', pretty pat]-        prettyPrec _ PWildCard = char '_'-        prettyPrec _ (PIrrPat pat) = char '~' <> pretty pat-        prettyPrec _ (PatTypeSig _pos pat ty) =-                myFsep [pretty pat, text "::", pretty ty]-        prettyPrec p (PViewPat e pat) = parensIf (p > 0) $-                myFsep [pretty e, text "->", pretty pat]-        prettyPrec p (PNPlusK n k) = parensIf (p > 0) $-                myFsep [pretty n, text "+", text $ show k]-        -- HaRP-        prettyPrec _ (PRPat rs) =-                bracketList . punctuate comma . map pretty $ rs-        -- Hsx-        prettyPrec _ (PXTag _ n attrs mattr cp) =-            let ap = maybe [] (return . pretty) mattr-             in hcat $ -- TODO: should not introduce blanks-                  (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [char '>']):-                    map pretty cp ++ [myFsep $ [text "</" <> pretty n, char '>']]-        prettyPrec _ (PXETag _ n attrs mattr) =-                let ap = maybe [] (return . pretty) mattr-                 in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [text "/>"]-        prettyPrec _ (PXPcdata s) = text s-        prettyPrec _ (PXPatTag p) =-                myFsep $ [text "<%", pretty p, text "%>"]-        prettyPrec _ (PXRPats ps) =-                myFsep $ text "<[" : map pretty ps ++ [text "%>"]-        -- Generics-        prettyPrec _ (PExplTypeArg qn t) =-                myFsep [pretty qn, text "{|", pretty t, text "|}"]-        -- BangPatterns-        prettyPrec _ (PBangPat p) = text "!" <> pretty p--instance Pretty PXAttr where-        pretty (PXAttr n p) =-                myFsep [pretty n, char '=', pretty p]--instance Pretty PatField where-        pretty (PFieldPat name pat) =-                myFsep [pretty name, equals, pretty pat]-        pretty (PFieldPun name) = pretty name-        pretty (PFieldWildcard) = text ".."----------------------- Regular Patterns ---------------------------instance Pretty RPat where-        pretty (RPOp r op) = pretty r <> pretty op-        pretty (RPEither r1 r2) = parens . myFsep $-                [pretty r1, char '|', pretty r2]-        pretty (RPSeq rs) =-                myFsep $ text "(/" : map pretty rs ++ [text "/)"]-        pretty (RPGuard r gs) =-                myFsep $ text "(|" : pretty r : char '|' : map pretty gs ++ [text "|)"]-        -- special case that would otherwise be buggy-        pretty (RPCAs n (RPPat (PIrrPat p))) =-                myFsep [pretty n <> text "@:", char '~' <> pretty p]-        pretty (RPCAs n r) = hcat [pretty n, text "@:", pretty r]-        -- special case that would otherwise be buggy-        pretty (RPAs n (RPPat (PIrrPat p))) =-                myFsep [pretty n <> text "@:", char '~' <> pretty p]-        pretty (RPAs n r) = hcat [pretty n, char '@', pretty r]-        pretty (RPPat p) = pretty p-        pretty (RPParen rp) = parens . pretty $ rp--instance Pretty RPatOp where-        pretty RPStar  = char '*'-        pretty RPStarG = text "*!"-        pretty RPPlus  = char '+'-        pretty RPPlusG = text "+!"-        pretty RPOpt   = char '?'-        pretty RPOptG  = text "?!"--------------------------- Case bodies  --------------------------instance Pretty Alt where-        pretty (Alt _pos e gAlts binds) =-                pretty e <+> pretty gAlts $$$ ppWhere binds--instance Pretty GuardedAlts where-        pretty (UnGuardedAlt e) = text "->" <+> pretty e-        pretty (GuardedAlts altList) = myVcat . map pretty $ altList--instance Pretty GuardedAlt where-        pretty (GuardedAlt _pos guards body) =-                myFsep $ char '|': (punctuate comma . map pretty $ guards) ++ [text "->", pretty body]--------------------------- Statements in monads, guards & list comprehensions ------instance Pretty Stmt where-        pretty (Generator _loc e from) =-                pretty e <+> text "<-" <+> pretty from-        pretty (Qualifier e) = pretty e-        -- two cases for lets-        pretty (LetStmt (BDecls declList)) =-                ppLetStmt declList-        pretty (LetStmt (IPBinds bindList)) =-                ppLetStmt bindList-        pretty (RecStmt stmtList) =-                text "rec" $$$ ppBody letIndent (map pretty stmtList)--ppLetStmt l = text "let" $$$ ppBody letIndent (map pretty l)--instance Pretty QualStmt where-        pretty (QualStmt s) = pretty s-        pretty (ThenTrans    f)    = myFsep $ [text "then", pretty f]-        pretty (ThenBy       f e)  = myFsep $ [text "then", pretty f, text "by", pretty e]-        pretty (GroupBy      e)    = myFsep $ [text "then", text "group", text "by", pretty e]-        pretty (GroupUsing   f)    = myFsep $ [text "then", text "group", text "using", pretty f]-        pretty (GroupByUsing e f)  = myFsep $ [text "then", text "group", text "by",-                                                pretty e, text "using", pretty f]----------------------------- Record updates-instance Pretty FieldUpdate where-        pretty (FieldUpdate name e) =-                myFsep [pretty name, equals, pretty e]-        pretty (FieldPun name) = pretty name-        pretty (FieldWildcard) = text ".."--------------------------- Names --------------------------instance Pretty QOp where-        pretty (QVarOp n) = ppQNameInfix n-        pretty (QConOp n) = ppQNameInfix n--ppQNameInfix :: QName -> Doc-ppQNameInfix name-        | isSymbolName (getName name) = ppQName name-        | otherwise = char '`' <> ppQName name <> char '`'--instance Pretty QName where-        pretty name = case name of-                UnQual (Symbol ('#':_)) -> char '(' <+> ppQName name <+> char ')'-                _ -> parensIf (isSymbolName (getName name)) (ppQName name)--ppQName :: QName -> Doc-ppQName (UnQual name) = ppName name-ppQName (Qual m name) = pretty m <> char '.' <> ppName name-ppQName (Special sym) = text (specialName sym)--instance Pretty Op where-        pretty (VarOp n) = ppNameInfix n-        pretty (ConOp n) = ppNameInfix n--ppNameInfix :: Name -> Doc-ppNameInfix name-        | isSymbolName name = ppName name-        | otherwise = char '`' <> ppName name <> char '`'--instance Pretty Name where-        pretty name = case name of-                Symbol ('#':_) -> char '(' <+> ppName name <+> char ')'-                _ -> parensIf (isSymbolName name) (ppName name)--ppName :: Name -> Doc-ppName (Ident s) = text s-ppName (Symbol s) = text s--instance Pretty IPName where-        pretty (IPDup s) = char '?' <> text s-        pretty (IPLin s) = char '%' <> text s--instance Pretty IPBind where-        pretty (IPBind _loc ipname exp) =-                myFsep [pretty ipname, equals, pretty exp]--instance Pretty CName where-        pretty (VarName n) = pretty n-        pretty (ConName n) = pretty n--instance Pretty SpecialCon where-        pretty sc = text $ specialName sc--isSymbolName :: Name -> Bool-isSymbolName (Symbol _) = True-isSymbolName _ = False--getName :: QName -> Name-getName (UnQual s) = s-getName (Qual _ s) = s-getName (Special Cons) = Symbol ":"-getName (Special FunCon) = Symbol "->"-getName (Special s) = Ident (specialName s)--specialName :: SpecialCon -> String-specialName UnitCon = "()"-specialName ListCon = "[]"-specialName FunCon = "->"-specialName (TupleCon b n) = "(" ++ hash ++ replicate (n-1) ',' ++ hash ++ ")"-    where hash = if b == Unboxed then "#" else ""-specialName Cons = ":"--ppContext :: Context -> Doc-ppContext []      = empty-ppContext context = mySep [parenList (map pretty context), text "=>"]---- hacked for multi-parameter type classes-instance Pretty Asst where-        pretty (ClassA a ts)   = myFsep $ ppQName a : map ppAType ts-        pretty (InfixA a op b) = myFsep $ [pretty a, ppQNameInfix op, pretty b]-        pretty (IParam i t)    = myFsep $ [pretty i, text "::", pretty t]-        pretty (EqualP t1 t2)  = myFsep $ [pretty t1, text "~", pretty t2]---- Pretty print a source location, useful for printing out error messages-instance Pretty SrcLoc where-  pretty srcLoc =-    return $ P.hsep [ colonFollow (P.text $ srcFilename srcLoc)-                    , colonFollow (P.int  $ srcLine     srcLoc)-                    , P.int $ srcColumn srcLoc-                    ]--colonFollow p = P.hcat [ p, P.colon ]---instance Pretty SrcSpan where-    pretty srcSpan =-        return $ P.hsep [ colonFollow (P.text $ srcSpanFilename srcSpan)-                        , P.hcat [ P.text "("-                                 , P.int $ srcSpanStartLine srcSpan-                                 , P.colon-                                 , P.int $ srcSpanStartColumn srcSpan-                                 , P.text ")"-                                 ]-                        , P.text "-"-                        , P.hcat [ P.text "("-                                 , P.int $ srcSpanEndLine srcSpan-                                 , P.colon-                                 , P.int $ srcSpanEndColumn srcSpan-                                 , P.text ")"-                                 ]-                        ]-------------------------------------------------------------------------- Annotated version---------------------------  Pretty-Print a Module ---------------------instance SrcInfo pos => Pretty (A.Module pos) where-        pretty (A.Module pos mbHead os imp decls) =-                markLine pos $-                myVcat $ map pretty os ++-                    (case mbHead of-                        Nothing -> id-                        Just h  -> \x -> [topLevel (pretty h) x])-                    (map pretty imp ++ map pretty decls)-        pretty (A.XmlPage pos _mn os n attrs mattr cs) =-                markLine pos $-                myVcat $ map pretty os ++-                    [let ax = maybe [] (return . pretty) mattr-                      in hcat $-                         (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):-                            map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]]-        pretty (A.XmlHybrid pos mbHead os imp decls n attrs mattr cs) =-                markLine pos $-                myVcat $ map pretty os ++ [text "<%"] ++-                    (case mbHead of-                        Nothing -> id-                        Just h  -> \x -> [topLevel (pretty h) x])-                    (map pretty imp ++ map pretty decls ++-                        [let ax = maybe [] (return . pretty) mattr-                          in hcat $-                             (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):-                                map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]])------------------------------  Module Header -------------------------------instance Pretty (A.ModuleHead l) where-    pretty (A.ModuleHead _ m mbWarn mbExportList) = mySep [-        text "module",-        pretty m,-        maybePP pretty mbWarn,-        maybePP pretty mbExportList,-        text "where"]--instance Pretty (A.WarningText l) where-    pretty = ppWarnTxt. sWarningText--instance Pretty (A.ModuleName l) where-        pretty = pretty . sModuleName--instance Pretty (A.ExportSpecList l) where-        pretty (A.ExportSpecList _ especs)  = parenList $ map pretty especs--instance Pretty (A.ExportSpec l) where-        pretty = pretty . sExportSpec--instance SrcInfo pos => Pretty (A.ImportDecl pos) where-        pretty = pretty . sImportDecl--instance Pretty (A.ImportSpecList l) where-        pretty (A.ImportSpecList _ b ispecs)  =-            (if b then text "hiding" else empty)-                <+> parenList (map pretty ispecs)--instance Pretty (A.ImportSpec l) where-        pretty = pretty . sImportSpec---------------------------  Declarations -------------------------------instance SrcInfo pos => Pretty (A.Decl pos) where-        pretty = pretty . sDecl--instance Pretty (A.DeclHead l) where-    pretty (A.DHead l n tvs)       = mySep (pretty n : map pretty tvs)-    pretty (A.DHInfix l tva n tvb) = mySep [pretty tva, pretty n, pretty tvb]-    pretty (A.DHParen l dh)        = parens (pretty dh)--instance Pretty (A.InstHead l) where-    pretty (A.IHead l qn ts)       = mySep (pretty qn : map pretty ts)-    pretty (A.IHInfix l ta qn tb)  = mySep [pretty ta, pretty qn, pretty tb]-    pretty (A.IHParen l ih)        = parens (pretty ih)--instance Pretty (A.DataOrNew l) where-        pretty = pretty . sDataOrNew--instance Pretty (A.Assoc l) where-        pretty = pretty . sAssoc--instance SrcInfo pos => Pretty (A.Match pos) where-        pretty = pretty . sMatch--instance SrcInfo loc => Pretty (A.ClassDecl loc) where-        pretty = pretty . sClassDecl--instance SrcInfo loc => Pretty (A.InstDecl loc) where-        pretty = pretty . sInstDecl--------------------------- FFI stuff --------------------------------------instance Pretty (A.Safety l) where-        pretty = pretty . sSafety--instance Pretty (A.CallConv l) where-        pretty = pretty . sCallConv--------------------------- Pragmas ----------------------------------------instance SrcInfo loc => Pretty (A.Rule loc) where-        pretty = pretty . sRule--instance Pretty (A.Activation l) where-    pretty = pretty . sActivation--instance Pretty (A.RuleVar l) where-    pretty = pretty . sRuleVar--instance SrcInfo loc => Pretty (A.ModulePragma loc) where-    pretty (A.LanguagePragma _ ns) =-        myFsep $ text "{-# LANGUAGE" : punctuate (char ',') (map pretty ns) ++ [text "#-}"]-    pretty (A.OptionsPragma _ (Just tool) s) =-        myFsep $ [text "{-# OPTIONS_" <> pretty tool, text s, text "#-}"]-    pretty (A.OptionsPragma _ _ s) =-        myFsep $ [text "{-# OPTIONS", text s, text "#-}"]-    pretty (A.AnnModulePragma _ ann) =-        myFsep $ [text "{-# ANN", pretty ann, text "#-}"]--instance SrcInfo loc => Pretty (A.Annotation loc) where-    pretty = pretty . sAnnotation--------------------------- Data & Newtype Bodies --------------------------instance Pretty (A.QualConDecl l) where-        pretty (A.QualConDecl _pos mtvs ctxt con) =-                myFsep [ppForall (fmap (map sTyVarBind) mtvs), ppContext $ maybe [] sContext ctxt, pretty con]--instance Pretty (A.GadtDecl l) where-        pretty (A.GadtDecl _pos name ty) =-                myFsep [pretty name, text "::", pretty ty]--instance Pretty (A.ConDecl l) where-        pretty = pretty . sConDecl--instance Pretty (A.FieldDecl l) where-        pretty (A.FieldDecl _ names ty) =-                myFsepSimple $ (punctuate comma . map pretty $ names) ++-                       [text "::", pretty ty]---instance Pretty (A.BangType l) where-        pretty = pretty . sBangType--instance Pretty (A.Deriving l) where-        pretty (A.Deriving _ []) = text "deriving" <+> parenList []-        pretty (A.Deriving _ [A.IHead _ d []]) = text "deriving" <+> pretty d-        pretty (A.Deriving _ ihs) = text "deriving" <+> parenList (map pretty ihs)--------------------------- Types --------------------------instance Pretty (A.Type l) where-        pretty = pretty . sType--instance Pretty (A.TyVarBind l) where-        pretty = pretty . sTyVarBind------------------------------ Kinds ------------------------------instance Pretty (A.Kind l) where-        pretty = pretty . sKind--------------------- Functional Dependencies --------------------instance Pretty (A.FunDep l) where-        pretty = pretty . sFunDep--------------------------- Expressions --------------------------instance SrcInfo loc => Pretty (A.Rhs loc) where-        pretty = pretty . sRhs--instance SrcInfo loc => Pretty (A.GuardedRhs loc) where-        pretty = pretty . sGuardedRhs--instance Pretty (A.Literal l) where-        pretty = pretty . sLiteral--instance SrcInfo loc => Pretty (A.Exp loc) where-        pretty = pretty . sExp--instance SrcInfo loc => Pretty (A.XAttr loc) where-        pretty = pretty . sXAttr--instance Pretty (A.XName l) where-        pretty = pretty . sXName----------------------- Template Haskell ---------------------------instance SrcInfo loc => Pretty (A.Bracket loc) where-        pretty = pretty . sBracket--instance SrcInfo loc => Pretty (A.Splice loc) where-        pretty = pretty . sSplice--------------------------- Patterns -------------------------------instance SrcInfo loc => Pretty (A.Pat loc) where-        pretty = pretty . sPat--instance SrcInfo loc => Pretty (A.PXAttr loc) where-        pretty = pretty . sPXAttr--instance SrcInfo loc => Pretty (A.PatField loc) where-        pretty = pretty . sPatField----------------------- Regular Patterns ---------------------------instance SrcInfo loc => Pretty (A.RPat loc) where-        pretty = pretty . sRPat--instance Pretty (A.RPatOp l) where-        pretty = pretty . sRPatOp--------------------------- Case bodies  --------------------------instance SrcInfo loc => Pretty (A.Alt loc) where-        pretty = pretty . sAlt--instance SrcInfo loc => Pretty (A.GuardedAlts loc) where-        pretty = pretty . sGuardedAlts--instance SrcInfo loc => Pretty (A.GuardedAlt loc) where-        pretty = pretty . sGuardedAlt--------------------------- Statements in monads, guards & list comprehensions ------instance SrcInfo loc => Pretty (A.Stmt loc) where-        pretty = pretty . sStmt--instance SrcInfo loc => Pretty (A.QualStmt loc) where-        pretty = pretty . sQualStmt--------------------------- Record updates-instance SrcInfo loc => Pretty (A.FieldUpdate loc) where-        pretty = pretty . sFieldUpdate--------------------------- Names --------------------------instance Pretty (A.QOp l) where-        pretty = pretty . sQOp--instance Pretty (A.QName l) where-        pretty = pretty . sQName--instance Pretty (A.Op l) where-        pretty = pretty . sOp--instance Pretty (A.Name l) where-        pretty = pretty . sName--instance Pretty (A.IPName l) where-        pretty = pretty . sIPName--instance SrcInfo loc => Pretty (A.IPBind loc) where-        pretty = pretty . sIPBind--instance Pretty (A.CName l) where-        pretty = pretty . sCName--instance Pretty (A.Context l) where-        pretty (A.CxEmpty _) = mySep [text "()", text "=>"]-        pretty (A.CxSingle _ asst) = mySep [pretty asst, text "=>"]-        pretty (A.CxTuple _ assts) = myFsep $ [parenList (map pretty assts), text "=>"]-        pretty (A.CxParen _ asst)  = parens (pretty asst)---- hacked for multi-parameter type classes-instance Pretty (A.Asst l) where-        pretty = pretty . sAsst--------------------------- pp utils --------------------------maybePP :: (a -> Doc) -> Maybe a -> Doc-maybePP pp Nothing = empty-maybePP pp (Just a) = pp a--parenList :: [Doc] -> Doc-parenList = parens . myFsepSimple . punctuate comma--hashParenList :: [Doc] -> Doc-hashParenList = hashParens . myFsepSimple . punctuate comma-  where hashParens = parens . hashes-        hashes = \doc -> char '#' <> doc <> char '#'--braceList :: [Doc] -> Doc-braceList = braces . myFsepSimple . punctuate comma--bracketList :: [Doc] -> Doc-bracketList = brackets . myFsepSimple---- Wrap in braces and semicolons, with an extra space at the start in--- case the first doc begins with "-", which would be scanned as {--flatBlock :: [Doc] -> Doc-flatBlock = braces . (space <>) . hsep . punctuate semi---- Same, but put each thing on a separate line-prettyBlock :: [Doc] -> Doc-prettyBlock = braces . (space <>) . vcat . punctuate semi---- Monadic PP Combinators -- these examine the env--blankline :: Doc -> Doc-blankline dl = do{e<-getPPEnv;if spacing e && layout e /= PPNoLayout-                              then space $$ dl else dl}-topLevel :: Doc -> [Doc] -> Doc-topLevel header dl = do-         e <- fmap layout getPPEnv-         case e of-             PPOffsideRule -> header $$ vcat dl-             PPSemiColon -> header $$ prettyBlock dl-             PPInLine -> header $$ prettyBlock dl-             PPNoLayout -> header <+> flatBlock dl--ppBody :: (PPHsMode -> Int) -> [Doc] -> Doc-ppBody f dl = do-         e <- fmap layout getPPEnv-         case e of PPOffsideRule -> indent-                   PPSemiColon   -> indentExplicit-                   _ -> flatBlock dl-                   where-                   indent  = do{i <-fmap f getPPEnv;nest i . vcat $ dl}-                   indentExplicit = do {i <- fmap f getPPEnv;-                           nest i . prettyBlock $ dl}--($$$) :: Doc -> Doc -> Doc-a $$$ b = layoutChoice (a $$) (a <+>) b--mySep :: [Doc] -> Doc-mySep = layoutChoice mySep' hsep-        where-        -- ensure paragraph fills with indentation.-        mySep' [x]    = x-        mySep' (x:xs) = x <+> fsep xs-        mySep' []     = error "Internal error: mySep"--myVcat :: [Doc] -> Doc-myVcat = layoutChoice vcat hsep--myFsepSimple :: [Doc] -> Doc-myFsepSimple = layoutChoice fsep hsep---- same, except that continuation lines are indented,--- which is necessary to avoid triggering the offside rule.-myFsep :: [Doc] -> Doc-myFsep = layoutChoice fsep' hsep-        where   fsep' [] = empty-                fsep' (d:ds) = do-                        e <- getPPEnv-                        let n = onsideIndent e-                        nest n (fsep (nest (-n) d:ds))--layoutChoice :: (a -> Doc) -> (a -> Doc) -> a -> Doc-layoutChoice a b dl = do e <- getPPEnv-                         if layout e == PPOffsideRule ||-                            layout e == PPSemiColon-                          then a dl else b dl---- Prefix something with a LINE pragma, if requested.--- GHC's LINE pragma actually sets the current line number to n-1, so--- that the following line is line n.  But if there's no newline before--- the line we're talking about, we need to compensate by adding 1.--markLine :: SrcInfo s => s -> Doc -> Doc-markLine loc doc = do-        e <- getPPEnv-        let y = startLine loc-        let line l =-              text ("{-# LINE " ++ show l ++ " \"" ++ fileName loc ++ "\" #-}")-        if linePragmas e then layoutChoice (line y $$) (line (y+1) <+>) doc-              else doc------------------------------------------------------------------------------------- Pretty-printing of internal constructs, for error messages while parsing--instance SrcInfo loc => Pretty (P.PExp loc) where-        pretty (P.Lit _ l) = pretty l-        pretty (P.InfixApp _ a op b) = myFsep [pretty a, pretty op, pretty b]-        pretty (P.NegApp _ e) = myFsep [char '-', pretty e]-        pretty (P.App _ a b) = myFsep [pretty a, pretty b]-        pretty (P.Lambda _loc expList ppBody) = myFsep $-                char '\\' : map pretty expList ++ [text "->", pretty ppBody]-        pretty (P.Let _ (A.BDecls _ declList) letBody) =-                ppLetExp declList letBody-        pretty (P.Let _ (A.IPBinds _ bindList) letBody) =-                ppLetExp bindList letBody-        pretty (P.If _ cond thenexp elsexp) =-                myFsep [text "if", pretty cond,-                        text "then", pretty thenexp,-                        text "else", pretty elsexp]-        pretty (P.Case _ cond altList) =-                myFsep [text "case", pretty cond, text "of"]-                $$$ ppBody caseIndent (map pretty altList)-        pretty (P.Do _ stmtList) =-                text "do" $$$ ppBody doIndent (map pretty stmtList)-        pretty (P.MDo _ stmtList) =-                text "mdo" $$$ ppBody doIndent (map pretty stmtList)-        pretty (P.Var _ name) = pretty name-        pretty (P.IPVar _ ipname) = pretty ipname-        pretty (P.Con _ name) = pretty name-        pretty (P.TupleSection _ mExpList) = parenList . map (maybePP pretty) $ mExpList-        pretty (P.Paren _ e) = parens . pretty $ e-        pretty (P.RecConstr _ c fieldList) =-                pretty c <> (braceList . map pretty $ fieldList)-        pretty (P.RecUpdate _ e fieldList) =-                pretty e <> (braceList . map pretty $ fieldList)-        pretty (P.List _ list) =-                bracketList . punctuate comma . map pretty $ list-        pretty (P.EnumFrom _ e) =-                bracketList [pretty e, text ".."]-        pretty (P.EnumFromTo _ from to) =-                bracketList [pretty from, text "..", pretty to]-        pretty (P.EnumFromThen _ from thenE) =-                bracketList [pretty from <> comma, pretty thenE, text ".."]-        pretty (P.EnumFromThenTo _ from thenE to) =-                bracketList [pretty from <> comma, pretty thenE,-                             text "..", pretty to]-        pretty (P.ParComp _ e qualLists) =-                bracketList (intersperse (char '|') $-                                pretty e : (punctuate comma . concatMap (map pretty) $ qualLists))-        pretty (P.ExpTypeSig _pos e ty) =-                myFsep [pretty e, text "::", pretty ty]-        pretty (P.BracketExp _ b) = pretty b-        pretty (P.SpliceExp _ s) = pretty s-        pretty (P.TypQuote _ t)  = text "\'\'" <> pretty t-        pretty (P.VarQuote _ x)  = text "\'" <> pretty x-        pretty (P.QuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")-        pretty (P.XTag _ n attrs mattr cs) =-                let ax = maybe [] (return . pretty) mattr-                 in hcat $-                     (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):-                        map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]-        pretty (P.XETag _ n attrs mattr) =-                let ax = maybe [] (return . pretty) mattr-                 in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]-        pretty (P.XPcdata _ s) = text s-        pretty (P.XExpTag _ e) =-                myFsep $ [text "<%", pretty e, text "%>"]-        pretty (P.CorePragma _ s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]-        pretty (P.SCCPragma  _ s e) = myFsep $ map text ["{-# SCC",  show s, "#-}"] ++ [pretty e]-        pretty (P.GenPragma  _ s (a,b) (c,d) e) =-                myFsep $ [text "{-# GENERATED", text $ show s,-                            int a, char ':', int b, char '-',-                            int c, char ':', int d, text "#-}", pretty e]-        pretty (P.Proc _ p e) = myFsep $ [text "proc", pretty p, text "->", pretty e]-        pretty (P.LeftArrApp _ l r)      = myFsep $ [pretty l, text "-<",  pretty r]-        pretty (P.RightArrApp _ l r)     = myFsep $ [pretty l, text ">-",  pretty r]-        pretty (P.LeftArrHighApp _ l r)  = myFsep $ [pretty l, text "-<<", pretty r]-        pretty (P.RightArrHighApp _ l r) = myFsep $ [pretty l, text ">>-", pretty r]-        pretty (P.AsPat _ name (P.IrrPat _ pat)) =-                myFsep [pretty name <> char '@', char '~' <> pretty pat]-        pretty (P.AsPat _ name pat) =-                hcat [pretty name, char '@', pretty pat]-        pretty (P.WildCard _) = char '_'-        pretty (P.IrrPat _ pat) = char '~' <> pretty pat-        pretty (P.PostOp _ e op) = pretty e <+> pretty op-        pretty (P.PreOp _ op e)  = pretty op <+> pretty e-        pretty (P.ViewPat _ e p) =-                myFsep [pretty e, text "->", pretty p]-        pretty (P.SeqRP _ rs) = myFsep $ text "(/" : map pretty rs ++ [text "/)"]-        pretty (P.GuardRP _ r gs) =-                myFsep $ text "(|" : pretty r : char '|' : map pretty gs ++ [text "|)"]-        pretty (P.EitherRP _ r1 r2) = parens . myFsep $ [pretty r1, char '|', pretty r2]-        pretty (P.CAsRP _ n (P.IrrPat _ e)) =-                myFsep [pretty n <> text "@:", char '~' <> pretty e]-        pretty (P.CAsRP _ n r) = hcat [pretty n, text "@:", pretty r]-        pretty (P.XRPats _ ps) =-                myFsep $ text "<[" : map pretty ps ++ [text "%>"]-        pretty (P.ExplTypeArg _ qn t) =-                myFsep [pretty qn, text "{|", pretty t, text "|}"]-        pretty (P.BangPat _ e) = text "!" <> pretty e--instance SrcInfo loc => Pretty (P.PFieldUpdate loc) where-        pretty (P.FieldUpdate _ name e) =-                myFsep [pretty name, equals, pretty e]-        pretty (P.FieldPun _ name) = pretty name-        pretty (P.FieldWildcard _) = text ".."--instance SrcInfo loc => Pretty (P.ParseXAttr loc) where-        pretty (P.XAttr _ n v) =-                myFsep [pretty n, char '=', pretty v]--instance SrcInfo loc => Pretty (P.PContext loc) where-        pretty (P.CxEmpty _) = mySep [text "()", text "=>"]-        pretty (P.CxSingle _ asst) = mySep [pretty asst, text "=>"]-        pretty (P.CxTuple _ assts) = myFsep $ [parenList (map pretty assts), text "=>"]-        pretty (P.CxParen _ asst)  = parens (pretty asst)--instance SrcInfo loc => Pretty (P.PAsst loc) where-        pretty (P.ClassA _ a ts)   = myFsep $ ppQName (sQName a) : map (prettyPrec prec_atype) ts-        pretty (P.InfixA _ a op b) = myFsep $ [pretty a, ppQNameInfix (sQName op), pretty b]-        pretty (P.IParam _ i t)    = myFsep $ [pretty i, text "::", pretty t]-        pretty (P.EqualP _ t1 t2)  = myFsep $ [pretty t1, text "~", pretty t2]--instance SrcInfo loc => Pretty (P.PType loc) where-        prettyPrec p (P.TyForall _ mtvs ctxt htype) = parensIf (p > 0) $-                myFsep [ppForall (fmap (map sTyVarBind) mtvs), maybePP pretty ctxt, pretty htype]-        prettyPrec p (P.TyFun _ a b) = parensIf (p > 0) $-                myFsep [prettyPrec prec_btype a, text "->", pretty b]-        prettyPrec _ (P.TyTuple _ bxd l) =-                let ds = map pretty l-                 in case bxd of-                        Boxed   -> parenList ds-                        Unboxed -> hashParenList ds-        prettyPrec _ (P.TyList _ t)  = brackets $ pretty t-        prettyPrec p (P.TyApp _ a b) =-                {--                | a == list_tycon = brackets $ pretty b         -- special case-                | otherwise = -} parensIf (p > prec_btype) $-                                    myFsep [pretty a, prettyPrec prec_atype b]-        prettyPrec _ (P.TyVar _ name) = pretty name-        prettyPrec _ (P.TyCon _ name) = pretty name-        prettyPrec _ (P.TyParen _ t) = parens (pretty t)-        prettyPrec _ (P.TyPred _ asst) = pretty asst-        prettyPrec _ (P.TyInfix _ a op b) = myFsep [pretty a, ppQNameInfix (sQName op), pretty b]-        prettyPrec _ (P.TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])+{-# LANGUAGE CPP #-}+-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.Pretty+-- Copyright   :  (c) Niklas Broberg 2004-2009,+--                (c) The GHC Team, Noel Winstanley 1997-2000+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+-- Stability   :  stable+-- Portability :  portable+--+-- Pretty printer for Haskell with extensions.+--+-----------------------------------------------------------------------------++module Language.Haskell.Exts.Pretty (+                -- * Pretty printing+                Pretty,+                prettyPrintStyleMode, prettyPrintWithMode, prettyPrint,+                -- * Pretty-printing styles (from "Text.PrettyPrint.HughesPJ")+                P.Style(..), P.style, P.Mode(..),+                -- * Haskell formatting modes+                PPHsMode(..), Indent, PPLayout(..), defaultMode+                -- * Primitive Printers+                , prettyPrim, prettyPrimWithMode+                ) where++import Language.Haskell.Exts.Syntax+import qualified Language.Haskell.Exts.ParseSyntax as P++import Language.Haskell.Exts.SrcLoc hiding (loc)++import Prelude hiding ( exp+#if MIN_VERSION_base(4,11,0)+                      , (<>)+#endif+                      )+import qualified Text.PrettyPrint as P+import Data.List (intersperse)+import Data.Maybe (isJust , fromMaybe)+#if __GLASGOW_HASKELL__ < 710+import Control.Applicative (Applicative(..), (<$>))+#endif+import qualified Control.Monad as M (ap)++infixl 5 $$$++-----------------------------------------------------------------------------++-- | Varieties of layout we can use.+data PPLayout = PPOffsideRule   -- ^ classical layout+              | PPSemiColon     -- ^ classical layout made explicit+              | PPInLine        -- ^ inline decls, with newlines between them+              | PPNoLayout      -- ^ everything on a single line+              deriving Eq++type Indent = Int++-- | Pretty-printing parameters.+--+-- /Note:/ the 'onsideIndent' must be positive and less than all other indents.+data PPHsMode = PPHsMode {+                                -- | indentation of a class or instance+                classIndent :: Indent,+                                -- | indentation of a @do@-expression+                doIndent :: Indent,+                                -- | indentation of the body of a+                                -- @case@ expression+                multiIfIndent :: Indent,+                                -- | indentation of the body of a+                                -- multi-@if@ expression+                caseIndent :: Indent,+                                -- | indentation of the declarations in a+                                -- @let@ expression+                letIndent :: Indent,+                                -- | indentation of the declarations in a+                                -- @where@ clause+                whereIndent :: Indent,+                                -- | indentation added for continuation+                                -- lines that would otherwise be offside+                onsideIndent :: Indent,+                                -- | blank lines between statements?+                spacing :: Bool,+                                -- | Pretty-printing style to use+                layout :: PPLayout,+                                -- | add GHC-style @LINE@ pragmas to output?+                linePragmas :: Bool+                }++-- | The default mode: pretty-print using the offside rule and sensible+-- defaults.+defaultMode :: PPHsMode+defaultMode = PPHsMode{+                      classIndent = 8,+                      doIndent = 3,+                      multiIfIndent = 3,+                      caseIndent = 4,+                      letIndent = 4,+                      whereIndent = 6,+                      onsideIndent = 2,+                      spacing = True,+                      layout = PPOffsideRule,+                      linePragmas = False+                      }++-- | Pretty printing monad+newtype DocM s a = DocM (s -> a)++instance Functor (DocM s) where+         fmap f xs = do x <- xs; return (f x)++instance Applicative (DocM s) where+        pure = retDocM+        (<*>) = M.ap++instance Monad (DocM s) where+        (>>=) = thenDocM+        (>>) = then_DocM++{-# INLINE thenDocM #-}+{-# INLINE then_DocM #-}+{-# INLINE retDocM #-}+{-# INLINE unDocM #-}+{-# INLINE getPPEnv #-}++thenDocM :: DocM s a -> (a -> DocM s b) -> DocM s b+thenDocM m k = DocM $ \s -> case unDocM m s of a -> unDocM (k a) s++then_DocM :: DocM s a -> DocM s b -> DocM s b+then_DocM m k = DocM $ \s -> case unDocM m s of _ -> unDocM k s++retDocM :: a -> DocM s a+retDocM a = DocM $ const a++unDocM :: DocM s a -> s -> a+unDocM (DocM f) = f++-- all this extra stuff, just for this one function.+getPPEnv :: DocM s s+getPPEnv = DocM id++-- So that pp code still looks the same+-- this means we lose some generality though++-- | The document type produced by these pretty printers uses a 'PPHsMode'+-- environment.+type Doc = DocM PPHsMode P.Doc++-- | Things that can be pretty-printed, including all the syntactic objects+-- in "Language.Haskell.Exts.Syntax".+class Pretty a where+        -- | Pretty-print something in isolation.+        pretty :: a -> Doc+        -- | Pretty-print something in a precedence context.+        prettyPrec :: Int -> a -> Doc+        pretty = prettyPrec 0+        prettyPrec _ = pretty++-- The pretty printing combinators++empty :: Doc+empty = return P.empty++nest :: Int -> Doc -> Doc+nest i m = m >>= return . P.nest i+++-- Literals++text :: String -> Doc+text = return . P.text++char :: Char -> Doc+char = return . P.char++int :: Int -> Doc+int = return . P.int++integer :: Integer -> Doc+integer = return . P.integer++float :: Float -> Doc+float = return . P.float++double :: Double -> Doc+double = return . P.double++-- rational :: Rational -> Doc+-- rational = return . P.rational++-- Simple Combining Forms++parens, brackets, braces, doubleQuotes :: Doc -> Doc+parens d = d >>= return . P.parens+brackets d = d >>= return . P.brackets+braces d = d >>= return . P.braces+-- quotes :: Doc -> Doc+-- quotes d = d >>= return . P.quotes+doubleQuotes d = d >>= return . P.doubleQuotes++parensIf :: Bool -> Doc -> Doc+parensIf True = parens+parensIf False = id++-- Constants++semi,comma,space,equals :: Doc+semi = return P.semi+comma = return P.comma+-- colon :: Doc+-- colon = return P.colon+space = return P.space+equals = return P.equals++{-+lparen,rparen,lbrack,rbrack,lbrace,rbrace :: Doc+lparen = return  P.lparen+rparen = return  P.rparen+lbrack = return  P.lbrack+rbrack = return  P.rbrack+lbrace = return  P.lbrace+rbrace = return  P.rbrace+-}++-- Combinators++(<>),(<+>),($$) :: Doc -> Doc -> Doc+aM <> bM = do{a<-aM;b<-bM;return (a P.<> b)}+aM <+> bM = do{a<-aM;b<-bM;return (a P.<+> b)}+aM $$ bM = do{a<-aM;b<-bM;return (a P.$$ b)}+($+$) :: Doc -> Doc -> Doc+aM $+$ bM = do{a<-aM;b<-bM;return (a P.$+$ b)}++hcat,hsep,vcat,fsep :: [Doc] -> Doc+hcat dl = sequence dl >>= return . P.hcat+hsep dl = sequence dl >>= return . P.hsep+vcat dl = sequence dl >>= return . P.vcat+-- sep, cat, fcat :: [Doc] -> Doc+-- sep dl = sequence dl >>= return . P.sep+-- cat dl = sequence dl >>= return . P.cat+fsep dl = sequence dl >>= return . P.fsep+-- fcat dl = sequence dl >>= return . P.fcat++-- Some More++-- hang :: Doc -> Int -> Doc -> Doc+-- hang dM i rM = do{d<-dM;r<-rM;return $ P.hang d i r}++-- Yuk, had to cut-n-paste this one from Pretty.hs+punctuate :: Doc -> [Doc] -> [Doc]+punctuate _ []     = []+punctuate p (d1:ds) = go d1 ds+                   where+                     go d [] = [d]+                     go d (e:es) = (d <> p) : go e es++-- | render the document with a given style and mode.+renderStyleMode :: P.Style -> PPHsMode -> Doc -> String+renderStyleMode ppStyle ppMode d = P.renderStyle ppStyle . unDocM d $ ppMode++-- | render the document with a given mode.+-- renderWithMode :: PPHsMode -> Doc -> String+-- renderWithMode = renderStyleMode P.style++-- | render the document with 'defaultMode'.+-- render :: Doc -> String+-- render = renderWithMode defaultMode++-- | pretty-print with a given style and mode.+prettyPrintStyleMode :: Pretty a => P.Style -> PPHsMode -> a -> String+prettyPrintStyleMode ppStyle ppMode = renderStyleMode ppStyle ppMode . pretty++-- | pretty-print with the default style and a given mode.+prettyPrintWithMode :: Pretty a => PPHsMode -> a -> String+prettyPrintWithMode = prettyPrintStyleMode P.style++-- | pretty-print with the default style and 'defaultMode'.+prettyPrint :: Pretty a => a -> String+prettyPrint = prettyPrintWithMode defaultMode++-- fullRenderWithMode :: PPHsMode -> P.Mode -> Int -> Float ->+--                       (P.TextDetails -> a -> a) -> a -> Doc -> a+-- fullRenderWithMode ppMode m i f fn e mD =+--                   P.fullRender m i f fn e $ (unDocM mD) ppMode+++-- fullRender :: P.Mode -> Int -> Float -> (P.TextDetails -> a -> a)+--               -> a -> Doc -> a+-- fullRender = fullRenderWithMode defaultMode++-- | pretty-print with the default style and 'defaultMode'.+prettyPrim :: Pretty a => a -> P.Doc+prettyPrim = prettyPrimWithMode defaultMode++-- | pretty-print with the default style and a given mode.+prettyPrimWithMode :: Pretty a => PPHsMode -> a -> P.Doc+prettyPrimWithMode pphs doc = unDocM (pretty doc) pphs+++-------------------------  Pretty-Print a Module --------------------+{-+instance  Pretty (Module l) where+        pretty (Module pos m os mbWarn mbExports imp decls) =+                markLine pos $ (myVcat $ map pretty os) $$+                myVcat (+                    (if m == ModuleName "" then id+                     else \x -> [topLevel (ppModuleHeader m mbWarn mbExports) x])+                    (map pretty imp +++                      ppDecls (m /= ModuleName "" ||+                               not (null imp) ||+                               not (null os))+                              decls]-}++--------------------------  Module Header ------------------------------+instance Pretty (ModuleHead l) where+  pretty (ModuleHead _ m mbWarn mbExportList) =+    mySep [+        text "module",+        pretty m,+        maybePP ppWarnTxt mbWarn,+        maybePP pretty mbExportList,+        text "where"]++instance Pretty (ExportSpecList l) where+        pretty (ExportSpecList _ especs)  = parenList $ map pretty especs++ppWarnTxt :: WarningText l -> Doc+ppWarnTxt (DeprText _ s) = mySep [text "{-# DEPRECATED", text (show s), text "#-}"]+ppWarnTxt (WarnText _ s) = mySep [text "{-# WARNING",    text (show s), text "#-}"]++instance  Pretty (ModuleName l) where+        pretty (ModuleName _ modName) = text modName++instance  Pretty (Namespace l) where+        pretty NoNamespace {}     = empty+        pretty TypeNamespace {}   = text "type"+        pretty PatternNamespace {} = text "pattern"++instance  Pretty (ExportSpec l) where+        pretty (EVar _ name)                = pretty name+        pretty (EAbs _ ns name)             = pretty ns <+> pretty name+        pretty (EThingWith _ wc name nameList) =+          let prettyNames = map pretty nameList+              names = case wc of+                        NoWildcard {} -> prettyNames+                        EWildcard _ n  ->+                          let (before,after) = splitAt n prettyNames+                          in before ++ [text ".."] ++ after+           in pretty name <> (parenList names)+        pretty (EModuleContents _ m)        = text "module" <+> pretty m++instance  Pretty (ImportDecl l) where+        pretty (ImportDecl _ m qual src safe mbPkg mbName mbSpecs) =+                mySep [text "import",+                       if src  then text "{-# SOURCE #-}" else empty,+                       if safe then text "safe" else empty,+                       if qual then text "qualified" else empty,+                       maybePP (\s -> text (show s)) mbPkg,+                       pretty m,+                       maybePP (\m' -> text "as" <+> pretty m') mbName,+                       maybePP pretty mbSpecs]++instance Pretty (ImportSpecList l) where+        pretty (ImportSpecList _ b ispecs)  =+            (if b then text "hiding" else empty)+                <+> parenList (map pretty ispecs)++instance  Pretty (ImportSpec l) where+        pretty (IVar _ name  )              = pretty name+        pretty (IAbs _ ns name)             = pretty ns <+> pretty name+        pretty (IThingAll _ name)           = pretty name <> text "(..)"+        pretty (IThingWith _ name nameList) =+                pretty name <> (parenList . map pretty $ nameList)++instance  Pretty (TypeEqn l) where+        pretty (TypeEqn _ pat eqn) = mySep [pretty pat, equals, pretty eqn]++-------------------------  Declarations ------------------------------+class Pretty a => PrettyDeclLike a where+  wantsBlankline :: a -> Bool++instance  PrettyDeclLike (Decl l) where+  wantsBlankline (FunBind {}) = False+  wantsBlankline (PatBind {}) = False+  wantsBlankline _ = True++condBlankline :: PrettyDeclLike a => a -> Doc+condBlankline d = (if wantsBlankline d then blankline else id) $ pretty d++ppDecls :: PrettyDeclLike a => Bool -> [a] -> [Doc]+ppDecls True  ds     = map condBlankline ds+ppDecls False (d:ds) = pretty d : map condBlankline ds+ppDecls _ _ = []+--ppDecls = map condBlankline++instance Pretty (InjectivityInfo l) where+  pretty (InjectivityInfo _ from to) =+    char '|' <+> pretty from <+> text "->" <+> hsep (map pretty to)++instance Pretty (ResultSig l) where+  pretty (KindSig _ kind) = text "::" <+> pretty kind+  pretty (TyVarSig _ tv)  = char '='  <+> pretty tv++instance  Pretty (Decl l) where+        pretty (TypeDecl _ dHead htype) =+                mySep ( [text "type", pretty dHead]+                        ++ [equals, pretty htype])++        pretty (DataDecl _ don context dHead constrList derives) =+                mySep ( [pretty don, maybePP pretty context, pretty dHead])++                  <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))+                                             (map pretty constrList))+                        $$$ ppIndent letIndent (map pretty derives))++        pretty (GDataDecl _ don context dHead optkind gadtList derives) =+                mySep ( [pretty don, maybePP pretty context, pretty dHead]+                        ++ ppOptKind optkind ++ [text "where"])+                        $$$ ppBody classIndent (map pretty gadtList)+                        $$$ ppIndent letIndent (map pretty derives)++        pretty (TypeFamDecl _ dHead optkind optinj) =+                mySep ([text "type", text "family", pretty dHead+                       , maybePP pretty optkind, maybePP pretty optinj])++        pretty (ClosedTypeFamDecl _ dHead optkind optinj eqns) =+                mySep ([text "type", text "family", pretty dHead+                       , maybePP pretty optkind ,maybePP pretty optinj+                       , text "where"]) $$$ ppBody classIndent (map pretty eqns)++        pretty (DataFamDecl _ context dHead optkind) =+                mySep ( [text "data", text "family", maybePP pretty context, pretty dHead+                        , maybePP pretty optkind])++        pretty (TypeInsDecl _ ntype htype) =+                mySep [text "type", text "instance", pretty ntype, equals, pretty htype]++        pretty (DataInsDecl _ don ntype constrList derives) =+                mySep [pretty don, text "instance ", pretty ntype]+                        <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))+                                                   (map pretty constrList))+                              $$$ ppIndent letIndent (map pretty derives))++        pretty (GDataInsDecl _ don ntype optkind gadtList derives) =+                mySep ( [pretty don, text "instance ", pretty ntype]+                        ++ ppOptKind optkind ++ [text "where"])+                        $$$ ppBody classIndent (map pretty gadtList)+                        $$$ ppIndent letIndent (map pretty derives)++        --m{spacing=False}+        -- special case for empty class declaration+        pretty (ClassDecl _ context dHead fundeps Nothing) =+                mySep ( [text "class", maybePP pretty context, pretty dHead+                        , ppFunDeps fundeps])+        pretty (ClassDecl _ context dHead fundeps declList) =+                mySep ( [text "class", maybePP pretty context, pretty dHead+                        , ppFunDeps fundeps, text "where"])+                $$$ ppBody classIndent (fromMaybe [] ((ppDecls False) <$> declList))++        -- m{spacing=False}+        -- special case for empty instance  declaration+        pretty (InstDecl _ moverlap iHead Nothing) =+                  mySep ( [text "instance", maybePP pretty moverlap, pretty iHead])+        pretty (InstDecl _ overlap iHead declList) =+                mySep ( [ text "instance", maybePP pretty overlap+                           , pretty iHead, text "where"])+                $$$ ppBody classIndent (fromMaybe [] ((ppDecls False) <$> declList))++        pretty (DerivDecl _ mds overlap irule) =+                  mySep ( [ text "deriving"+                          , maybePP pretty mds+                          , text "instance"+                          , maybePP pretty overlap+                          , pretty irule])+        pretty (DefaultDecl _ htypes) =+                text "default" <+> parenList (map pretty htypes)++        pretty (SpliceDecl _ splice) =+                pretty splice++        pretty (TSpliceDecl _ splice) =+                pretty splice++        pretty (TypeSig _ nameList qualType) =+                mySep ((punctuate comma . map pretty $ nameList)+                      ++ [text "::", pretty qualType])++        --  Req can be ommitted if it is empty+        --  We must print prov if req is nonempty+        pretty (PatSynSig _ ns mtvs prov mtvs2 req t) =+                let contexts = [maybePP pretty prov, ppForall mtvs2, maybePP pretty req]+                 in+                  mySep ( [text "pattern" ]+                           ++ punctuate comma (map pretty ns)+                           ++ [ text "::", ppForall mtvs] +++                          contexts ++ [pretty t] )+++        pretty (FunBind _ matches) = do+                e <- fmap layout getPPEnv+                case e of PPOffsideRule -> foldr ($$$) empty (map pretty matches)+                          _ -> hsep $ punctuate semi (map pretty matches)++        pretty (PatBind _ pat rhs whereBinds) =+                myFsep [pretty pat, pretty rhs] $$$ ppWhere whereBinds++        pretty (InfixDecl _ assoc prec opList) =+                mySep ([pretty assoc, maybePP int prec]+                       ++ (punctuate comma . map pretty $ opList))++        pretty (PatSyn _ pat rhs dir) =+                let sep = case dir of+                            ImplicitBidirectional {}   -> "="+                            ExplicitBidirectional {}   -> "<-"+                            Unidirectional {}          -> "<-"+                in+                 (mySep ([text "pattern", pretty pat, text sep, pretty rhs])) $$$+                    (case dir of+                      ExplicitBidirectional _ ds ->+                        nest 2 (text "where" $$$ ppBody whereIndent (ppDecls False ds))+                      _ -> empty)++        pretty (ForImp _ cconv saf str name typ) =+                mySep [text "foreign import", pretty cconv, maybePP pretty saf,+                       maybe empty (text . show) str, pretty name, text "::", pretty typ]++        pretty (ForExp _ cconv str name typ) =+                mySep [text "foreign export", pretty cconv,+                       text (show str), pretty name, text "::", pretty typ]++        pretty (RulePragmaDecl _ rules) =+                myVcat $ text "{-# RULES" : map pretty rules ++ [text " #-}"]++        pretty (DeprPragmaDecl _ deprs) =+                myVcat $ text "{-# DEPRECATED" : map ppWarnDepr deprs ++ [text " #-}"]++        pretty (WarnPragmaDecl _ deprs) =+                myVcat $ text "{-# WARNING" : map ppWarnDepr deprs ++ [text " #-}"]++        pretty (InlineSig _ inl activ name) =+                mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE")+                      , maybePP pretty activ, pretty name, text "#-}"]++        pretty (InlineConlikeSig _ activ name) =+                mySep [ text "{-# INLINE CONLIKE", maybePP pretty activ+                      , pretty name, text "#-}"]++        pretty (SpecSig _ activ name types) =+                mySep $ [text "{-# SPECIALISE", maybePP pretty activ+                        , pretty name, text "::"]+                         ++ punctuate comma (map pretty types) ++ [text "#-}"]++        pretty (SpecInlineSig _ inl activ name types) =+                mySep $ [text "{-# SPECIALISE", text (if inl then "INLINE" else "NOINLINE"),+                        maybePP pretty activ, pretty name, text "::"]+                        ++ (punctuate comma $ map pretty types) ++ [text "#-}"]++        pretty (InstSig _ irule) =+                mySep $ [ text "{-# SPECIALISE", text "instance", pretty irule+                        , text "#-}"]++        pretty (AnnPragma _ annp) =+                mySep [text "{-# ANN", pretty annp, text "#-}"]++        pretty (MinimalPragma _ b) =+                let bs = case b of { Just b' -> pretty b'; _ -> empty }+                in myFsep [text "{-# MINIMAL", bs, text "#-}"]++        pretty (RoleAnnotDecl _ qn rs) =+                mySep ( [text "type", text "role", pretty qn]+                        ++ map pretty rs )+        pretty (CompletePragma _ cls opt_ts) =+                let cls_p = punctuate comma $ map pretty cls+                    ts_p  = maybe empty (\tc -> text "::" <+> pretty tc) opt_ts+                in myFsep $ [text "{-# COMPLETE"] ++ cls_p ++ [ts_p, text "#-}"]++instance Pretty (InstRule l) where+    pretty (IRule _ tvs mctxt qn)  =+            mySep [ppForall tvs+                  , maybePP pretty mctxt, pretty qn]+    pretty (IParen _ ih)        = parens (pretty ih)++instance  Pretty (InstHead l) where+    pretty (IHCon _ qn)          = pretty qn+    pretty (IHInfix _ ta qn)     = mySep [pretty ta, pretty qn]+    pretty (IHParen _ ih)        = parens (pretty ih)+    pretty (IHApp _ ih t)        = myFsep [pretty ih, pretty t]+++instance  Pretty (Annotation l) where+        pretty (Ann _ n e) = myFsep [pretty n, pretty e]+        pretty (TypeAnn _ n e) = myFsep [text "type", pretty n, pretty e]+        pretty (ModuleAnn _ e) = myFsep [text "module", pretty e]++instance  Pretty (BooleanFormula l) where+        pretty (VarFormula _ n)   = pretty n+        pretty (AndFormula _ bs)  = myFsep $ punctuate (text " ,") $ map pretty bs+        pretty (OrFormula _ bs)   = myFsep $ punctuate (text " |") $ map pretty bs+        pretty (ParenFormula _ b) = parens $ pretty b++instance  Pretty (Role l) where+        pretty RoleWildcard{}     = char '_'+        pretty Nominal{}          = text "nominal"+        pretty Representational{} = text "representational"+        pretty Phantom{}          = text "phantom"++instance  Pretty (DataOrNew l) where+        pretty DataType{} = text "data"+        pretty NewType{}  = text "newtype"++instance  Pretty (Assoc l) where+        pretty AssocNone{}  = text "infix"+        pretty AssocLeft{}  = text "infixl"+        pretty AssocRight{} = text "infixr"++instance  Pretty (Match l) where+        pretty (InfixMatch _ l op rs rhs wbinds) =+          let+              lhs = case rs of+                      []  -> [] -- Should never reach+                      (r:rs') ->+                        let hd = [prettyPrec 2 l, ppNameInfix op, prettyPrec 2 r]+                        in if null rs'+                            then hd+                            else parens (myFsep hd) : map (prettyPrec 3) rs'++          in myFsep (lhs ++ [pretty rhs]) $$$ ppWhere wbinds+        pretty (Match _ f ps rhs whereBinds) =+                myFsep (pretty f : map (prettyPrec 3) ps ++ [pretty rhs])+                $$$ ppWhere whereBinds++ppWhere :: Maybe (Binds l) -> Doc+ppWhere Nothing            = empty+ppWhere (Just (BDecls _ l))  = nest 2 (text "where" $$$ ppBody whereIndent (ppDecls False l))+ppWhere (Just (IPBinds _ b)) = nest 2 (text "where" $$$ ppBody whereIndent (ppDecls False b))++instance  PrettyDeclLike (ClassDecl l) where+    wantsBlankline (ClsDecl _ d) = wantsBlankline d+    wantsBlankline (ClsDefSig {}) = True+    wantsBlankline _ = False++instance  Pretty (ClassDecl l) where+    pretty (ClsDecl _ decl) = pretty decl++    pretty (ClsDataFam _ context declHead optkind) =+                mySep ( [text "data", maybePP pretty context, pretty declHead+                        , maybePP pretty optkind])++    pretty (ClsTyFam _ declHead optkind optinj) =+                mySep ( [text "type", pretty declHead+                        , maybePP pretty optkind, maybePP pretty optinj])++    pretty (ClsTyDef _ ntype) =+                mySep [text "type", pretty ntype]++    pretty (ClsDefSig _ name typ) =+                mySep [+                    text "default",+                    pretty name,+                    text "::",+                    pretty typ]++instance Pretty (DeclHead l) where+  pretty (DHead _ n) = pretty n+  pretty (DHInfix _ tv n) =  pretty tv <+> ppNameInfix n+  pretty (DHParen _ d) = parens (pretty d)+  pretty (DHApp _ dh tv) = pretty dh <+> pretty tv++++instance  PrettyDeclLike (InstDecl l) where+    wantsBlankline (InsDecl _ d) = wantsBlankline d+    wantsBlankline _ = False++instance  Pretty (InstDecl l) where+        pretty (InsDecl _ decl) = pretty decl++        pretty (InsType _ ntype htype) =+                mySep [text "type", pretty ntype, equals, pretty htype]++        pretty (InsData _ don ntype constrList derives) =+                mySep [pretty don, pretty ntype]+                        <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))+                                                   (map pretty constrList))+                              $$$ ppIndent letIndent (map pretty derives))++        pretty (InsGData _ don ntype optkind gadtList derives) =+                mySep ( [pretty don, pretty ntype]+                        ++ ppOptKind optkind ++ [text "where"])+                        $$$ ppBody classIndent (map pretty gadtList)+                        $$$ ppIndent letIndent (map pretty derives)++--        pretty (InsInline loc inl activ name) =+--                markLine loc $+--                mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE"), pretty activ, pretty name, text "#-}"]+++------------------------- FFI stuff -------------------------------------+instance  Pretty (Safety l) where+        pretty PlayRisky {}        = text "unsafe"+        pretty (PlaySafe _ b)      = text $ if b then "threadsafe" else "safe"+        pretty PlayInterruptible {} = text "interruptible"++instance  Pretty (CallConv l) where+        pretty StdCall {}    = text "stdcall"+        pretty CCall {}     = text "ccall"+        pretty CPlusPlus {}  = text "cplusplus"+        pretty DotNet {}     = text "dotnet"+        pretty Jvm {}        = text "jvm"+        pretty Js {}         = text "js"+        pretty JavaScript {} = text "javascript"+        pretty CApi {}       = text "capi"++------------------------- Pragmas ---------------------------------------+ppWarnDepr :: ([Name l], String) -> Doc+ppWarnDepr (names, txt) = mySep $ punctuate comma (map pretty names) ++ [text $ show txt]++instance  Pretty (Rule l) where+        pretty (Rule _ tag activ rvs rhs lhs) =+            mySep [text $ show tag, maybePP pretty activ,+                        maybePP ppRuleVars rvs,+                        pretty rhs, char '=', pretty lhs]++ppRuleVars :: [RuleVar l] -> Doc+ppRuleVars []  = empty+ppRuleVars rvs = mySep $ text "forall" : map pretty rvs ++ [char '.']++instance  Pretty (Activation l) where+    pretty (ActiveFrom _ i)  = char '['  <> int i <> char ']'+    pretty (ActiveUntil _ i) = text "[~" <> int i <> char ']'++instance  Pretty (Overlap l) where+    pretty Overlap {}   = text "{-# OVERLAP #-}"+    pretty Overlaps {}   = text "{-# OVERLAPS #-}"+    pretty Overlapping {}   = text "{-# OVERLAPPING #-}"+    pretty Overlappable {}   = text "{-# OVERLAPPABLE #-}"+    pretty NoOverlap {}  = text "{-# NO_OVERLAP #-}"+    pretty Incoherent {} = text "{-# INCOHERENT #-}"++instance  Pretty (RuleVar l) where+    pretty (RuleVar _ n) = pretty n+    pretty (TypedRuleVar _ n t) = parens $ mySep [pretty n, text "::", pretty t]++-- Spaces are stripped from the pragma text but other whitespace+-- is not.+ppOptionsPragma :: Doc -> String -> Doc+ppOptionsPragma opt s =+  case s of+    ('\n':_) -> opt <> text s <> text "#-}"+    _ ->  myFsep [opt, text s <> text "#-}"]++instance  Pretty (ModulePragma l) where+    pretty (LanguagePragma _ ns) =+        myFsep $ text "{-# LANGUAGE" : punctuate (char ',') (map pretty ns) ++ [text "#-}"]+    pretty (OptionsPragma _ (Just tool) s) =+        ppOptionsPragma (text "{-# OPTIONS_" <> pretty tool) s+    pretty (OptionsPragma _ _ s) =+        ppOptionsPragma (text "{-# OPTIONS") s+    pretty (AnnModulePragma _ mann) =+        myFsep [text "{-# ANN", pretty mann, text "#-}"]+++instance Pretty Tool where+    pretty (UnknownTool s) = text s+    pretty t               = text $ show t++------------------------- Data & Newtype Bodies -------------------------+instance  Pretty (QualConDecl l) where+        pretty (QualConDecl _pos tvs ctxt con) =+                myFsep [ppForall tvs, maybePP pretty ctxt, pretty con]++instance  Pretty (GadtDecl l) where+        pretty (GadtDecl _pos name tvs ctxt names ty) =+            case names of+                Nothing ->+                    myFsep [pretty name, text "::", pretty ty]+                Just ts' ->+                    myFsep [pretty name, text "::" , ppForall tvs, maybePP pretty ctxt,+                         braceList . map pretty $ ts', text "->", pretty ty]++instance  Pretty (ConDecl l) where+        pretty (RecDecl _ name fieldList) =+                pretty name <> braceList (map pretty fieldList)++{-        pretty (ConDecl name@(Symbol _) [l, r]) =+                myFsep [prettyPrec prec_btype l, ppName name,+                        prettyPrec prec_btype r] -}+        pretty (ConDecl _ name typeList) =+                mySep $ pretty name : map (prettyPrec prec_atype) typeList+        pretty (InfixConDecl _ l name r) =+                myFsep [prettyPrec prec_btype l, ppNameInfix name,+                         prettyPrec prec_btype r]+++instance Pretty (FieldDecl l) where+  pretty (FieldDecl _ names ty) =+        myFsepSimple $ (punctuate comma . map pretty $ names) +++                       [text "::", pretty ty]++instance  Pretty (BangType l) where+        pretty BangedTy {}  = char '!'+        pretty LazyTy {}    = char '~'+        pretty NoStrictAnnot {} = empty++instance Pretty (Unpackedness l) where+        pretty Unpack {}  = text "{-# UNPACK #-} "+        pretty NoUnpack {} = text "{-# NOUNPACK #-} "+        pretty NoUnpackPragma {} = empty++instance Pretty (Deriving l) where+  pretty (Deriving _ mds d) =+    hsep [ text "deriving"+         , pp_strat_before+         , pp_dct+         , pp_strat_after ]+    where+      pp_dct =+        case d of+          [d'] -> pretty d'+          _    -> parenList (map pretty d)++      -- @via@ is unique in that in comes /after/ the class being derived,+      -- so we must special-case it.+      (pp_strat_before, pp_strat_after) =+        case mds of+          Just (via@DerivVia{}) -> (empty, pretty via)+          _                     -> (maybePP pretty mds, empty)++instance Pretty (DerivStrategy l) where+  pretty ds =+    case ds of+      DerivStock _    -> text "stock"+      DerivAnyclass _ -> text "anyclass"+      DerivNewtype _  -> text "newtype"+      DerivVia _ ty   -> text "via" <+> pretty ty++------------------------- Types -------------------------+ppBType :: Type l -> Doc+ppBType = prettyPrec prec_btype++ppAType :: Type l -> Doc+ppAType = prettyPrec prec_atype++-- precedences for types+prec_btype, prec_atype :: Int+prec_btype = 1  -- left argument of ->,+                -- or either argument of an infix data constructor+prec_atype = 2  -- argument of type or data constructor, or of a class++instance  Pretty (Type l) where+        prettyPrec p (TyForall _ mtvs ctxt htype) = parensIf (p > 0) $+                myFsep [ppForall mtvs, maybePP pretty ctxt, pretty htype]+        prettyPrec _ (TyStar _) = text "*"+        prettyPrec p (TyFun _ a b) = parensIf (p > 0) $+                myFsep [ppBType a, text "->", pretty b]+        prettyPrec _ (TyTuple _ bxd l) =+                let ds = map pretty l+                 in case bxd of+                        Boxed   -> parenList ds+                        Unboxed -> hashParenList ds+        prettyPrec _ (TyUnboxedSum _ es) = unboxedSumType (map pretty es)++        prettyPrec _ (TyList _ t)  = brackets $ pretty t+        prettyPrec _ (TyParArray _ t) = bracketColonList [pretty t]+        prettyPrec p (TyApp _ a b) =+                {-+                | a == list_tycon = brackets $ pretty b         -- special case+                | otherwise = -} parensIf (p > prec_btype) $+                                    myFsep [pretty a, ppAType b]+        prettyPrec _ (TyVar _ name) = pretty name+        prettyPrec _ (TyCon _ name) = pretty name+        prettyPrec _ (TyParen _ t) = parens (pretty t)+        prettyPrec _ (TyInfix _ a op b) = myFsep [pretty a, pretty op, pretty b]+        prettyPrec _ (TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])+        prettyPrec _ (TyPromoted _ p) = pretty p+        prettyPrec p (TyEquals _ a b) = parensIf (p > 0) (myFsep [pretty a, text "~", pretty b])+        prettyPrec _ (TySplice _ s) = pretty s+        prettyPrec _ (TyBang _ b u t) = pretty u <> pretty b <> prettyPrec prec_atype t+        prettyPrec _ (TyWildCard _ mn) = char '_' <> maybePP pretty mn+        prettyPrec _ (TyQuasiQuote _ n qt) = text ("[" ++ n ++ "|" ++ qt ++ "|]")++instance Pretty (MaybePromotedName l) where+  pretty (PromotedName _ q) = char '\'' <> ppQNameInfix q+  pretty (UnpromotedName _ q) = ppQNameInfix q+++instance  Pretty (Promoted l) where+  pretty p =+    case p of+      PromotedInteger _ n _ -> integer n+      PromotedString _ s _ -> doubleQuotes $ text s+      PromotedCon _ hasQuote qn ->+        addQuote hasQuote (pretty qn)+      PromotedList _ hasQuote list ->+        addQuote hasQuote $ brackets . addSpace list . prettyList $ list+      PromotedTuple _ list ->+        addQuote True $ parens . addSpace list . prettyList $ list+      PromotedUnit {} -> addQuote True $ text "()"+    where+      addQuote True doc = char '\'' <> doc+      addQuote False doc = doc++      checkQuote (PromotedCon _ q _) = q+      checkQuote (PromotedList _ q _) = q+      checkQuote (PromotedTuple _ _) = True+      checkQuote _ = False++      addSpace (TyPromoted _ l0:_) | checkQuote l0 = (space <>)+      addSpace _ = id++      prettyList = myFsepSimple . punctuate comma . map pretty+++instance  Pretty (TyVarBind l) where+        pretty (KindedVar _ var kind) = parens $ myFsep [pretty var, text "::", pretty kind]+        pretty (UnkindedVar _ var)    = pretty var++ppForall :: Maybe [TyVarBind l] -> Doc+ppForall Nothing   = empty+ppForall (Just []) = empty+ppForall (Just vs) =    myFsep (text "forall" : map pretty vs ++ [char '.'])++---------------------------- Kinds ----------------------------++ppOptKind :: Maybe (Kind l) -> [Doc]+ppOptKind Nothing  = []+ppOptKind (Just k) = [text "::", pretty k]++------------------- Functional Dependencies -------------------+instance  Pretty (FunDep l) where+        pretty (FunDep _ from to) =+                myFsep $ map pretty from ++ [text "->"] ++ map pretty to+++ppFunDeps :: [FunDep l] -> Doc+ppFunDeps []  = empty+ppFunDeps fds = myFsep $ (char '|':) . punctuate comma . map pretty $ fds++------------------------- Expressions -------------------------+instance  Pretty (Rhs l) where+        pretty (UnGuardedRhs _ e) = equals <+> pretty e+        pretty (GuardedRhss _ guardList) = myVcat . map pretty $ guardList++instance  Pretty (GuardedRhs l) where+        pretty (GuardedRhs _pos guards ppBody') =+                myFsep $ [char '|'] ++ (punctuate comma . map pretty $ guards) ++ [equals, pretty ppBody']++newtype GuardedAlts l = GuardedAlts (Rhs l)+newtype GuardedAlt l = GuardedAlt (GuardedRhs l)++instance  Pretty (GuardedAlts l) where+        pretty (GuardedAlts (UnGuardedRhs _ e)) = text "->" <+> pretty e+        pretty (GuardedAlts (GuardedRhss _ guardList)) = myVcat . map (pretty . GuardedAlt) $ guardList++instance  Pretty (GuardedAlt l) where+        pretty (GuardedAlt (GuardedRhs _pos guards ppBody')) =+                myFsep $ [char '|'] ++ (punctuate comma . map pretty $ guards) ++ [text "->", pretty ppBody']++instance  Pretty (Literal l) where+        pretty (Int _ i _)        = integer i+        pretty (Char _ c _)       = text (show c)+        pretty (String _ s _)     = text (show s)+        pretty (Frac _ r _)       = double (fromRational r)+        -- GHC unboxed literals:+        pretty (PrimChar _ c _)   = text (show c)           <> char '#'+        pretty (PrimString _ s _) = text (show s)           <> char '#'+        pretty (PrimInt _ i _)    = integer i               <> char '#'+        pretty (PrimWord _ w _)   = integer w               <> text "##"+        pretty (PrimFloat _ r _)  = float  (fromRational r) <> char '#'+        pretty (PrimDouble _ r _) = double (fromRational r) <> text "##"++instance  Pretty (Exp l) where+        prettyPrec _ (Lit _ l) = pretty l+        -- lambda stuff+        -- WARNING: This stuff is fragile. See #152 for one example of how+        -- things can break.+        prettyPrec p (InfixApp _ a op b) = parensIf (p > 2) $ myFsep [prettyPrec 1 a, pretty op, prettyPrec 1 b]+        prettyPrec p (NegApp _ e) = parensIf (p > 0) $ char '-' <> prettyPrec 2 e+        prettyPrec p (App _ a b) = parensIf (p > 3) $ myFsep [prettyPrec 3 a, prettyPrec 4 b]+        prettyPrec p (Lambda _loc patList ppBody') = parensIf (p > 1) $ myFsep $+                char '\\' : map (prettyPrec 3) patList ++ [text "->", pretty ppBody']+        -- keywords+        -- two cases for lets+        prettyPrec p (Let _ (BDecls _ declList) letBody) =+                parensIf (p > 1) $ ppLetExp declList letBody+        prettyPrec p (Let _ (IPBinds _ bindList) letBody) =+                parensIf (p > 1) $ ppLetExp bindList letBody++        prettyPrec p (If _ cond thenexp elsexp) = parensIf (p > 1) $+                myFsep [text "if", pretty cond,+                        text "then", pretty thenexp,+                        text "else", pretty elsexp]+        prettyPrec p (MultiIf _ alts) = parensIf (p > 1) $+                text "if"+                $$$ ppBody multiIfIndent (map (pretty . GuardedAlt) alts)+        prettyPrec p (Case _ cond altList) = parensIf (p > 1) $+                myFsep ([text "case", pretty cond, text "of"] +++                       if null altList then [text "{", text "}"] else [])+                $$$ ppBody caseIndent (map pretty altList)+        prettyPrec p (Do _ stmtList) = parensIf (p > 1) $+                text "do" $$$ ppBody doIndent (map pretty stmtList)+        prettyPrec p (MDo _ stmtList) = parensIf (p > 1) $+                text "mdo" $$$ ppBody doIndent (map pretty stmtList)+        -- Constructors & Vars+        prettyPrec _ (Var _ name) = pretty name+        prettyPrec _ (OverloadedLabel _ name) = text ('#':name)+        prettyPrec _ (IPVar _ ipname) = pretty ipname+        prettyPrec _ (Con _ name) = pretty name+        prettyPrec _ (Tuple _ bxd expList) =+                let ds = map pretty expList+                in case bxd of+                       Boxed   -> parenList ds+                       Unboxed -> hashParenList ds+        prettyPrec _ (UnboxedSum _ before after exp) =+          printUnboxedSum before after exp+        prettyPrec _ (TupleSection _ bxd mExpList) =+                let ds = map (maybePP pretty) mExpList+                in case bxd of+                       Boxed   -> parenList ds+                       Unboxed -> hashParenList ds+        -- weird stuff+        prettyPrec _ (Paren _ e) = parens . pretty $ e+        prettyPrec _ (LeftSection _ e op) = parens (pretty e <+> pretty op)+        prettyPrec _ (RightSection _ op e) = parens (pretty op <+> pretty e)+        prettyPrec _ (RecConstr _ c fieldList) =+                pretty c <> (braceList . map pretty $ fieldList)+        prettyPrec _ (RecUpdate _ e fieldList) =+                pretty e <> (braceList . map pretty $ fieldList)+        -- Lists and parallel arrays+        prettyPrec _ (List _ list) =+                bracketList . punctuate comma . map pretty $ list+        prettyPrec _ (ParArray _ arr) =+                bracketColonList . map pretty $ arr+        prettyPrec _ (EnumFrom _ e) =+                bracketList [pretty e, text ".."]+        prettyPrec _ (EnumFromTo _ from to) =+                bracketList [pretty from, text "..", pretty to]+        prettyPrec _ (EnumFromThen _ from thenE) =+                bracketList [pretty from <> comma, pretty thenE, text ".."]+        prettyPrec _ (EnumFromThenTo _ from thenE to) =+                bracketList [pretty from <> comma, pretty thenE,+                             text "..", pretty to]+        prettyPrec _ (ParArrayFromTo _ from to) =+                bracketColonList [pretty from, text "..", pretty to]+        prettyPrec _ (ParArrayFromThenTo _ from thenE to) =+                bracketColonList [pretty from <> comma, pretty thenE,+                             text "..", pretty to]+        prettyPrec _ (ListComp _ e qualList) =+                bracketList ([pretty e, char '|']+                             ++ (punctuate comma . map pretty $ qualList))+        prettyPrec _ (ParComp _ e qualLists) =+                bracketList (punctuate (char '|') $+                                pretty e : map (hsep . punctuate comma . map pretty) qualLists)+        prettyPrec _ (ParArrayComp _ e qualArrs) =+                bracketColonList (punctuate (char '|') $+                                pretty e : map (hsep . punctuate comma . map pretty) qualArrs)+        prettyPrec p (ExpTypeSig _pos e ty) = parensIf (p > 0) $+                myFsep [pretty e, text "::", pretty ty]+        -- Template Haskell+        prettyPrec _ (BracketExp _ b) = pretty b+        prettyPrec _ (SpliceExp _ s) = pretty s+        prettyPrec _ (TypQuote _ t)  = text "\'\'" <> pretty t+        prettyPrec _ (VarQuote _ x)  = text "\'" <> pretty x+        prettyPrec _ (QuasiQuote _ n qt) = text ("[" ++ n ++ "|" ++ qt ++ "|]")+        -- Hsx+        prettyPrec _ (XTag _ n attrs mattr cs) =+                let ax = maybe [] (return . pretty) mattr+                 in hcat $+                     (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+                        map pretty cs ++ [myFsep [text "</" <> pretty n, char '>']]+        prettyPrec _ (XETag _ n attrs mattr) =+                let ax = maybe [] (return . pretty) mattr+                 in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]+        prettyPrec _ (XPcdata _ s) = text s+        prettyPrec _ (XExpTag _ e) =+                myFsep [text "<%", pretty e, text "%>"]+        prettyPrec _ (XChildTag _ cs) =+                myFsep $ text "<%>" : map pretty cs ++ [text "</%>"]++        -- Pragmas+        prettyPrec _ (CorePragma _ s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]+        prettyPrec _ (SCCPragma  _ s e) = myFsep $ map text ["{-# SCC",  show s, "#-}"] ++ [pretty e]+        prettyPrec _ (GenPragma  _ s (a,b) (c,d) e) =+                myFsep [text "{-# GENERATED", text $ show s,+                            int a, char ':', int b, char '-',+                            int c, char ':', int d, text "#-}", pretty e]+        -- Arrows+        prettyPrec p (Proc _ pat e) = parensIf (p > 1) $ myFsep [text "proc", pretty pat, text "->", pretty e]+        prettyPrec p (LeftArrApp _ l r)      = parensIf (p > 0) $ myFsep [pretty l, text "-<",  pretty r]+        prettyPrec p (RightArrApp _ l r)     = parensIf (p > 0) $ myFsep [pretty l, text ">-",  pretty r]+        prettyPrec p (LeftArrHighApp _ l r)  = parensIf (p > 0) $ myFsep [pretty l, text "-<<", pretty r]+        prettyPrec p (RightArrHighApp _ l r) = parensIf (p > 0) $ myFsep [pretty l, text ">>-", pretty r]+        prettyPrec _ (ArrOp _ e) = myFsep [text "(|", pretty e, text "|)"]++        -- LamdaCase+        prettyPrec p (LCase _ altList) = parensIf (p > 1) $+                myFsep (text "\\case":+                       if null altList then [text "{", text "}"] else [])+                $$$ ppBody caseIndent (map pretty altList)+        prettyPrec _ (TypeApp _ ty)   = char '@' <> pretty ty++printUnboxedSum :: Pretty e => Int -> Int -> e -> Doc+printUnboxedSum before after exp =+          hashParens . myFsep $ (replicate before (text "|")+                                ++ [pretty exp]+                                ++ (replicate after (text "|")))+++instance  Pretty (XAttr l) where+        pretty (XAttr _ n v) =+                myFsep [pretty n, char '=', pretty v]++instance  Pretty (XName l) where+        pretty (XName _ n) = text n+        pretty (XDomName _ d n) = text d <> char ':' <> text n++ppLetExp :: (PrettyDeclLike a, Pretty b) => [a] -> b -> Doc+ppLetExp l b = myFsep [text "let" <+> ppBody letIndent (ppDecls False l),+                        text "in", pretty b]++--------------------- Template Haskell -------------------------++instance  Pretty (Bracket l) where+        pretty (ExpBracket _ e) = ppBracket "[|" e+        pretty (TExpBracket _ e) = myFsep [text "[||", pretty e, text "||]"]+        pretty (PatBracket _ p) = ppBracket "[p|" p+        pretty (TypeBracket _ t) = ppBracket "[t|" t+        pretty (DeclBracket _ d) =+                myFsep $ text "[d|" : ppDecls True d ++ [text "|]"]++ppBracket :: Pretty a => String -> a -> Doc+ppBracket o x = myFsep [text o, pretty x, text "|]"]++instance  Pretty (Splice l) where+        pretty (IdSplice _ s) = char '$' <> text s+        pretty (TIdSplice _ s) = char '$' <> char '$' <> text s+        pretty (TParenSplice _ e) =+                myFsep [text "$$(", pretty e, char ')']+        pretty (ParenSplice _ e) =+                myFsep [text "$(", pretty e, char ')']++------------------------- Patterns -----------------------------++instance  Pretty (Pat l) where+        prettyPrec _ (PVar _ name) = pretty name+        prettyPrec _ (PLit _ (Signless {}) lit) = pretty lit+        prettyPrec p (PLit _ (Negative{}) lit) = parensIf (p > 1) $ char '-' <> pretty lit+        prettyPrec p (PInfixApp l a op b) = parensIf (p > 0) $+                myFsep [prettyPrec 1 a, pretty (QConOp l op), prettyPrec 1 b]+        prettyPrec p (PApp _ n ps) = parensIf (p > 2 && not (null ps)) $+                myFsep (pretty n : map (prettyPrec 3) ps)+        prettyPrec _ (PTuple _ bxd ps) =+                let ds = map pretty ps+                in case bxd of+                       Boxed   -> parenList ds+                       Unboxed -> hashParenList ds+        prettyPrec _ (PUnboxedSum _ before after exp) =+          printUnboxedSum before after exp+        prettyPrec _ (PList _ ps) =+                bracketList . punctuate comma . map pretty $ ps+        prettyPrec _ (PParen _ pat) = parens . pretty $ pat+        prettyPrec _ (PRec _ c fields) =+                pretty c <> (braceList . map pretty $ fields)+        -- special case that would otherwise be buggy+        prettyPrec _ (PAsPat _ name (PIrrPat _ pat)) =+                myFsep [pretty name <> char '@', char '~' <> prettyPrec 3 pat]+        prettyPrec _ (PAsPat _ name pat) =+                hcat [pretty name, char '@', prettyPrec 3 pat]+        prettyPrec _ PWildCard {} = char '_'+        prettyPrec _ (PIrrPat _ pat) = char '~' <> prettyPrec 3 pat+        prettyPrec p (PatTypeSig _pos pat ty) = parensIf (p > 0) $+                myFsep [pretty pat, text "::", pretty ty]+        prettyPrec p (PViewPat _ e pat) = parensIf (p > 0) $+                myFsep [pretty e, text "->", pretty pat]+        prettyPrec p (PNPlusK _ n k) = parensIf (p > 0) $+                myFsep [pretty n, text "+", text $ show k]+        -- HaRP+        prettyPrec _ (PRPat _ rs) =+                bracketList . punctuate comma . map pretty $ rs+        -- Hsx+        prettyPrec _ (PXTag _ n attrs mattr cp) =+            let ap = maybe [] (return . pretty) mattr+             in hcat $ -- TODO: should not introduce blanks+                  (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [char '>']):+                    map pretty cp ++ [myFsep [text "</" <> pretty n, char '>']]+        prettyPrec _ (PXETag _ n attrs mattr) =+                let ap = maybe [] (return . pretty) mattr+                 in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [text "/>"]+        prettyPrec _ (PXPcdata _ s) = text s+        prettyPrec _ (PXPatTag _ p) =+                myFsep [text "<%", pretty p, text "%>"]+        prettyPrec _ (PXRPats _ ps) =+                myFsep $ text "<[" : map pretty ps ++ [text "%>"]+        -- BangPatterns+        prettyPrec _ (PBangPat _ pat) = text "!" <> prettyPrec 3 pat+        prettyPrec _ (PSplice _ s) = pretty s+        prettyPrec _ (PQuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")++instance  Pretty (PXAttr l) where+        pretty (PXAttr _ n p) =+                myFsep [pretty n, char '=', pretty p]++instance  Pretty (PatField l) where+        pretty (PFieldPat _ name pat) =+                myFsep [pretty name, equals, pretty pat]+        pretty (PFieldPun _ name) = pretty name+        pretty (PFieldWildcard{}) = text ".."++--------------------- Regular Patterns -------------------------++instance  Pretty (RPat l) where+        pretty (RPOp _ r op) = pretty r <> pretty op+        pretty (RPEither _ r1 r2) = parens . myFsep $+                [pretty r1, char '|', pretty r2]+        pretty (RPSeq _ rs) =+                myFsep $ text "(|" : (punctuate comma . map pretty $ rs)+                           ++ [text "|)"]+        pretty (RPGuard _ r gs) =+                myFsep $ text "(|" : pretty r : char '|' :+                           (punctuate comma . map pretty $ gs) ++ [text "|)"]+        -- special case that would otherwise be buggy+        pretty (RPCAs _ n (RPPat _ (PIrrPat _ p))) =+                myFsep [pretty n <> text "@:", char '~' <> pretty p]+        pretty (RPCAs _ n r) = hcat [pretty n, text "@:", pretty r]+        -- special case that would otherwise be buggy+        pretty (RPAs _ n (RPPat _ (PIrrPat _ p))) =+                myFsep [pretty n <> text "@:", char '~' <> pretty p]+        pretty (RPAs _ n r) = hcat [pretty n, char '@', pretty r]+        pretty (RPPat _ p) = pretty p+        pretty (RPParen _ rp) = parens . pretty $ rp++instance  Pretty (RPatOp l) where+        pretty RPStar{}  = char '*'+        pretty RPStarG{} = text "*!"+        pretty RPPlus{}  = char '+'+        pretty RPPlusG{} = text "+!"+        pretty RPOpt{}   = char '?'+        pretty RPOptG{}  = text "?!"++------------------------- Case bodies  -------------------------+instance  Pretty (Alt l) where+        pretty (Alt _pos e gAlts binds) =+                pretty e <+> pretty (GuardedAlts gAlts) $$$ ppWhere binds++------------------------- Statements in monads, guards & list comprehensions -----+instance  Pretty (Stmt l) where+        pretty (Generator _loc e from) =+                pretty e <+> text "<-" <+> pretty from+        pretty (Qualifier _ e) = pretty e+        -- two cases for lets+        pretty (LetStmt _ (BDecls _ declList)) =+                ppLetStmt declList+        pretty (LetStmt _ (IPBinds _ bindList)) =+                ppLetStmt bindList+        pretty (RecStmt _ stmtList) =+                text "rec" $$$ ppBody letIndent (map pretty stmtList)++ppLetStmt :: Pretty a => [a] -> Doc+ppLetStmt l = text "let" $$$ ppBody letIndent (map pretty l)++instance  Pretty (QualStmt l) where+        pretty (QualStmt _ s) = pretty s+        pretty (ThenTrans _ f)    = myFsep [text "then", pretty f]+        pretty (ThenBy _ f e)  = myFsep [text "then", pretty f, text "by", pretty e]+        pretty (GroupBy _ e)    = myFsep [text "then", text "group", text "by", pretty e]+        pretty (GroupUsing _ f)    = myFsep [text "then", text "group", text "using", pretty f]+        pretty (GroupByUsing _ e f)  = myFsep [text "then", text "group", text "by",+                                                pretty e, text "using", pretty f]++++------------------------- Record updates+instance  Pretty (FieldUpdate l) where+        pretty (FieldUpdate _ name e) =+                myFsep [pretty name, equals, pretty e]+        pretty (FieldPun _ name) = pretty name+        pretty (FieldWildcard {}) = text ".."++------------------------- Names -------------------------+instance  Pretty (QOp l) where+        pretty (QVarOp _ n) = ppQNameInfix n+        pretty (QConOp _ n) = ppQNameInfix n++ppQNameInfix :: QName l -> Doc+ppQNameInfix name+        | isSymbolQName name = ppQName name+        | otherwise = char '`' <> ppQName name <> char '`'++instance  Pretty (QName l) where+        pretty name = case name of+                UnQual _ (Symbol _ ('#':_)) -> char '(' <+> ppQName name <+> char ')'+                _ -> parensIf (isSymbolQName name) (ppQName name)++ppQName :: QName l -> Doc+ppQName (UnQual _ name) = ppName name+ppQName (Qual _ m name) = pretty m <> char '.' <> ppName name+ppQName (Special _ sym) = pretty sym++instance  Pretty (Op l) where+        pretty (VarOp _ n) = ppNameInfix n+        pretty (ConOp _ n) = ppNameInfix n++ppNameInfix :: Name l -> Doc+ppNameInfix name+        | isSymbolName name = ppName name+        | otherwise = char '`' <> ppName name <> char '`'++instance  Pretty (Name l) where+        pretty name = case name of+                Symbol _ ('#':_) -> char '(' <+> ppName name <+> char ')'+                _ -> parensIf (isSymbolName name) (ppName name)++ppName :: Name l -> Doc+ppName (Ident _ s) = text s+ppName (Symbol _ s) = text s++instance  Pretty (IPName l) where+        pretty (IPDup _ s) = char '?' <> text s+        pretty (IPLin _ s) = char '%' <> text s++instance  PrettyDeclLike (IPBind l) where+  wantsBlankline _ = False++instance  Pretty (IPBind l) where+        pretty (IPBind _loc ipname exp) =+                myFsep [pretty ipname, equals, pretty exp]++instance  Pretty (CName l) where+        pretty (VarName _ n) = pretty n+        pretty (ConName _ n) = pretty n++instance Pretty (SpecialCon l) where+        pretty (UnitCon {})         = text "()"+        pretty (ListCon {})         = text "[]"+        pretty (FunCon  {})         = text "->"+        pretty (TupleCon _ b n)   = listFun $ foldr (<>) empty (replicate (n-1) comma)+          where listFun = if b == Unboxed then hashParens else parens+        pretty (Cons {})             = text ":"+        pretty (UnboxedSingleCon {}) = text "(# #)"+        pretty (ExprHole {}) = text "_"++isSymbolName :: Name l -> Bool+isSymbolName (Symbol {}) = True+isSymbolName _ = False++isSymbolQName :: QName l -> Bool+isSymbolQName (UnQual _ n)       = isSymbolName n+isSymbolQName (Qual _ _ n)       = isSymbolName n+isSymbolQName (Special _ (Cons {}))   = True+isSymbolQName (Special _ (FunCon {})) = True+isSymbolQName _                  = False++--getSpecialName :: QName l -> Maybe (SpecialCon l)+--getSpecialName (Special _ n) = Just n+--getSpecialName _           = Nothing++-- Contexts are "sets" of assertions. Several members really means it's a+-- CxTuple, but we can't represent that in our list of assertions.+-- Therefore: print single member contexts without parenthesis, and treat+--            larger contexts as tuples.+instance (Pretty (Context l)) where+  pretty (CxEmpty _)      = text "()" <+> text "=>"+  pretty (CxSingle _ ctxt)  = pretty ctxt <+> text "=>"+  pretty (CxTuple _ context) = mySep [parenList (map pretty context), text "=>"]++instance  Pretty (Asst l) where+        pretty (TypeA _ t)       = pretty t+        pretty (IParam _ i t)    = myFsep [pretty i, text "::", pretty t]+        pretty (ParenA _ a)      = parens (pretty a)++-- Pretty print a source location, useful for printing out error messages+instance Pretty SrcLoc where+  pretty srcLoc =+    return $ P.hcat [ colonFollow (P.text $ srcFilename srcLoc)+                    , colonFollow (P.int  $ srcLine     srcLoc)+                    , P.int $ srcColumn srcLoc+                    ]++colonFollow :: P.Doc -> P.Doc+colonFollow p = P.hcat [ p, P.colon ]+++instance Pretty SrcSpan where+    pretty srcSpan =+        return $ P.hsep [ colonFollow (P.text $ srcSpanFilename srcSpan)+                        , P.hcat [ P.text "("+                                 , P.int $ srcSpanStartLine srcSpan+                                 , P.colon+                                 , P.int $ srcSpanStartColumn srcSpan+                                 , P.text ")"+                                 ]+                        , P.text "-"+                        , P.hcat [ P.text "("+                                 , P.int $ srcSpanEndLine srcSpan+                                 , P.colon+                                 , P.int $ srcSpanEndColumn srcSpan+                                 , P.text ")"+                                 ]+                        ]++---------------------------------------------------------------------+-- Annotated version+++-------------------------  Pretty-Print a Module --------------------+instance Pretty (Module pos) where+        pretty (Module _ mbHead os imp decls) =+                myVcat $ map pretty os +++                    (case mbHead of+                        Nothing -> id+                        Just h  -> \x -> [topLevel (pretty h) x])+                    (map pretty imp +++                         ppDecls (isJust mbHead ||+                                  not (null imp) ||+                                  not (null os))+                           decls)+        pretty (XmlPage _ _mn os n attrs mattr cs) =+                myVcat $ map pretty os +++                    [let ax = maybe [] (return . pretty) mattr+                      in hcat $+                         (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+                            map pretty cs ++ [myFsep [text "</" <> pretty n, char '>']]]+        pretty (XmlHybrid _ mbHead os imp decls n attrs mattr cs) =+                myVcat $ map pretty os ++ [text "<%"] +++                    (case mbHead of+                        Nothing -> id+                        Just h  -> \x -> [topLevel (pretty h) x])+                    (map pretty imp +++                      ppDecls (isJust mbHead || not (null imp) || not (null os)) decls +++                        [let ax = maybe [] (return . pretty) mattr+                          in hcat $+                             (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+                                map pretty cs ++ [myFsep [text "</" <> pretty n, char '>']]])++++------------------------- pp utils -------------------------+maybePP :: (a -> Doc) -> Maybe a -> Doc+maybePP _  Nothing = empty+maybePP pp (Just a) = pp a++parenList :: [Doc] -> Doc+parenList = parens . myFsepSimple . punctuate comma++hashParenList :: [Doc] -> Doc+hashParenList = hashParens . myFsepSimple . punctuate comma++unboxedSumType :: [Doc] -> Doc+unboxedSumType = hashParens . myFsepSimple . punctuate (text " |")++hashParens :: Doc -> Doc+hashParens = parens . hashes+  where+    hashes doc = char '#' <+> doc <+> char '#'++braceList :: [Doc] -> Doc+braceList = braces . myFsepSimple . punctuate comma++bracketList :: [Doc] -> Doc+bracketList = brackets . myFsepSimple++bracketColonList :: [Doc] -> Doc+bracketColonList = bracketColons . myFsepSimple+    where bracketColons = brackets . colons+          colons doc = char ':' <> doc <> char ':'++-- Wrap in braces and semicolons, with an extra space at the start in+-- case the first doc begins with "-", which would be scanned as {-+flatBlock :: [Doc] -> Doc+flatBlock = braces . (space <>) . hsep . punctuate semi++-- Same, but put each thing on a separate line+prettyBlock :: [Doc] -> Doc+prettyBlock = braces . (space <>) . vcat . punctuate semi++-- Monadic PP Combinators -- these examine the env++blankline :: Doc -> Doc+blankline dl = do{e<-getPPEnv;if spacing e && layout e /= PPNoLayout+                              then text "" $+$ dl else dl}+topLevel :: Doc -> [Doc] -> Doc+topLevel header dl = do+         e <- fmap layout getPPEnv+         case e of+             PPOffsideRule -> header $$ vcat dl+             PPSemiColon -> header $$ prettyBlock dl+             PPInLine -> header $$ prettyBlock dl+             PPNoLayout -> header <+> flatBlock dl++ppBody :: (PPHsMode -> Int) -> [Doc] -> Doc+ppBody f dl = do+         e <- fmap layout getPPEnv+         case e of PPOffsideRule -> indent+                   PPSemiColon   -> indentExplicit+                   _ -> flatBlock dl+                   where+                   indent  = do{i <-fmap f getPPEnv;nest i . vcat $ dl}+                   indentExplicit = do {i <- fmap f getPPEnv;+                           nest i . prettyBlock $ dl}++-- | Indent without braces. Useful for deriving clauses etc.+ppIndent :: (PPHsMode -> Int) -> [Doc] -> Doc+ppIndent f dl = do+            i <- fmap f getPPEnv+            nest i . vcat $ dl++($$$) :: Doc -> Doc -> Doc+a $$$ b = layoutChoice (a $$) (a <+>) b++mySep :: [Doc] -> Doc+mySep = layoutChoice mySep' hsep+        where+        -- ensure paragraph fills with indentation.+        mySep' [x]    = x+        mySep' (x:xs) = x <+> fsep xs+        mySep' []     = error "Internal error: mySep"++myVcat :: [Doc] -> Doc+myVcat = layoutChoice vcat hsep++myFsepSimple :: [Doc] -> Doc+myFsepSimple = layoutChoice fsep hsep++-- same, except that continuation lines are indented,+-- which is necessary to avoid triggering the offside rule.+myFsep :: [Doc] -> Doc+myFsep = layoutChoice fsep' hsep+        where   fsep' [] = empty+                fsep' (d:ds) = do+                        e <- getPPEnv+                        let n = onsideIndent e+                        nest n (fsep (nest (-n) d:ds))++layoutChoice :: (a -> Doc) -> (a -> Doc) -> a -> Doc+layoutChoice a b dl = do e <- getPPEnv+                         if layout e == PPOffsideRule ||+                            layout e == PPSemiColon+                          then a dl else b dl++--------------------------------------------------------------------------------+-- Pretty-printing of internal constructs, for error messages while parsing++instance SrcInfo loc => Pretty (P.PExp loc) where+        pretty (P.Lit _ l) = pretty l+        pretty (P.InfixApp _ a op b) = myFsep [pretty a, pretty op, pretty b]+        pretty (P.NegApp _ e) = myFsep [char '-', pretty e]+        pretty (P.App _ a b) = myFsep [pretty a, pretty b]+        pretty (P.Lambda _loc expList ppBody') = myFsep $+                char '\\' : map pretty expList ++ [text "->", pretty ppBody']+        pretty (P.Let _ (BDecls _ declList) letBody) =+                ppLetExp declList letBody+        pretty (P.Let _ (IPBinds _ bindList) letBody) =+                ppLetExp bindList letBody+        pretty (P.If _ cond thenexp elsexp) =+                myFsep [text "if", pretty cond,+                        text "then", pretty thenexp,+                        text "else", pretty elsexp]+        pretty (P.MultiIf _ alts) =+                text "if"+                $$$ ppBody caseIndent (map pretty alts)+        pretty (P.Case _ cond altList) =+                myFsep [text "case", pretty cond, text "of"]+                $$$ ppBody caseIndent (map pretty altList)+        pretty (P.Do _ stmtList) =+                text "do" $$$ ppBody doIndent (map pretty stmtList)+        pretty (P.MDo _ stmtList) =+                text "mdo" $$$ ppBody doIndent (map pretty stmtList)+        pretty (P.Var _ name) = pretty name+        pretty (P.OverloadedLabel _ name) = text name+        pretty (P.IPVar _ ipname) = pretty ipname+        pretty (P.Con _ name) = pretty name+        pretty (P.TupleSection _ bxd mExpList) =+                let ds = map (maybePP pretty) mExpList+                in case bxd of+                       Boxed   -> parenList ds+                       Unboxed -> hashParenList ds+        pretty (P.UnboxedSum _ before after exp) =+          printUnboxedSum before after exp+        pretty (P.Paren _ e) = parens . pretty $ e+        pretty (P.RecConstr _ c fieldList) =+                pretty c <> (braceList . map pretty $ fieldList)+        pretty (P.RecUpdate _ e fieldList) =+                pretty e <> (braceList . map pretty $ fieldList)+        pretty (P.List _ list) =+                bracketList . punctuate comma . map pretty $ list+        pretty (P.ParArray _ arr) =+                bracketColonList . punctuate comma . map pretty $ arr+        pretty (P.EnumFrom _ e) =+                bracketList [pretty e, text ".."]+        pretty (P.EnumFromTo _ from to) =+                bracketList [pretty from, text "..", pretty to]+        pretty (P.EnumFromThen _ from thenE) =+                bracketList [pretty from <> comma, pretty thenE, text ".."]+        pretty (P.EnumFromThenTo _ from thenE to) =+                bracketList [pretty from <> comma, pretty thenE,+                             text "..", pretty to]+        pretty (P.ParArrayFromTo _ from to) =+                bracketColonList [pretty from, text "..", pretty to]+        pretty (P.ParArrayFromThenTo _ from thenE to) =+                bracketColonList [pretty from <> comma, pretty thenE,+                             text "..", pretty to]+        pretty (P.ParComp _ e qualLists) =+                bracketList (intersperse (char '|') $+                                pretty e : (punctuate comma . concatMap (map pretty) $ qualLists))+        pretty (P.ParArrayComp _ e qualArrs) =+                bracketColonList (intersperse (char '|') $+                                pretty e : (punctuate comma . concatMap (map pretty) $ qualArrs))+        pretty (P.ExpTypeSig _pos e ty) =+                myFsep [pretty e, text "::", pretty ty]+        pretty (P.BracketExp _ b) = pretty b+        pretty (P.SpliceExp _ s) = pretty s+        pretty (P.TypQuote _ t)  = text "\'\'" <> pretty t+        pretty (P.VarQuote _ x)  = text "\'" <> pretty x+        pretty (P.QuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")+        pretty (P.XTag _ n attrs mattr cs) =+                let ax = maybe [] (return . pretty) mattr+                 in hcat $+                     (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+                        map pretty cs ++ [myFsep [text "</" <> pretty n, char '>']]+        pretty (P.XETag _ n attrs mattr) =+                let ax = maybe [] (return . pretty) mattr+                 in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]+        pretty (P.XPcdata _ s) = text s+        pretty (P.XExpTag _ e) =+                myFsep [text "<%", pretty e, text "%>"]+        pretty (P.XChildTag _ es) =+                myFsep $ text "<%>" : map pretty es ++ [text "</%>"]+        pretty (P.CorePragma _ s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]+        pretty (P.SCCPragma  _ s e) = myFsep $ map text ["{-# SCC",  show s, "#-}"] ++ [pretty e]+        pretty (P.GenPragma  _ s (a,b) (c,d) e) =+                myFsep [text "{-# GENERATED", text $ show s,+                            int a, char ':', int b, char '-',+                            int c, char ':', int d, text "#-}", pretty e]+        pretty (P.Proc _ p e) = myFsep [text "proc", pretty p, text "->", pretty e]+        pretty (P.LeftArrApp _ l r)      = myFsep [pretty l, text "-<",  pretty r]+        pretty (P.RightArrApp _ l r)     = myFsep [pretty l, text ">-",  pretty r]+        pretty (P.LeftArrHighApp _ l r)  = myFsep [pretty l, text "-<<", pretty r]+        pretty (P.RightArrHighApp _ l r) = myFsep [pretty l, text ">>-", pretty r]+        pretty (P.ArrOp _ e) = myFsep [text "(|", pretty e, text "|)"]+        pretty (P.AsPat _ name (P.IrrPat _ pat)) =+                myFsep [pretty name <> char '@', char '~' <> pretty pat]+        pretty (P.AsPat _ name pat) =+                hcat [pretty name, char '@', pretty pat]+        pretty (P.WildCard _) = char '_'+        pretty (P.IrrPat _ pat) = char '~' <> pretty pat+        pretty (P.PostOp _ e op) = pretty e <+> pretty op+        pretty (P.PreOp _ op e)  = pretty op <+> pretty e+        pretty (P.ViewPat _ e p) =+                myFsep [pretty e, text "->", pretty p]+        pretty (P.SeqRP _ rs) =+            myFsep $ text "(|" : (punctuate comma . map pretty $ rs) ++ [text "|)"]+        pretty (P.GuardRP _ r gs) =+                myFsep $ text "(|" : pretty r : char '|' :+                           (punctuate comma . map pretty $ gs) ++ [text "|)"]+        pretty (P.EitherRP _ r1 r2) = parens . myFsep $ [pretty r1, char '|', pretty r2]+        pretty (P.CAsRP _ n (P.IrrPat _ e)) =+                myFsep [pretty n <> text "@:", char '~' <> pretty e]+        pretty (P.CAsRP _ n r) = hcat [pretty n, text "@:", pretty r]+        pretty (P.XRPats _ ps) =+                myFsep $ text "<[" : map pretty ps ++ [text "%>"]+        pretty (P.BangPat _ e) = text "!" <> pretty e+        pretty (P.LCase _ altList) = text "\\case" $$$ ppBody caseIndent (map pretty altList)+        pretty (P.TypeApp _ ty) = char '@' <> pretty ty++instance SrcInfo loc => Pretty (P.PFieldUpdate loc) where+        pretty (P.FieldUpdate _ name e) =+                myFsep [pretty name, equals, pretty e]+        pretty (P.FieldPun _ name) = pretty name+        pretty (P.FieldWildcard _) = text ".."++instance SrcInfo loc => Pretty (P.ParseXAttr loc) where+        pretty (P.XAttr _ n v) =+                myFsep [pretty n, char '=', pretty v]++instance SrcInfo loc => Pretty (P.PContext loc) where+        pretty (P.CxEmpty _) = mySep [text "()", text "=>"]+        pretty (P.CxSingle _ asst) = mySep [pretty asst, text "=>"]+        pretty (P.CxTuple _ assts) = myFsep [parenList (map pretty assts), text "=>"]++instance SrcInfo loc => Pretty (P.PAsst loc) where+        pretty (P.TypeA _ t)       = pretty t+        pretty (P.IParam _ i t)    = myFsep [pretty i, text "::", pretty t]+        pretty (P.ParenA _ a)      = parens (pretty a)++instance SrcInfo loc => Pretty (P.PType loc) where+        prettyPrec p (P.TyForall _ mtvs ctxt htype) = parensIf (p > 0) $+                myFsep [ppForall mtvs, maybePP pretty ctxt, pretty htype]+        prettyPrec _ (P.TyStar _) = text "*"+        prettyPrec p (P.TyFun _ a b) = parensIf (p > 0) $+                myFsep [prettyPrec prec_btype a, text "->", pretty b]+        prettyPrec _ (P.TyTuple _ bxd l) =+                let ds = map pretty l+                 in case bxd of+                        Boxed   -> parenList ds+                        Unboxed -> hashParenList ds+        prettyPrec _ (P.TyUnboxedSum _ es) =+          unboxedSumType (map pretty es)+        prettyPrec _ (P.TyList _ t)  = brackets $ pretty t+        prettyPrec _ (P.TyParArray _ t) = bracketColonList [pretty t]+        prettyPrec p (P.TyApp _ a b) =+                {-+                | a == list_tycon = brackets $ pretty b         -- special case+                | otherwise = -} parensIf (p > prec_btype) $+                                    myFsep [pretty a, prettyPrec prec_atype b]+        prettyPrec _ (P.TyVar _ name) = pretty name+        prettyPrec _ (P.TyCon _ name) = pretty name+        prettyPrec _ (P.TyParen _ t) = parens (pretty t)+        prettyPrec _ (P.TyPred _ asst) = pretty asst+        prettyPrec _ (P.TyInfix _ a op b) = myFsep [pretty a, pretty op, pretty b]+        prettyPrec _ (P.TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])+        prettyPrec _ (P.TyPromoted _ p) = pretty p+        prettyPrec _ (P.TyEquals _ a b) = myFsep [pretty a, text "~", pretty b]+        prettyPrec _ (P.TySplice _ s) = pretty s+        prettyPrec _ (P.TyBang _ b u t) = pretty u <+> pretty b <> prettyPrec prec_atype t+        prettyPrec _ (P.TyWildCard _ mn) = char '_' <> maybePP pretty mn+        prettyPrec _ (P.TyQuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")
src/Language/Haskell/Exts/SrcLoc.hs view
@@ -1,173 +1,194 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Language.Haskell.Exts.SrcLoc
--- Copyright   :  (c) Niklas Broberg 2009
--- License     :  BSD-style (see the file LICENSE.txt)
---
--- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se
--- Stability   :  stable
--- Portability :  portable
---
--- This module defines various data types representing source location
--- information, of varying degree of preciseness.
---
------------------------------------------------------------------------------
-module Language.Haskell.Exts.SrcLoc where
-
-#ifdef __GLASGOW_HASKELL__
-#ifdef BASE4
-import Data.Data
-#else
-import Data.Generics (Data(..),Typeable(..))
-#endif
-#endif
-
--- | A single position in the source.
-data SrcLoc = SrcLoc
-    { srcFilename :: String
-    , srcLine :: Int
-    , srcColumn :: Int
-    }
-#ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
-#else
-  deriving (Eq,Ord,Show)
-#endif
-
-
--- | A portion of the source, spanning one or more lines and zero or more columns.
-data SrcSpan = SrcSpan
-    { srcSpanFilename    :: String
-    , srcSpanStartLine   :: Int
-    , srcSpanStartColumn :: Int
-    , srcSpanEndLine     :: Int
-    , srcSpanEndColumn   :: Int
-    }
-#ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
-#else
-  deriving (Eq,Ord,Show)
-#endif
-
-
--- | Returns 'srcSpanStartLine' and 'srcSpanStartColumn' in a pair.
-srcSpanStart :: SrcSpan -> (Int,Int)
-srcSpanStart x = (srcSpanStartLine x, srcSpanStartColumn x)
-
--- | Returns 'srcSpanEndLine' and 'srcSpanEndColumn' in a pair.
-srcSpanEnd :: SrcSpan -> (Int,Int)
-srcSpanEnd x = (srcSpanEndLine x, srcSpanEndColumn x)
-
-
--- | Combine two locations in the source to denote a span.
-mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan
-mkSrcSpan (SrcLoc fn sl sc) (SrcLoc _ el ec) = SrcSpan fn sl sc el ec
-
--- | Merge two source spans into a single span from the start of the first
---   to the end of the second. Assumes that the two spans relate to the
---   same source file.
-mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan
-mergeSrcSpan (SrcSpan fn sl1 sc1 el1 ec1) (SrcSpan _ sl2 sc2 el2 ec2) = 
-    let (sl,sc) = min (sl1,sc1) (sl2,sc2)
-        (el,ec) = max (el1,ec1) (el2,ec2)
-     in SrcSpan fn sl sc el ec
-
--- | Test if a given span starts and ends at the same location.
-isNullSpan :: SrcSpan -> Bool
-isNullSpan ss = srcSpanStartLine ss == srcSpanEndLine ss &&
-                    srcSpanStartColumn ss >= srcSpanEndColumn ss
-
--- | An entity located in the source.
-data Loc a = Loc
-    { loc :: SrcSpan
-    , unLoc :: a
-    }
-  deriving (Eq,Ord,Show)
-
-
--- | A portion of the source, extended with information on the position of entities within the span.
-data SrcSpanInfo = SrcSpanInfo
-    { srcInfoSpan    :: SrcSpan
---    , explLayout     :: Bool
-    , srcInfoPoints  :: [SrcSpan]    -- Marks the location of specific entities inside the span
-    }
-#ifdef __GLASGOW_HASKELL__
-  deriving (Eq,Ord,Show,Typeable,Data)
-#else
-  deriving (Eq,Ord,Show)
-#endif
-
--- | Generate a 'SrcSpanInfo' with no positional information for entities.
-noInfoSpan :: SrcSpan -> SrcSpanInfo
-noInfoSpan ss = SrcSpanInfo ss []
-
--- | Generate a 'SrcSpanInfo' with the supplied positional information for entities.
-infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo
-infoSpan = SrcSpanInfo
-
--- | Combine two 'SrcSpanInfo's into one that spans the combined source area of
---   the two arguments, leaving positional information blank.
-combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
-combSpanInfo s1 s2 = SrcSpanInfo
-    (mergeSrcSpan (srcInfoSpan s1) (srcInfoSpan s2))
-    []
-
--- | Short name for 'combSpanInfo'
-(<++>) :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
-(<++>) = combSpanInfo
-
--- | Optionally combine the first argument with the second,
---   or return it unchanged if the second argument is 'Nothing'.
-(<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo
-a <+?> b = case b of {Nothing -> a; Just b -> a <++> b}
-
--- | Optionally combine the second argument with the first,
---   or return it unchanged if the first argument is 'Nothing'.
-(<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
-a <?+> b = case a of {Nothing -> b; Just a -> a <++> b}
-
--- | Add more positional information for entities of a span.
-(<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo
-ss@(SrcSpanInfo {srcInfoPoints = ps}) <** xs = ss {srcInfoPoints = ps ++ xs}
-
--- | Merge two 'SrcSpan's and lift them to a 'SrcInfoSpan' with
---   no positional information for entities.
-(<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo
-a <^^> b = noInfoSpan (mergeSrcSpan a b)
-
-infixl 6 <^^>
-infixl 5 <++>
-infixl 4 <**, <+?>, <?+>
-
--- | A class to work over all kinds of source location information.
-class SrcInfo si where
-  toSrcInfo   :: SrcLoc -> [SrcSpan] -> SrcLoc -> si
-  fromSrcInfo :: SrcSpanInfo -> si
-  getPointLoc :: si -> SrcLoc
-  fileName    :: si -> String
-  startLine   :: si -> Int
-  startColumn :: si -> Int
-
-  getPointLoc si = SrcLoc (fileName si) (startLine si) (startColumn si)
-
-instance SrcInfo SrcLoc where
-  toSrcInfo s _ _ = s
-  fromSrcInfo si = SrcLoc (fileName si) (startLine si) (startColumn si)
-  fileName = srcFilename
-  startLine = srcLine
-  startColumn = srcColumn
-
-instance SrcInfo SrcSpan where
-  toSrcInfo st _ end = mkSrcSpan st end
-  fromSrcInfo = srcInfoSpan
-  fileName = srcSpanFilename
-  startLine = srcSpanStartLine
-  startColumn = srcSpanStartColumn
-
-instance SrcInfo SrcSpanInfo where
-  toSrcInfo st pts end = SrcSpanInfo (mkSrcSpan st end) pts
-  fromSrcInfo = id
-  fileName = fileName . srcInfoSpan
-  startLine = startLine . srcInfoSpan
-  startColumn = startColumn . srcInfoSpan
+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-}+-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.SrcLoc+-- Copyright   :  (c) Niklas Broberg 2009+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+-- Stability   :  stable+-- Portability :  portable+--+-- This module defines various data types representing source location+-- information, of varying degree of preciseness.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.SrcLoc where++import Data.Data+import GHC.Generics (Generic)++showInt :: Int -> String+showInt i | i < 0 = "(" ++ show i ++ ")"+showInt i = show i++-- | A single position in the source.+data SrcLoc = SrcLoc+    { srcFilename :: String+    , srcLine :: Int+    , srcColumn :: Int+    }+  deriving (Eq,Ord,Typeable,Data,Generic)++instance Show SrcLoc where+  showsPrec n (SrcLoc fn sl sc) =+    showParen (n >= 11) $+      showString $ "SrcLoc " ++ show fn ++ " " ++ unwords (map showInt [sl,sc])++noLoc :: SrcLoc+noLoc = SrcLoc "" (-1) (-1)++-- | A portion of the source, spanning one or more lines and zero or more columns.+data SrcSpan = SrcSpan+    { srcSpanFilename    :: String+    , srcSpanStartLine   :: Int+    , srcSpanStartColumn :: Int+    , srcSpanEndLine     :: Int+    , srcSpanEndColumn   :: Int+    }+  deriving (Eq,Ord,Typeable,Data,Generic)++instance Show SrcSpan where+  showsPrec n (SrcSpan fn sl sc el ec) =+    showParen (n >= 11) $+      showString $ "SrcSpan " ++ show fn ++ " " ++ unwords (map showInt [sl,sc,el,ec])+++-- | Returns 'srcSpanStartLine' and 'srcSpanStartColumn' in a pair.+srcSpanStart :: SrcSpan -> (Int,Int)+srcSpanStart x = (srcSpanStartLine x, srcSpanStartColumn x)++-- | Returns 'srcSpanEndLine' and 'srcSpanEndColumn' in a pair.+srcSpanEnd :: SrcSpan -> (Int,Int)+srcSpanEnd x = (srcSpanEndLine x, srcSpanEndColumn x)+++-- | Combine two locations in the source to denote a span.+mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan+mkSrcSpan (SrcLoc fn sl sc) (SrcLoc _ el ec) = SrcSpan fn sl sc el ec++-- | Merge two source spans into a single span from the start of the first+--   to the end of the second. Assumes that the two spans relate to the+--   same source file.+mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan+mergeSrcSpan (SrcSpan fn sl1 sc1 el1 ec1) (SrcSpan _ sl2 sc2 el2 ec2) =+    let (sl,sc) = min (sl1,sc1) (sl2,sc2)+        (el,ec) = max (el1,ec1) (el2,ec2)+     in SrcSpan fn sl sc el ec++-- | Test if a given span starts and ends at the same location.+isNullSpan :: SrcSpan -> Bool+isNullSpan ss = spanSize ss == (0,0)+{- isNullSpan ss = srcSpanStartLine ss == srcSpanEndLine ss &&+                    srcSpanStartColumn ss >= srcSpanEndColumn ss+-}++spanSize :: SrcSpan -> (Int, Int)+spanSize ss = (srcSpanEndLine ss - srcSpanStartLine ss, max 0 (srcSpanEndColumn ss - srcSpanStartColumn ss))++-- | An entity located in the source.+data Loc a = Loc+    { loc :: SrcSpan+    , unLoc :: a+    }+  deriving (Eq,Ord,Show,Generic)+++-- | A portion of the source, extended with information on the position of entities within the span.+data SrcSpanInfo = SrcSpanInfo+    { srcInfoSpan    :: SrcSpan+--    , explLayout     :: Bool+    , srcInfoPoints  :: [SrcSpan]    -- Marks the location of specific entities inside the span+    }+  deriving (Eq,Ord,Typeable,Data,Generic)++-- Identical output to the derived show instance for GHC 7.10 and earlier.+instance Show SrcSpanInfo where+  showsPrec n (SrcSpanInfo s pts) = showParen (n >= 11) . showString $+    "SrcSpanInfo {srcInfoSpan = " ++ show s ++ ", srcInfoPoints = " ++ show pts ++ "}"++-- | Generate a 'SrcSpanInfo' with no positional information for entities.+noInfoSpan :: SrcSpan -> SrcSpanInfo+noInfoSpan ss = SrcSpanInfo ss []++-- | A bogus `SrcSpanInfo`, the location is @noLoc@.+-- `noSrcSpan = noInfoSpan (mkSrcSpan noLoc noLoc)`+noSrcSpan :: SrcSpanInfo+noSrcSpan = noInfoSpan (mkSrcSpan noLoc noLoc)++-- | Generate a 'SrcSpanInfo' with the supplied positional information for entities.+infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo+infoSpan = SrcSpanInfo++-- | Combine two 'SrcSpanInfo's into one that spans the combined source area of+--   the two arguments, leaving positional information blank.+combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo+combSpanInfo s1 s2 = SrcSpanInfo+    (mergeSrcSpan (srcInfoSpan s1) (srcInfoSpan s2))+    []++-- | Like '(<+?>)', but it also concatenates the 'srcInfoPoints'.+combSpanMaybe :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo+combSpanMaybe s1 Nothing = s1+combSpanMaybe s1 (Just s2) = SrcSpanInfo+    (mergeSrcSpan (srcInfoSpan s1) (srcInfoSpan s2))+    (srcInfoPoints s1 ++ srcInfoPoints s2)++-- | Short name for 'combSpanInfo'+(<++>) :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo+(<++>) = combSpanInfo++-- | Optionally combine the first argument with the second,+--   or return it unchanged if the second argument is 'Nothing'.+(<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo+a <+?> b = case b of {Nothing -> a; Just b' -> a <++> b'}++-- | Optionally combine the second argument with the first,+--   or return it unchanged if the first argument is 'Nothing'.+(<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo+a <?+> b = case a of {Nothing -> b; Just a' -> a' <++> b}++-- | Add more positional information for entities of a span.+(<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo+ss@(SrcSpanInfo {srcInfoPoints = ps}) <** xs = ss {srcInfoPoints = ps ++ xs}++-- | Merge two 'SrcSpan's and lift them to a 'SrcInfoSpan' with+--   no positional information for entities.+(<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo+a <^^> b = noInfoSpan (mergeSrcSpan a b)++infixl 6 <^^>+infixl 5 <++>+infixl 4 <**, <+?>, <?+>++-- | A class to work over all kinds of source location information.+class SrcInfo si where+  toSrcInfo   :: SrcLoc -> [SrcSpan] -> SrcLoc -> si+  fromSrcInfo :: SrcSpanInfo -> si+  getPointLoc :: si -> SrcLoc+  fileName    :: si -> String+  startLine   :: si -> Int+  startColumn :: si -> Int++  getPointLoc si = SrcLoc (fileName si) (startLine si) (startColumn si)++instance SrcInfo SrcLoc where+  toSrcInfo s _ _ = s+  fromSrcInfo si = SrcLoc (fileName si) (startLine si) (startColumn si)+  fileName = srcFilename+  startLine = srcLine+  startColumn = srcColumn++instance SrcInfo SrcSpan where+  toSrcInfo st _ end = mkSrcSpan st end+  fromSrcInfo = srcInfoSpan+  fileName = srcSpanFilename+  startLine = srcSpanStartLine+  startColumn = srcSpanStartColumn++instance SrcInfo SrcSpanInfo where+  toSrcInfo st pts end = SrcSpanInfo (mkSrcSpan st end) pts+  fromSrcInfo = id+  fileName = fileName . srcInfoSpan+  startLine = startLine . srcInfoSpan+  startColumn = startColumn . srcInfoSpan
src/Language/Haskell/Exts/Syntax.hs view
@@ -1,999 +1,1952 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-}--------------------------------------------------------------------------------- |--- Module      :  Language.Haskell.Exts.Syntax--- Copyright   :  (c) Niklas Broberg 2004-2009,---                (c) The GHC Team, 1997-2000--- License     :  BSD-style (see the file LICENSE.txt)------ Maintainer  :  Niklas Broberg, d00nibro@chalmers.se--- Stability   :  stable--- Portability :  portable------ A suite of datatypes describing the abstract syntax of Haskell 98--- <http://www.haskell.org/onlinereport/> plus registered extensions, including:------   * multi-parameter type classes with functional dependencies (MultiParamTypeClasses, FunctionalDependencies)------   * parameters of type class assertions are unrestricted (FlexibleContexts)------   * 'forall' types as universal and existential quantification (RankNTypes, ExistentialQuantification, etc)------   * pattern guards (PatternGuards)------   * implicit parameters (ImplicitParameters)------   * generalised algebraic data types (GADTs)------   * template haskell (TemplateHaskell)------   * empty data type declarations (EmptyDataDecls)------   * unboxed tuples (UnboxedTuples)------   * regular patterns (RegularPatterns)------   * HSP-style XML expressions and patterns (XmlSyntax)-----------------------------------------------------------------------------------module Language.Haskell.Exts.Syntax (-    -- * Modules-    Module(..), WarningText(..), ExportSpec(..),-    ImportDecl(..), ImportSpec(..), Assoc(..),-    -- * Declarations-    Decl(..), Binds(..), IPBind(..),-    -- ** Type classes and instances-    ClassDecl(..), InstDecl(..), Deriving,-    -- ** Data type declarations-    DataOrNew(..), ConDecl(..), QualConDecl(..), GadtDecl(..), BangType(..),-    -- ** Function bindings-    Match(..), Rhs(..), GuardedRhs(..),-    -- * Class Assertions and Contexts-    Context, FunDep(..), Asst(..),-    -- * Types-    Type(..), Boxed(..), Kind(..), TyVarBind(..),-    -- * Expressions-    Exp(..), Stmt(..), QualStmt(..), FieldUpdate(..),-    Alt(..), GuardedAlts(..), GuardedAlt(..), XAttr(..),-    -- * Patterns-    Pat(..), PatField(..), PXAttr(..), RPat(..), RPatOp(..),-    -- * Literals-    Literal(..),-    -- * Variables, Constructors and Operators-    ModuleName(..), QName(..), Name(..), QOp(..), Op(..),-    SpecialCon(..), CName(..), IPName(..), XName(..),--    -- * Template Haskell-    Bracket(..), Splice(..),--    -- * FFI-    Safety(..), CallConv(..),--    -- * Pragmas-    ModulePragma(..), Tool(..),-    Rule(..), RuleVar(..), Activation(..),-    Annotation(..),--    -- * Builtin names--    -- ** Modules-    prelude_mod, main_mod,-    -- ** Main function of a program-    main_name,-    -- ** Constructors-    unit_con_name, tuple_con_name, list_cons_name, unboxed_singleton_con_name,-    unit_con, tuple_con, unboxed_singleton_con,-    -- ** Special identifiers-    as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name,-    export_name, safe_name, unsafe_name, threadsafe_name, stdcall_name, ccall_name,-    -- ** Type constructors-    unit_tycon_name, fun_tycon_name, list_tycon_name, tuple_tycon_name, unboxed_singleton_tycon_name,-    unit_tycon, fun_tycon, list_tycon, tuple_tycon, unboxed_singleton_tycon,--    -- * Source coordinates-    SrcLoc(..),-  ) where---#ifdef __GLASGOW_HASKELL__-#ifdef BASE4-import Data.Data-#else-import Data.Generics (Data(..),Typeable(..))-#endif-#endif--import Language.Haskell.Exts.SrcLoc (SrcLoc(..))--import Language.Haskell.Exts.Annotated.Syntax (Boxed(..), Tool(..))----- | The name of a Haskell module.-newtype ModuleName = ModuleName String-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Constructors with special syntax.--- These names are never qualified, and always refer to builtin type or--- data constructors.-data SpecialCon-    = UnitCon               -- ^ unit type and data constructor @()@-    | ListCon               -- ^ list type constructor @[]@-    | FunCon                -- ^ function type constructor @->@-    | TupleCon Boxed Int    -- ^ /n/-ary tuple type and data-                            --   constructors @(,)@ etc, possibly boxed @(\#,\#)@-    | Cons                  -- ^ list data constructor @(:)@-    | UnboxedSingleCon      -- ^ unboxed singleton tuple constructor @(\# \#)@-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | This type is used to represent qualified variables, and also---   qualified constructors.-data QName-    = Qual ModuleName Name    -- ^ name qualified with a module name-    | UnQual Name             -- ^ unqualified local name-    | Special SpecialCon      -- ^ built-in constructor with special syntax-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | This type is used to represent variables, and also constructors.-data Name-    = Ident String    -- ^ /varid/ or /conid/.-    | Symbol String   -- ^ /varsym/ or /consym/-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An implicit parameter name.-data IPName-    = IPDup String -- ^ ?/ident/, non-linear implicit parameter-    | IPLin String -- ^ %/ident/, linear implicit parameter-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Possibly qualified infix operators (/qop/), appearing in expressions.-data QOp-    = QVarOp QName  -- ^ variable operator (/qvarop/)-    | QConOp QName  -- ^ constructor operator (/qconop/)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Operators appearing in @infix@ declarations are never qualified.-data Op-    = VarOp Name    -- ^ variable operator (/varop/)-    | ConOp Name    -- ^ constructor operator (/conop/)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A name (/cname/) of a component of a class or data type in an @import@---   or export specification.-data CName-    = VarName Name  -- ^ name of a method or field-    | ConName Name  -- ^ name of a data constructor-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A complete Haskell source module.-data Module = Module SrcLoc ModuleName [ModulePragma] (Maybe WarningText)-                        (Maybe [ExportSpec]) [ImportDecl] [Decl]-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An item in a module's export specification.-data ExportSpec-     = EVar QName                   -- ^ variable-     | EAbs QName                   -- ^ @T@:-                                    --   a class or datatype exported abstractly,-                                    --   or a type synonym.-     | EThingAll QName              -- ^ @T(..)@:-                                    --   a class exported with all of its methods, or-                                    --   a datatype exported with all of its constructors.-     | EThingWith QName [CName]     -- ^ @T(C_1,...,C_n)@:-                                    --   a class exported with some of its methods, or-                                    --   a datatype exported with some of its constructors.-     | EModuleContents ModuleName   -- ^ @module M@:-                                    --   re-export a module.-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An import declaration.-data ImportDecl = ImportDecl-    { importLoc :: SrcLoc           -- ^ position of the @import@ keyword.-    , importModule :: ModuleName    -- ^ name of the module imported.-    , importQualified :: Bool       -- ^ imported @qualified@?-    , importSrc :: Bool             -- ^ imported with @{-\# SOURCE \#-}@?-    , importPkg :: Maybe String     -- ^ imported with explicit package name-    , importAs :: Maybe ModuleName  -- ^ optional alias name in an @as@ clause.-    , importSpecs :: Maybe (Bool,[ImportSpec])-            -- ^ optional list of import specifications.-            -- The 'Bool' is 'True' if the names are excluded-            -- by @hiding@.-    }-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An import specification, representing a single explicit item imported---   (or hidden) from a module.-data ImportSpec-     = IVar Name                -- ^ variable-     | IAbs Name                -- ^ @T@:-                                --   the name of a class, datatype or type synonym.-     | IThingAll Name           -- ^ @T(..)@:-                                --   a class imported with all of its methods, or-                                --   a datatype imported with all of its constructors.-     | IThingWith Name [CName]  -- ^ @T(C_1,...,C_n)@:-                                --   a class imported with some of its methods, or-                                --   a datatype imported with some of its constructors.-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Associativity of an operator.-data Assoc-     = AssocNone  -- ^ non-associative operator (declared with @infix@)-     | AssocLeft  -- ^ left-associative operator (declared with @infixl@).-     | AssocRight -- ^ right-associative operator (declared with @infixr@)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A single derived instance, which may have arguments since it may be a MPTC.-type Deriving = (QName, [Type])---- | A top-level declaration.-data Decl-     = TypeDecl     SrcLoc Name [TyVarBind] Type-     -- ^ A type declaration-     | TypeFamDecl  SrcLoc Name [TyVarBind] (Maybe Kind)-     -- ^ A type family declaration-     | DataDecl     SrcLoc DataOrNew Context Name [TyVarBind]              [QualConDecl] [Deriving]-     -- ^ A data OR newtype declaration-     | GDataDecl    SrcLoc DataOrNew Context Name [TyVarBind] (Maybe Kind) [GadtDecl]    [Deriving]-     -- ^ A data OR newtype declaration, GADT style-     | DataFamDecl  SrcLoc {-data-}  Context Name [TyVarBind] (Maybe Kind)-     -- ^ A data family declaration-     | TypeInsDecl  SrcLoc Type Type-     -- ^ A type family instance declaration-     | DataInsDecl  SrcLoc DataOrNew Type              [QualConDecl] [Deriving]-     -- ^ A data family instance declaration-     | GDataInsDecl SrcLoc DataOrNew Type (Maybe Kind) [GadtDecl]    [Deriving]-     -- ^ A data family instance declaration, GADT style-     | ClassDecl    SrcLoc Context Name [TyVarBind] [FunDep] [ClassDecl]-     -- ^ A declaration of a type class-     | InstDecl     SrcLoc Context QName [Type] [InstDecl]-     -- ^ An declaration of a type class instance-     | DerivDecl    SrcLoc Context QName [Type]-     -- ^ A standalone deriving declaration-     | InfixDecl    SrcLoc Assoc Int [Op]-     -- ^ A declaration of operator fixity-     | DefaultDecl  SrcLoc [Type]-     -- ^ A declaration of default types-     | SpliceDecl   SrcLoc Exp-     -- ^ A Template Haskell splicing declaration-     | TypeSig      SrcLoc [Name] Type-     -- ^ A type signature declaration-     | FunBind      [Match]-     -- ^ A set of function binding clauses-     | PatBind      SrcLoc Pat (Maybe Type) Rhs {-where-} Binds-     -- ^ A pattern binding-     | ForImp   SrcLoc CallConv Safety String Name Type-     -- ^ A foreign import declaration-     | ForExp   SrcLoc CallConv          String Name Type-     -- ^ A foreign export declaration--     | RulePragmaDecl   SrcLoc [Rule]-     -- ^ A RULES pragma-     | DeprPragmaDecl   SrcLoc [([Name], String)]-     -- ^ A DEPRECATED pragma-     | WarnPragmaDecl   SrcLoc [([Name], String)]-     -- ^ A WARNING pragma-     | InlineSig        SrcLoc Bool Activation QName-     -- ^ An INLINE pragma-     | InlineConlikeSig SrcLoc      Activation QName-     -- ^ An INLINE CONLIKE pragma-     | SpecSig          SrcLoc                 QName [Type]-     -- ^ A SPECIALISE pragma-     | SpecInlineSig    SrcLoc Bool Activation QName [Type]-     -- ^ A SPECIALISE INLINE pragma-     | InstSig          SrcLoc Context         QName [Type]-     -- ^ A SPECIALISE instance pragma-     | AnnPragma        SrcLoc Annotation-     -- ^ An ANN pragma-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An annotation through an ANN pragma.-data Annotation-    = Ann       Name Exp-    -- ^ An annotation for a declared name.-    | TypeAnn   Name Exp-    -- ^ An annotation for a declared type.-    | ModuleAnn      Exp-    -- ^ An annotation for the defining module.-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A flag stating whether a declaration is a data or newtype declaration.-data DataOrNew = DataType | NewType-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A binding group inside a @let@ or @where@ clause.-data Binds-    = BDecls [Decl]     -- ^ An ordinary binding group-    | IPBinds [IPBind]  -- ^ A binding group for implicit parameters-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A binding of an implicit parameter.-data IPBind = IPBind SrcLoc IPName Exp-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Clauses of a function binding.-data Match-     = Match SrcLoc Name [Pat] (Maybe Type) Rhs {-where-} Binds-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A single constructor declaration within a data type declaration,---   which may have an existential quantification binding.-data QualConDecl-    = QualConDecl SrcLoc-        {-forall-} [TyVarBind] {- . -} Context-        {- => -} ConDecl-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Declaration of an ordinary data constructor.-data ConDecl-     = ConDecl Name [BangType]-                -- ^ ordinary data constructor-     | InfixConDecl BangType Name BangType-                -- ^ infix data constructor-     | RecDecl Name [([Name],BangType)]-                -- ^ record constructor-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A single constructor declaration in a GADT data type declaration.-data GadtDecl-    = GadtDecl SrcLoc Name Type-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Declarations inside a class declaration.-data ClassDecl-    = ClsDecl    Decl-            -- ^ ordinary declaration-    | ClsDataFam SrcLoc Context Name [TyVarBind] (Maybe Kind)-            -- ^ declaration of an associated data type-    | ClsTyFam   SrcLoc         Name [TyVarBind] (Maybe Kind)-            -- ^ declaration of an associated type synonym-    | ClsTyDef   SrcLoc Type    Type-            -- ^ default choice for an associated type synonym-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Declarations inside an instance declaration.-data InstDecl-    = InsDecl   Decl-            -- ^ ordinary declaration-    | InsType   SrcLoc Type Type-            -- ^ an associated type definition-    | InsData   SrcLoc DataOrNew Type [QualConDecl] [Deriving]-            -- ^ an associated data type implementation-    | InsGData  SrcLoc DataOrNew Type (Maybe Kind) [GadtDecl] [Deriving]-            -- ^ an associated data type implemented using GADT style-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The type of a constructor argument or field, optionally including---   a strictness annotation.-data BangType-     = BangedTy   Type  -- ^ strict component, marked with \"@!@\"-     | UnBangedTy Type  -- ^ non-strict component-     | UnpackedTy Type  -- ^ unboxed component, marked with an UNPACK pragma-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The right hand side of a function or pattern binding.-data Rhs-     = UnGuardedRhs Exp -- ^ unguarded right hand side (/exp/)-     | GuardedRhss  [GuardedRhs]-                        -- ^ guarded right hand side (/gdrhs/)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A guarded right hand side @|@ /stmts/ @=@ /exp/.---   The guard is a series of statements when using pattern guards,---   otherwise it will be a single qualifier expression.-data GuardedRhs-     = GuardedRhs SrcLoc [Stmt] Exp-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A type qualified with a context.---   An unqualified type has an empty context.-data Type-     = TyForall-        (Maybe [TyVarBind])-        Context-        Type                    -- ^ qualified type-     | TyFun   Type Type        -- ^ function type-     | TyTuple Boxed [Type]     -- ^ tuple type, possibly boxed-     | TyList  Type             -- ^ list syntax, e.g. [a], as opposed to [] a-     | TyApp   Type Type        -- ^ application of a type constructor-     | TyVar   Name             -- ^ type variable-     | TyCon   QName            -- ^ named type or type constructor-     | TyParen Type             -- ^ type surrounded by parentheses-     | TyInfix Type QName Type  -- ^ infix type constructor-     | TyKind  Type Kind        -- ^ type with explicit kind signature-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A type variable declaration, optionally with an explicit kind annotation.-data TyVarBind-    = KindedVar Name Kind   -- ^ variable binding with kind annotation-    | UnkindedVar Name      -- ^ ordinary variable binding-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An explicit kind annotation.-data Kind-    = KindStar          -- ^ @*@, the kind of types-    | KindBang          -- ^ @!@, the kind of unboxed types-    | KindFn Kind Kind  -- ^ @->@, the kind of a type constructor-    | KindParen Kind    -- ^ a kind surrounded by parentheses-    | KindVar Name      -- ^ a kind variable (as of yet unsupported by compilers)-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif----- | A functional dependency, given on the form---   l1 l2 ... ln -> r2 r3 .. rn-data FunDep-    = FunDep [Name] [Name]-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A context is a set of assertions-type Context = [Asst]---- | Class assertions.---   In Haskell 98, the argument would be a /tyvar/, but this definition---   allows multiple parameters, and allows them to be /type/s.---   Also extended with support for implicit parameters and equality constraints.-data Asst = ClassA QName [Type]     -- ^ ordinary class assertion-          | InfixA Type QName Type  -- ^ class assertion where the class name is given infix-          | IParam IPName Type      -- ^ implicit parameter assertion-          | EqualP Type   Type      -- ^ type equality constraint-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | /literal/--- Values of this type hold the abstract value of the literal, not the--- precise string representation used.  For example, @10@, @0o12@ and @0xa@--- have the same representation.-data Literal-    = Char    Char          -- ^ character literal-    | String  String        -- ^ string literal-    | Int     Integer       -- ^ integer literal-    | Frac    Rational      -- ^ floating point literal-    | PrimInt    Integer    -- ^ unboxed integer literal-    | PrimWord   Integer    -- ^ unboxed word literal-    | PrimFloat  Rational   -- ^ unboxed float literal-    | PrimDouble Rational   -- ^ unboxed double literal-    | PrimChar   Char       -- ^ unboxed character literal-    | PrimString String     -- ^ unboxed string literal-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Haskell expressions.-data Exp-    = Var QName                 -- ^ variable-    | IPVar IPName              -- ^ implicit parameter variable-    | Con QName                 -- ^ data constructor-    | Lit Literal               -- ^ literal constant-    | InfixApp Exp QOp Exp      -- ^ infix application-    | App Exp Exp               -- ^ ordinary application-    | NegApp Exp                -- ^ negation expression @-/exp/@ (unary minus)-    | Lambda SrcLoc [Pat] Exp   -- ^ lambda expression-    | Let Binds Exp             -- ^ local declarations with @let@ ... @in@ ...-    | If Exp Exp Exp            -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/-    | Case Exp [Alt]            -- ^ @case@ /exp/ @of@ /alts/-    | Do [Stmt]                 -- ^ @do@-expression:-                                --   the last statement in the list-                                --   should be an expression.-    | MDo [Stmt]                -- ^ @mdo@-expression-    | Tuple [Exp]               -- ^ tuple expression-    | TupleSection [Maybe Exp]  -- ^ tuple section expression, e.g. @(,,3)@-    | List [Exp]                -- ^ list expression-    | Paren Exp                 -- ^ parenthesised expression-    | LeftSection Exp QOp       -- ^ left section @(@/exp/ /qop/@)@-    | RightSection QOp Exp      -- ^ right section @(@/qop/ /exp/@)@-    | RecConstr QName [FieldUpdate]-                                -- ^ record construction expression-    | RecUpdate Exp [FieldUpdate]-                                -- ^ record update expression-    | EnumFrom Exp              -- ^ unbounded arithmetic sequence,-                                --   incrementing by 1: @[from ..]@-    | EnumFromTo Exp Exp        -- ^ bounded arithmetic sequence,-                                --   incrementing by 1 @[from .. to]@-    | EnumFromThen Exp Exp      -- ^ unbounded arithmetic sequence,-                                --   with first two elements given @[from, then ..]@-    | EnumFromThenTo Exp Exp Exp-                                -- ^ bounded arithmetic sequence,-                                --   with first two elements given @[from, then .. to]@-    | ListComp Exp  [QualStmt]    -- ^ ordinary list comprehension-    | ParComp  Exp [[QualStmt]]   -- ^ parallel list comprehension-    | ExpTypeSig SrcLoc Exp Type  -- ^ expression with explicit type signature--    | VarQuote QName            -- ^ @'x@ for template haskell reifying of expressions-    | TypQuote QName            -- ^ @''T@ for template haskell reifying of types-    | BracketExp Bracket        -- ^ template haskell bracket expression-    | SpliceExp Splice          -- ^ template haskell splice expression-    | QuasiQuote String String  -- ^ quasi-quotaion: @[$/name/| /string/ |]@---- Hsx-    | XTag SrcLoc XName [XAttr] (Maybe Exp) [Exp]-                                -- ^ xml element, with attributes and children-    | XETag SrcLoc XName [XAttr] (Maybe Exp)-                                -- ^ empty xml element, with attributes-    | XPcdata String            -- ^ PCDATA child element-    | XExpTag Exp               -- ^ escaped haskell expression inside xml---- Pragmas-    | CorePragma        String Exp      -- ^ CORE pragma-    | SCCPragma         String Exp      -- ^ SCC pragma-    | GenPragma         String (Int, Int) (Int, Int) Exp-                                        -- ^ GENERATED pragma---- Arrows-    | Proc SrcLoc     Pat Exp   -- ^ arrows proc: @proc@ /pat/ @->@ /exp/-    | LeftArrApp      Exp Exp   -- ^ arrow application (from left): /exp/ @-<@ /exp/-    | RightArrApp     Exp Exp   -- ^ arrow application (from right): /exp/ @>-@ /exp/-    | LeftArrHighApp  Exp Exp   -- ^ higher-order arrow application (from left): /exp/ @-<<@ /exp/-    | RightArrHighApp Exp Exp   -- ^ higher-order arrow application (from right): /exp/ @>>-@ /exp/-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The name of an xml element or attribute,---   possibly qualified with a namespace.-data XName-    = XName String              -- <name ...-    | XDomName String String    -- <dom:name ...-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An xml attribute, which is a name-expression pair.-data XAttr = XAttr XName Exp-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A template haskell bracket expression.-data Bracket-    = ExpBracket Exp        -- ^ expression bracket: @[| ... |]@-    | PatBracket Pat        -- ^ pattern bracket: @[p| ... |]@-    | TypeBracket Type      -- ^ type bracket: @[t| ... |]@-    | DeclBracket [Decl]    -- ^ declaration bracket: @[d| ... |]@-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A template haskell splice expression-data Splice-    = IdSplice String       -- ^ variable splice: @$var@-    | ParenSplice Exp       -- ^ parenthesised expression splice: @$(/exp/)@-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The safety of a foreign function call.-data Safety-    = PlayRisky         -- ^ unsafe-    | PlaySafe Bool     -- ^ safe ('False') or threadsafe ('True')-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The calling convention of a foreign function call.-data CallConv-    = StdCall-    | CCall-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A top level options pragma, preceding the module header.-data ModulePragma-    = LanguagePragma   SrcLoc [Name]    -- ^ LANGUAGE pragma-    | OptionsPragma    SrcLoc (Maybe Tool) String-                        -- ^ OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC-    | AnnModulePragma  SrcLoc Annotation-                        -- ^ ANN pragma with module scope-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Activation clause of a RULES pragma.-data Activation-    = AlwaysActive-    | ActiveFrom  Int-    | ActiveUntil Int-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The body of a RULES pragma.-data Rule-    = Rule String Activation (Maybe [RuleVar]) Exp Exp-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Variables used in a RULES pragma, optionally annotated with types-data RuleVar-    = RuleVar Name-    | TypedRuleVar Name Type-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | Warning text to optionally use in the module header of e.g.---   a deprecated module.-data WarningText-    = DeprText String-    | WarnText String-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif----- | A pattern, to be matched against a value.-data Pat-    = PVar Name                     -- ^ variable-    | PLit Literal                  -- ^ literal constant-    | PNeg Pat                      -- ^ negated pattern-    | PNPlusK Name Integer          -- ^ n+k pattern-    | PInfixApp Pat QName Pat       -- ^ pattern with an infix data constructor-    | PApp QName [Pat]              -- ^ data constructor and argument patterns-    | PTuple [Pat]                  -- ^ tuple pattern-    | PList [Pat]                   -- ^ list pattern-    | PParen Pat                    -- ^ parenthesized pattern-    | PRec QName [PatField]         -- ^ labelled pattern, record style-    | PAsPat Name Pat               -- ^ @\@@-pattern-    | PWildCard                     -- ^ wildcard pattern: @_@-    | PIrrPat Pat                   -- ^ irrefutable pattern: @~/pat/@-    | PatTypeSig SrcLoc Pat Type    -- ^ pattern with type signature-    | PViewPat Exp Pat              -- ^ view patterns of the form @(/exp/ -> /pat/)@-    | PRPat [RPat]                  -- ^ regular list pattern-    | PXTag SrcLoc XName [PXAttr] (Maybe Pat) [Pat]-                                    -- ^ XML element pattern-    | PXETag SrcLoc XName [PXAttr] (Maybe Pat)-                                    -- ^ XML singleton element pattern-    | PXPcdata String               -- ^ XML PCDATA pattern-    | PXPatTag Pat                  -- ^ XML embedded pattern-    | PXRPats [RPat]                -- ^ XML regular list pattern-    | PExplTypeArg QName Type       -- ^ Explicit generics style type argument e.g. @f {| Int |} x = ...@-    | PQuasiQuote String String     -- ^ quasi quote patter: @[$/name/| /string/ |]@-    | PBangPat Pat                  -- ^ strict (bang) pattern: @f !x = ...@-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An XML attribute in a pattern.-data PXAttr = PXAttr XName Pat-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A regular pattern operator.-data RPatOp-    = RPStar    -- ^ @*@ = 0 or more-    | RPStarG   -- ^ @*!@ = 0 or more, greedy-    | RPPlus    -- ^ @+@ = 1 or more-    | RPPlusG   -- ^ @+!@ = 1 or more, greedy-    | RPOpt     -- ^ @?@ = 0 or 1-    | RPOptG    -- ^ @?!@ = 0 or 1, greedy-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An entity in a regular pattern.-data RPat-    = RPOp RPat RPatOp      -- ^ operator pattern, e.g. pat*-    | RPEither RPat RPat    -- ^ choice pattern, e.g. (1 | 2)-    | RPSeq [RPat]          -- ^ sequence pattern, e.g. (| 1, 2, 3 |)-    | RPGuard Pat [Stmt]    -- ^ guarded pattern, e.g. (| p | p < 3 |)-    | RPCAs Name RPat       -- ^ non-linear variable binding, e.g. (foo\@:(1 | 2))*-    | RPAs Name RPat        -- ^ linear variable binding, e.g. foo\@(1 | 2)-    | RPParen RPat          -- ^ parenthesised pattern, e.g. (2*)-    | RPPat Pat             -- ^ an ordinary pattern-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An /fpat/ in a labeled record pattern.-data PatField-    = PFieldPat QName Pat       -- ^ ordinary label-pattern pair-    | PFieldPun Name            -- ^ record field pun-    | PFieldWildcard            -- ^ record field wildcard-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A statement, representing both a /stmt/ in a @do@-expression,---   an ordinary /qual/ in a list comprehension, as well as a /stmt/---   in a pattern guard.-data Stmt-    = Generator SrcLoc Pat Exp-                        -- ^ a generator: /pat/ @<-@ /exp/-    | Qualifier Exp     -- ^ an /exp/ by itself: in a @do@-expression,-                        --   an action whose result is discarded;-                        --   in a list comprehension and pattern guard,-                        --   a guard expression-    | LetStmt Binds     -- ^ local bindings-    | RecStmt [Stmt]    -- ^ a recursive binding group for arrows-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A general /transqual/ in a list comprehension,---   which could potentially be a transform of the kind---   enabled by TransformListComp.-data QualStmt-    = QualStmt     Stmt         -- ^ an ordinary statement-    | ThenTrans    Exp          -- ^ @then@ /exp/-    | ThenBy       Exp Exp      -- ^ @then@ /exp/ @by@ /exp/-    | GroupBy      Exp          -- ^ @then@ @group@ @by@ /exp/-    | GroupUsing   Exp          -- ^ @then@ @group@ @using@ /exp/-    | GroupByUsing Exp Exp      -- ^ @then@ @group@ @by@ /exp/ @using@ /exp/-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An /fbind/ in a labeled construction or update expression.-data FieldUpdate-    = FieldUpdate QName Exp     -- ^ ordinary label-expresion pair-    | FieldPun Name             -- ^ record field pun-    | FieldWildcard             -- ^ record field wildcard-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | An /alt/ alternative in a @case@ expression.-data Alt-    = Alt SrcLoc Pat GuardedAlts Binds-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | The right-hand sides of a @case@ alternative,---   which may be a single right-hand side or a---   set of guarded ones.-data GuardedAlts-    = UnGuardedAlt Exp          -- ^ @->@ /exp/-    | GuardedAlts  [GuardedAlt] -- ^ /gdpat/-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---- | A guarded case alternative @|@ /stmts/ @->@ /exp/.-data GuardedAlt-    = GuardedAlt SrcLoc [Stmt] Exp-#ifdef __GLASGOW_HASKELL__-  deriving (Eq,Ord,Show,Typeable,Data)-#else-  deriving (Eq,Ord,Show)-#endif---------------------------------------------------------------------------------- Builtin names.--prelude_mod, main_mod :: ModuleName-prelude_mod = ModuleName "Prelude"-main_mod    = ModuleName "Main"--main_name :: Name-main_name = Ident "main"--unit_con_name :: QName-unit_con_name = Special UnitCon--tuple_con_name :: Boxed -> Int -> QName-tuple_con_name b i = Special (TupleCon b (i+1))--list_cons_name :: QName-list_cons_name = Special Cons--unboxed_singleton_con_name :: QName-unboxed_singleton_con_name = Special UnboxedSingleCon--unit_con :: Exp-unit_con = Con unit_con_name--tuple_con :: Boxed -> Int -> Exp-tuple_con b i = Con (tuple_con_name b i)--unboxed_singleton_con :: Exp-unboxed_singleton_con = Con (unboxed_singleton_con_name)--as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name :: Name-as_name        = Ident "as"-qualified_name = Ident "qualified"-hiding_name    = Ident "hiding"-minus_name     = Symbol "-"-bang_name      = Symbol "!"-dot_name       = Symbol "."-star_name      = Symbol "*"--export_name, safe_name, unsafe_name, threadsafe_name, stdcall_name, ccall_name :: Name-export_name     = Ident "export"-safe_name       = Ident "safe"-unsafe_name     = Ident "unsafe"-threadsafe_name = Ident "threadsafe"-stdcall_name    = Ident "stdcall"-ccall_name      = Ident "ccall"--unit_tycon_name, fun_tycon_name, list_tycon_name, unboxed_singleton_tycon_name :: QName-unit_tycon_name = unit_con_name-fun_tycon_name  = Special FunCon-list_tycon_name = Special ListCon-unboxed_singleton_tycon_name = Special UnboxedSingleCon--tuple_tycon_name :: Boxed -> Int -> QName-tuple_tycon_name b i = tuple_con_name b i--unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: Type-unit_tycon = TyCon unit_tycon_name-fun_tycon  = TyCon fun_tycon_name-list_tycon = TyCon list_tycon_name-unboxed_singleton_tycon = TyCon unboxed_singleton_tycon_name--tuple_tycon :: Boxed -> Int -> Type-tuple_tycon b i = TyCon (tuple_tycon_name b i)+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE CPP #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  Language.Haskell.Exts.Syntax+-- Copyright   :  (c) Niklas Broberg 2004-2009,+--                (c) The GHC Team, 1997-2000+-- License     :  BSD-style (see the file LICENSE.txt)+--+-- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se+-- Stability   :  stable+-- Portability :  portable+--+-- A suite of datatypes describing the (semi-concrete) abstract syntax of Haskell 98+-- <http://www.haskell.org/onlinereport/> plus registered extensions, including:+--+--   * multi-parameter type classes with functional dependencies (MultiParamTypeClasses, FunctionalDependencies)+--+--   * parameters of type class assertions are unrestricted (FlexibleContexts)+--+--   * 'forall' types as universal and existential quantification (RankNTypes, ExistentialQuantification, etc)+--+--   * pattern guards (PatternGuards)+--+--   * implicit parameters (ImplicitParameters)+--+--   * generalised algebraic data types (GADTs)+--+--   * template haskell (TemplateHaskell)+--+--   * empty data type declarations (EmptyDataDecls)+--+--   * unboxed tuples (UnboxedTuples)+--+--   * regular patterns (RegularPatterns)+--+--   * HSP-style XML expressions and patterns (XmlSyntax)+--+-- All nodes in the syntax tree are annotated with something of a user-definable data type.+-- When parsing, this annotation will contain information about the source location that the+-- particular node comes from.+--+-----------------------------------------------------------------------------++module Language.Haskell.Exts.Syntax (+    -- * Modules+    Module(..), ModuleHead(..), WarningText(..), ExportSpecList(..), ExportSpec(..),+    EWildcard(..),+    ImportDecl(..), ImportSpecList(..), ImportSpec(..), Assoc(..), Namespace(..),+    -- * Declarations+    Decl(..), DeclHead(..), InstRule(..), InstHead(..), Binds(..), IPBind(..), PatternSynDirection(..),+    InjectivityInfo(..), ResultSig(..),+    -- ** Type classes and instances+    ClassDecl(..), InstDecl(..), Deriving(..), DerivStrategy(..),+    -- ** Data type declarations+    DataOrNew(..), ConDecl(..), FieldDecl(..), QualConDecl(..), GadtDecl(..), BangType(..),+    Unpackedness(..),+    -- ** Function bindings+    Match(..), Rhs(..), GuardedRhs(..),+    -- * Class Assertions and Contexts+    Context(..), FunDep(..), Asst(..),+    -- * Types+    Type(..), Boxed(..), Kind, TyVarBind(..), Promoted(..),+    TypeEqn (..),+    -- * Expressions+    Exp(..), Stmt(..), QualStmt(..), FieldUpdate(..),+    Alt(..), XAttr(..),+    -- * Patterns+    Pat(..), PatField(..), PXAttr(..), RPat(..), RPatOp(..),+    -- * Literals+    Literal(..), Sign(..),+    -- * Variables, Constructors and Operators+    ModuleName(..), QName(..), Name(..), QOp(..), Op(..),+    SpecialCon(..), CName(..), IPName(..), XName(..), Role(..),+    MaybePromotedName(..),++    -- * Template Haskell+    Bracket(..), Splice(..),++    -- * FFI+    Safety(..), CallConv(..),++    -- * Pragmas+    ModulePragma(..), Tool(..), Overlap(..),+    Rule(..), RuleVar(..), Activation(..),+    Annotation(..), BooleanFormula(..),++    -- * Builtin names++    -- ** Modules+    prelude_mod, main_mod,+    -- ** Main function of a program+    main_name,+    -- ** Constructors+    unit_con_name, tuple_con_name, list_con_name, list_cons_name, unboxed_singleton_con_name,+    unit_con, tuple_con, unboxed_singleton_con,+    -- ** Special identifiers+    as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name,+    export_name, safe_name, unsafe_name, interruptible_name, threadsafe_name,+    stdcall_name, ccall_name, cplusplus_name, dotnet_name, jvm_name, js_name,+    javascript_name, capi_name, forall_name, family_name, role_name, hole_name,+    stock_name, anyclass_name, via_name,+    -- ** Type constructors+    unit_tycon_name, fun_tycon_name, list_tycon_name, tuple_tycon_name, unboxed_singleton_tycon_name,+    unit_tycon, fun_tycon, list_tycon, tuple_tycon, unboxed_singleton_tycon,++    -- * Source coordinates+    -- SrcLoc(..),++    -- * Annotated trees+    Annotated(..), (=~=),+  ) where++import Prelude hiding (id)++import Data.Data+import GHC.Generics (Generic)+#if __GLASGOW_HASKELL__ < 710+import Data.Foldable (Foldable)+import Data.Traversable (Traversable)+#endif++-- | The name of a Haskell module.+data ModuleName l = ModuleName l String+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Constructors with special syntax.+-- These names are never qualified, and always refer to builtin type or+-- data constructors.+data SpecialCon l+    = UnitCon l             -- ^ unit type and data constructor @()@+    | ListCon l             -- ^ list type and data constructor @[]@+    | FunCon  l             -- ^ function type constructor @->@+    | TupleCon l Boxed Int  -- ^ /n/-ary tuple type and data+                            --   constructors @(,)@ etc, possibly boxed @(\#,\#)@+    | Cons l                -- ^ list data constructor @(:)@+    | UnboxedSingleCon l    -- ^ unboxed singleton tuple constructor @(\# \#)@+    | ExprHole l            -- ^ An expression hole _+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | This type is used to represent qualified variables, and also+-- qualified constructors.+data QName l+    = Qual    l (ModuleName l) (Name l) -- ^ name qualified with a module name+    | UnQual  l                (Name l) -- ^ unqualified local name+    | Special l (SpecialCon l)          -- ^ built-in constructor with special syntax+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | This type is used to represent variables, and also constructors.+data Name l+    = Ident  l String   -- ^ /varid/ or /conid/.+    | Symbol l String   -- ^ /varsym/ or /consym/+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An implicit parameter name.+data IPName l+    = IPDup l String -- ^ ?/ident/, non-linear implicit parameter+    | IPLin l String -- ^ %/ident/, linear implicit parameter+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Possibly qualified infix operators (/qop/), appearing in expressions.+data QOp l+    = QVarOp l (QName l) -- ^ variable operator (/qvarop/)+    | QConOp l (QName l) -- ^ constructor operator (/qconop/)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Operators appearing in @infix@ declarations are never qualified.+data Op l+    = VarOp l (Name l)    -- ^ variable operator (/varop/)+    | ConOp l (Name l)    -- ^ constructor operator (/conop/)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A name (/cname/) of a component of a class or data type in an @import@+-- or export specification.+data CName l+    = VarName l (Name l) -- ^ name of a method or field+    | ConName l (Name l) -- ^ name of a data constructor+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A complete Haskell source module.+data Module l+    = Module l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l]+    -- ^ an ordinary Haskell module+    | XmlPage l (ModuleName l) [ModulePragma l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]+    -- ^ a module consisting of a single XML document. The ModuleName never appears in the source+    --   but is needed for semantic purposes, it will be the same as the file name.+    | XmlHybrid l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l]+                (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]+    -- ^ a hybrid module combining an XML document with an ordinary module+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The head of a module, including the name and export specification.+data ModuleHead l = ModuleHead l (ModuleName l) (Maybe (WarningText l)) (Maybe (ExportSpecList l))+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An explicit export specification.+data ExportSpecList l+    = ExportSpecList l [ExportSpec l]+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An item in a module's export specification.+data ExportSpec l+     = EVar l (QName l)                 -- ^ variable.+     | EAbs l (Namespace l) (QName l)   -- ^ @T@:+                                        --   a class or datatype exported abstractly,+                                        --   or a type synonym.+     | EThingWith l (EWildcard l) (QName l) [CName l] -- ^ @T(C_1,...,C_n)@:+                                        --   a class exported with some of its methods, or+                                        --   a datatype exported with some of its constructors.+     | EModuleContents l (ModuleName l) -- ^ @module M@:+                                        --   re-export a module.+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Indicates the position of the wildcard in an export list+data EWildcard l = NoWildcard l | EWildcard l Int+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Namespaces for imports/exports.+data Namespace l = NoNamespace l | TypeNamespace l | PatternNamespace l+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An import declaration.+data ImportDecl l = ImportDecl+    { importAnn :: l                   -- ^ annotation, used by parser for position of the @import@ keyword.+    , importModule :: ModuleName l     -- ^ name of the module imported.+    , importQualified :: Bool          -- ^ imported @qualified@?+    , importSrc :: Bool                -- ^ imported with @{-\# SOURCE \#-}@?+    , importSafe :: Bool               -- ^ Import @safe@?+    , importPkg :: Maybe String        -- ^ imported with explicit package name+    , importAs :: Maybe (ModuleName l) -- ^ optional alias name in an @as@ clause.+    , importSpecs :: Maybe (ImportSpecList l)+            -- ^ optional list of import specifications.+    }+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An explicit import specification list.+data ImportSpecList l+    = ImportSpecList l Bool [ImportSpec l]+            -- ^ A list of import specifications.+            -- The 'Bool' is 'True' if the names are excluded+            -- by @hiding@.+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An import specification, representing a single explicit item imported+--   (or hidden) from a module.+data ImportSpec l+     = IVar l (Name l)                  -- ^ variable+     | IAbs l (Namespace l) (Name l)    -- ^ @T@:+                                        --   the name of a class, datatype or type synonym.+     | IThingAll l (Name l)             -- ^ @T(..)@:+                                        --   a class imported with all of its methods, or+                                        --   a datatype imported with all of its constructors.+     | IThingWith l (Name l) [CName l]  -- ^ @T(C_1,...,C_n)@:+                                        --   a class imported with some of its methods, or+                                        --   a datatype imported with some of its constructors.+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Associativity of an operator.+data Assoc l+     = AssocNone  l -- ^ non-associative operator (declared with @infix@)+     | AssocLeft  l -- ^ left-associative operator (declared with @infixl@).+     | AssocRight l -- ^ right-associative operator (declared with @infixr@)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A top-level declaration.+data Decl l+     = TypeDecl     l (DeclHead l) (Type l)+     -- ^ A type declaration+     | TypeFamDecl  l (DeclHead l) (Maybe (ResultSig l)) (Maybe (InjectivityInfo l))+     -- ^ A type family declaration+     | ClosedTypeFamDecl  l (DeclHead l) (Maybe (ResultSig l)) (Maybe (InjectivityInfo l)) [TypeEqn l]+     -- ^ A closed type family declaration+     | DataDecl     l (DataOrNew l) (Maybe (Context l)) (DeclHead l)                  [QualConDecl l] [Deriving l]+     -- ^ A data OR newtype declaration+     | GDataDecl    l (DataOrNew l) (Maybe (Context l)) (DeclHead l) (Maybe (Kind l)) [GadtDecl l]    [Deriving l]+     -- ^ A data OR newtype declaration, GADT style+     | DataFamDecl  l {-data-}      (Maybe (Context l)) (DeclHead l) (Maybe (ResultSig l))+     -- ^ A data family declaration+     | TypeInsDecl  l (Type l) (Type l)+     -- ^ A type family instance declaration+     | DataInsDecl  l (DataOrNew l) (Type l)                  [QualConDecl l] [Deriving l]+     -- ^ A data family instance declaration+     | GDataInsDecl l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l]    [Deriving l]+     -- ^ A data family instance declaration, GADT style+     | ClassDecl    l (Maybe (Context l)) (DeclHead l) [FunDep l] (Maybe [ClassDecl l])+     -- ^ A declaration of a type class+     | InstDecl     l (Maybe (Overlap l)) (InstRule l) (Maybe [InstDecl l])+     -- ^ An declaration of a type class instance+     | DerivDecl    l (Maybe (DerivStrategy l)) (Maybe (Overlap l)) (InstRule l)+     -- ^ A standalone deriving declaration+     | InfixDecl    l (Assoc l) (Maybe Int) [Op l]+     -- ^ A declaration of operator fixity+     | DefaultDecl  l [Type l]+     -- ^ A declaration of default types+     | SpliceDecl   l (Exp l)+     -- ^ A Template Haskell splicing declaration+     | TSpliceDecl  l (Exp l)+     -- ^ A typed Template Haskell splicing declaration+     | TypeSig      l [Name l] (Type l)+     -- ^ A type signature declaration+     | PatSynSig    l [Name l] (Maybe [TyVarBind l]) (Maybe (Context l))+                               (Maybe [TyVarBind l]) (Maybe (Context l))+                                                     (Type l)+     -- ^ A pattern synonym signature declation+     | FunBind      l [Match l]+     -- ^ A set of function binding clauses+     | PatBind      l (Pat l) (Rhs l) {-where-} (Maybe (Binds l))+     -- ^ A pattern binding+     | PatSyn l (Pat l) (Pat l) (PatternSynDirection l)+     -- ^ A pattern synonym binding+     | ForImp       l (CallConv l) (Maybe (Safety l)) (Maybe String) (Name l) (Type l)+     -- ^ A foreign import declaration+     | ForExp       l (CallConv l)                    (Maybe String) (Name l) (Type l)+     -- ^ A foreign export declaration+     | RulePragmaDecl   l [Rule l]+     -- ^ A RULES pragma+     | DeprPragmaDecl   l [([Name l], String)]+     -- ^ A DEPRECATED pragma+     | WarnPragmaDecl   l [([Name l], String)]+     -- ^ A WARNING pragma+     | InlineSig        l Bool (Maybe (Activation l)) (QName l)+     -- ^ An INLINE pragma+     | InlineConlikeSig l      (Maybe (Activation l)) (QName l)+     -- ^ An INLINE CONLIKE pragma+     | SpecSig          l      (Maybe (Activation l)) (QName l) [Type l]+     -- ^ A SPECIALISE pragma+     | SpecInlineSig    l Bool (Maybe (Activation l)) (QName l) [Type l]+     -- ^ A SPECIALISE INLINE pragma+     | InstSig          l      (InstRule l)+     -- ^ A SPECIALISE instance pragma+     | AnnPragma        l (Annotation l)+     -- ^ An ANN pragma+     | MinimalPragma    l (Maybe (BooleanFormula l))+     -- ^ A MINIMAL pragma+     | RoleAnnotDecl    l (QName l) [Role l]+     -- ^ A role annotation+     | CompletePragma l [Name l] (Maybe (QName l))+     -- ^ A COMPLETE pragma+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++data  PatternSynDirection l =+      Unidirectional -- ^ A unidirectional pattern synonym with "<-"+    | ImplicitBidirectional  -- ^ A bidirectional pattern synonym with "="+    | ExplicitBidirectional l [Decl l]  -- ^ A birectional pattern synonym with the construction specified.+    deriving (Eq, Ord, Show, Data, Typeable, Foldable, Traversable, Functor, Generic)++-- | A type equation as found in closed type families.+data TypeEqn l = TypeEqn l (Type l) (Type l) deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An annotation through an ANN pragma.+data Annotation l+    = Ann       l (Name l)  (Exp l)+    -- ^ An annotation for a declared name.+    | TypeAnn   l (Name l)  (Exp l)+    -- ^ An annotation for a declared type.+    | ModuleAnn l           (Exp l)+    -- ^ An annotation for the defining module.+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A boolean formula for MINIMAL pragmas.+data BooleanFormula l+    = VarFormula l (Name l)              -- ^ A variable.+    | AndFormula l [BooleanFormula l]    -- ^ And boolean formulas.+    | OrFormula l [BooleanFormula l]     -- ^ Or boolean formulas.+    | ParenFormula l (BooleanFormula l)  -- ^ Parenthesized boolean formulas.+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++data Role l+  = Nominal l+  | Representational l+  | Phantom l+  | RoleWildcard l+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A flag stating whether a declaration is a data or newtype declaration.+data DataOrNew l = DataType l | NewType l+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)+++-- | Injectivity info for injective type families+data InjectivityInfo l = InjectivityInfo l (Name l) [Name l]+  deriving (Eq, Ord, Show, Typeable, Data, Foldable, Traversable, Functor, Generic)++data ResultSig l = KindSig l (Kind l) | TyVarSig l (TyVarBind l)+  deriving (Eq, Ord, Show, Typeable, Data, Foldable, Traversable, Functor, Generic)++-- | The head of a type or class declaration, which consists of the type+-- or class name applied to some type variables+--+-- @class C a b@ is represented as+--+-- >DHApp+-- >   ()+-- >   (DHApp+-- >      () (DHead () (Ident () "C")) (UnkindedVar () (Ident () "a")))+-- >   (UnkindedVar () (Ident () "b"))+--+-- (where the annotation type @l@ is instantiated with @()@)+--+-- @class (a :< b) c@ is represented as+--+-- >DHApp+-- >   ()+-- >   (DHParen+-- >      ()+-- >      (DHApp+-- >         ()+-- >         (DHInfix () (UnkindedVar () (Ident () "a")) (Symbol () ":<"))+-- >         (UnkindedVar () (Ident () "b"))))+-- >   (UnkindedVar () (Ident () "c"))+data DeclHead l+    = DHead l (Name l) -- ^ type or class name+    | DHInfix l (TyVarBind l) (Name l) -- ^ infix application of the type/class name to the left operand+    | DHParen l (DeclHead l) -- ^ parenthesized declaration head+    | DHApp   l (DeclHead l) (TyVarBind l) -- ^ application to one more type variable+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The instance declaration rule, which is, roughly, the part of the instance declaration before the @where@ keyword.+--+-- Example: @instance Ord a => Ord (Maybe a)@ is represented as+--+-- >IRule+-- >   ()+-- >   Nothing+-- >   (Just+-- >      (CxSingle+-- >         ()+-- >         (ClassA+-- >            () (UnQual () (Ident () "Ord")) [ TyVar () (Ident () "a") ])))+-- >   (IHApp+-- >      ()+-- >      (IHCon () (UnQual () (Ident () "Ord")))+-- >      (TyParen+-- >         ()+-- >         (TyApp+-- >            ()+-- >            (TyCon () (UnQual () (Ident () "Maybe")))+-- >            (TyVar () (Ident () "a")))))+--+-- An optional explicit forall after @instance@ is supported:+-- @instance forall a . Ord a => Ord (Maybe a) where@ becomes+--+-- >IRule+-- >   ()+-- >   (Just [ UnkindedVar () (Ident () "a") ])+-- >   ...+data InstRule l+    = IRule l (Maybe [TyVarBind l]) (Maybe (Context l)) (InstHead l)+    | IParen l (InstRule l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- See bugs #7 and #31 for more details and use cases for the rationale+-- of the split. DeclOrInstHead should be used by DeclHead as the name implies.++-- | The instance head. The split between rule/head allow us to represent+-- @instance (Bounded a => Bounded [a]) where@ faithfully.+--+-- The structure of 'InstHead' follows one of 'DeclHead'.+--+-- For example, @instance C (Maybe a) Int where@ is represented as+--+-- >IHApp+-- >   ()+-- >   (IHApp+-- >      ()+-- >      (IHCon () (UnQual () (Ident () "C")))+-- >      (TyParen+-- >         ()+-- >         (TyApp+-- >            ()+-- >            (TyCon () (UnQual () (Ident () "Maybe")))+-- >            (TyVar () (Ident () "a")))))+-- >   (TyCon () (UnQual () (Ident () "Int")))))+data InstHead l+    = IHCon l (QName l) -- ^ type or class name+    | IHInfix l (Type l) (QName l) -- ^ infix application of the type/class name to the left operand+    | IHParen l (InstHead l) -- ^ parenthesized instance head+    | IHApp   l (InstHead l) (Type l) -- ^ application to one more type+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A deriving clause following a data type declaration.+data Deriving l = Deriving l (Maybe (DerivStrategy l)) [InstRule l]+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Which technique the user explicitly requested when deriving an instance.+data DerivStrategy l+  = DerivStock l        -- ^ GHC's \"standard\" strategy, which is to implement a+                        --   custom instance for the data type. This only works for+                        --   certain types that GHC knows about (e.g., 'Eq', 'Show',+                        --   'Functor' when @-XDeriveFunctor@ is enabled, etc.)+  | DerivAnyclass l     -- ^ @-XDeriveAnyClass@+  | DerivNewtype l      -- ^ @-XGeneralizedNewtypeDeriving@+  | DerivVia l (Type l) -- ^ @-XDerivingVia@+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A binding group inside a @let@ or @where@ clause.+data Binds l+    = BDecls  l [Decl l]     -- ^ An ordinary binding group+    | IPBinds l [IPBind l]   -- ^ A binding group for implicit parameters+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A binding of an implicit parameter.+data IPBind l = IPBind l (IPName l) (Exp l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Clauses of a function binding.+data Match l+     = Match l      (Name l) [Pat l]         (Rhs l) {-where-} (Maybe (Binds l))+        -- ^ A clause defined with prefix notation, i.e. the function name+        --  followed by its argument patterns, the right-hand side and an+        --  optional where clause.+     | InfixMatch l (Pat l) (Name l) [Pat l] (Rhs l) {-where-} (Maybe (Binds l))+        -- ^ A clause defined with infix notation, i.e. first its first argument+        --  pattern, then the function name, then its following argument(s),+        --  the right-hand side and an optional where clause.+        --  Note that there can be more than two arguments to a function declared+        --  infix, hence the list of pattern arguments.+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A single constructor declaration within a data type declaration,+--   which may have an existential quantification binding.+data QualConDecl l+    = QualConDecl l+        {-forall-} (Maybe [TyVarBind l]) {- . -} (Maybe (Context l))+        {- => -} (ConDecl l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Declaration of an ordinary data constructor.+data ConDecl l+     = ConDecl l (Name l) [Type l]+                -- ^ ordinary data constructor+     | InfixConDecl l (Type l) (Name l) (Type l)+                -- ^ infix data constructor+     | RecDecl l (Name l) [FieldDecl l]+                -- ^ record constructor+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Declaration of a (list of) named field(s).+data FieldDecl l = FieldDecl l [Name l] (Type l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)+++-- | A single constructor declaration in a GADT data type declaration.+--+-- If the GADT is declared using the record syntax, e.g.+--+-- >data Ty where+-- >  TCon :: { field1 :: Int, field2 :: Bool } -> Ty+--+-- then the fields are stored as a list of 'FieldDecl's, and the final type+-- (@Ty@ in the above example) is stored in the last 'Type' field.+--+-- If the GADT is declared using the ordinary syntax, e.g.+--+-- >data Ty where+-- >  TCon :: Int -> Bool -> Ty+--+-- then @'Maybe' ['FieldDecl' l]@ is 'Nothing', and the whole constructor's+-- type (such as @Int -> Bool -> Ty@) is stored in the last 'Type' field.+data GadtDecl l+    = GadtDecl l (Name l)+        {-forall-} (Maybe [TyVarBind l]) {- . -} (Maybe (Context l))+        {- => -} (Maybe [FieldDecl l]) (Type l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Declarations inside a class declaration.+data ClassDecl l+    = ClsDecl    l (Decl l)+            -- ^ ordinary declaration+    | ClsDataFam l (Maybe (Context l)) (DeclHead l) (Maybe (ResultSig l))+            -- ^ declaration of an associated data type+    | ClsTyFam   l                     (DeclHead l) (Maybe (ResultSig l)) (Maybe (InjectivityInfo l))+            -- ^ declaration of an associated type synonym+    | ClsTyDef   l (TypeEqn l)+            -- ^ default choice for an associated type synonym+    | ClsDefSig  l (Name l) (Type l)+            -- ^ default signature+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Declarations inside an instance declaration.+data InstDecl l+    = InsDecl   l (Decl l)+            -- ^ ordinary declaration+    | InsType   l (Type l) (Type l)+            -- ^ an associated type definition+    | InsData   l (DataOrNew l) (Type l) [QualConDecl l] [Deriving l]+            -- ^ an associated data type implementation+    | InsGData  l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l] [Deriving l]+            -- ^ an associated data type implemented using GADT style+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The type of a constructor argument or field, optionally including+--   a strictness annotation.+data BangType l+     = BangedTy   l -- ^ strict component, marked with \"@!@\"+     | LazyTy     l -- ^ lazy component, marked with \"@~@\"+     | NoStrictAnnot l -- ^ No strictness information+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++data Unpackedness l+    = Unpack l -- ^ \"@{-\# UNPACK \#-}@\"+    | NoUnpack l -- ^ \"@{-\# NOUNPACK \#-}@\"+    | NoUnpackPragma l -- ^ No unpack pragma+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The right hand side of a function binding, pattern binding, or a case+--   alternative.+data Rhs l+     = UnGuardedRhs l (Exp l) -- ^ unguarded right hand side (/exp/)+     | GuardedRhss  l [GuardedRhs l]+                -- ^ guarded right hand side (/gdrhs/)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A guarded right hand side @|@ /stmts/ @=@ /exp/, or @|@ /stmts/ @->@ /exp/+--   for case alternatives.+--   The guard is a series of statements when using pattern guards,+--   otherwise it will be a single qualifier expression.+data GuardedRhs l+     = GuardedRhs l [Stmt l] (Exp l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A type qualified with a context.+--   An unqualified type has an empty context.+data Type l+     = TyForall l+        (Maybe [TyVarBind l])+        (Maybe (Context l))+        (Type l)                                -- ^ qualified type+     | TyStar  l                                -- ^ @*@, the type of types+     | TyFun   l (Type l) (Type l)              -- ^ function type+     | TyTuple l Boxed [Type l]                 -- ^ tuple type, possibly boxed+     | TyUnboxedSum l [Type l]                  -- ^ unboxed tuple type+     | TyList  l (Type l)                       -- ^ list syntax, e.g. [a], as opposed to [] a+     | TyParArray  l (Type l)                   -- ^ parallel array syntax, e.g. [:a:]+     | TyApp   l (Type l) (Type l)              -- ^ application of a type constructor+     | TyVar   l (Name l)                       -- ^ type variable+     | TyCon   l (QName l)                      -- ^ named type or type constructor+     | TyParen l (Type l)                       -- ^ type surrounded by parentheses+     | TyInfix l (Type l) (MaybePromotedName l)+                          (Type l)              -- ^ infix type constructor+     | TyKind  l (Type l) (Kind l)              -- ^ type with explicit kind signature+     | TyPromoted l (Promoted l)                -- ^ @'K@, a promoted data type (-XDataKinds).+     | TyEquals l (Type l) (Type l)             -- ^ type equality predicate enabled by ConstraintKinds+     | TySplice l (Splice l)                    -- ^ template haskell splice type+     | TyBang l (BangType l) (Unpackedness l) (Type l)           -- ^ Strict type marked with \"@!@\" or type marked with UNPACK pragma.+     | TyWildCard l (Maybe (Name l))            -- ^ Either an anonymous of named type wildcard+     | TyQuasiQuote l String String             -- ^ @[$/name/| /string/ |]@+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++data MaybePromotedName l = PromotedName l (QName l) | UnpromotedName l (QName l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Bools here are True if there was a leading quote which may be+-- left out. For example @'[k1,k2]@ means the same thing as @[k1,k2]@.+data Promoted l+        = PromotedInteger l Integer String -- ^ parsed value and raw string+        | PromotedString l String String -- ^ parsed value and raw string+        | PromotedCon l Bool (QName l)+        | PromotedList l Bool [Type l]+        | PromotedTuple l [Type l]+        | PromotedUnit l+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Flag denoting whether a tuple is boxed or unboxed.+data Boxed = Boxed | Unboxed+  deriving (Eq,Ord,Show,Typeable,Data,Generic)++-- | A type variable declaration, optionally with an explicit kind annotation.+data TyVarBind l+    = KindedVar   l (Name l) (Kind l)  -- ^ variable binding with kind annotation+    | UnkindedVar l (Name l)           -- ^ ordinary variable binding+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An explicit kind annotation.+type Kind = Type+++-- | A functional dependency, given on the form+--   l1 l2 ... ln -> r2 r3 .. rn+data FunDep l+    = FunDep l [Name l] [Name l]+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A context is a set of assertions+data Context l+    = CxSingle l (Asst l)+    | CxTuple  l [Asst l]+    | CxEmpty  l+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Class assertions.+data Asst l+        = TypeA l (Type l)                      -- ^ type assertion+        | IParam l (IPName l) (Type l)          -- ^ implicit parameter assertion+        | ParenA l (Asst l)                     -- ^ parenthesised class assertion+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | /literal/+-- Values of this type hold the abstract value of the literal, along with the+-- precise string representation used.  For example, @10@, @0o12@ and @0xa@+-- have the same value representation, but each carry a different string representation.+data Literal l+    = Char       l Char     String     -- ^ character literal+    | String     l String   String     -- ^ string literal+    | Int        l Integer  String     -- ^ integer literal+    | Frac       l Rational String     -- ^ floating point literal+    | PrimInt    l Integer  String     -- ^ unboxed integer literal+    | PrimWord   l Integer  String     -- ^ unboxed word literal+    | PrimFloat  l Rational String     -- ^ unboxed float literal+    | PrimDouble l Rational String     -- ^ unboxed double literal+    | PrimChar   l Char     String     -- ^ unboxed character literal+    | PrimString l String   String     -- ^ unboxed string literal+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An indication whether a literal pattern has been negated or not.+data Sign l+    = Signless l+    | Negative l+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Haskell expressions.+data Exp l+    = Var l (QName l)                       -- ^ variable+    | OverloadedLabel l String              -- ^ Overloaded label #foo+    | IPVar l (IPName l)                    -- ^ implicit parameter variable+    | Con l (QName l)                       -- ^ data constructor+    | Lit l (Literal l)                     -- ^ literal constant+    | InfixApp l (Exp l) (QOp l) (Exp l)    -- ^ infix application+    | App l (Exp l) (Exp l)                 -- ^ ordinary application+    | NegApp l (Exp l)                      -- ^ negation expression @-/exp/@ (unary minus)+    | Lambda l [Pat l] (Exp l)              -- ^ lambda expression+    | Let l (Binds l) (Exp l)               -- ^ local declarations with @let@ ... @in@ ...+    | If l (Exp l) (Exp l) (Exp l)          -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/+    | MultiIf l [GuardedRhs l]              -- ^ @if@ @|@ /stmts/ @->@ /exp/ ...+    | Case l (Exp l) [Alt l]                -- ^ @case@ /exp/ @of@ /alts/+    | Do l [Stmt l]                         -- ^ @do@-expression:+                                            --   the last statement in the list+                                            --   should be an expression.+    | MDo l [Stmt l]                        -- ^ @mdo@-expression+    | Tuple l Boxed [Exp l]                 -- ^ tuple expression+    | UnboxedSum l Int Int (Exp l)          -- ^ unboxed sum+    | TupleSection l Boxed [Maybe (Exp l)]  -- ^ tuple section expression, e.g. @(,,3)@+    | List l [Exp l]                        -- ^ list expression+    | ParArray l [Exp l]                    -- ^ parallel array expression+    | Paren l (Exp l)                       -- ^ parenthesised expression+    | LeftSection l (Exp l) (QOp l)         -- ^ left section @(@/exp/ /qop/@)@+    | RightSection l (QOp l) (Exp l)        -- ^ right section @(@/qop/ /exp/@)@+    | RecConstr l (QName l) [FieldUpdate l] -- ^ record construction expression+    | RecUpdate l (Exp l)   [FieldUpdate l] -- ^ record update expression+    | EnumFrom l (Exp l)                    -- ^ unbounded arithmetic sequence,+                                            --   incrementing by 1: @[from ..]@+    | EnumFromTo l (Exp l) (Exp l)          -- ^ bounded arithmetic sequence,+                                            --   incrementing by 1 @[from .. to]@+    | EnumFromThen l (Exp l) (Exp l)        -- ^ unbounded arithmetic sequence,+                                            --   with first two elements given @[from, then ..]@+    | EnumFromThenTo l (Exp l) (Exp l) (Exp l)+                                            -- ^ bounded arithmetic sequence,+                                            --   with first two elements given @[from, then .. to]@+    | ParArrayFromTo l (Exp l) (Exp l)      -- ^ Parallel array bounded arithmetic sequence,+                                            --   incrementing by 1 @[:from .. to:]@+    | ParArrayFromThenTo l (Exp l) (Exp l) (Exp l)+                                            -- ^ bounded arithmetic sequence,+                                            --   with first two elements given @[:from, then .. to:]@+    | ListComp l (Exp l) [QualStmt l]       -- ^ ordinary list comprehension+    | ParComp  l (Exp l) [[QualStmt l]]     -- ^ parallel list comprehension+    | ParArrayComp  l (Exp l) [[QualStmt l]] -- ^ parallel array comprehension+    | ExpTypeSig l (Exp l) (Type l)         -- ^ expression with explicit type signature++    | VarQuote l (QName l)                  -- ^ @'x@ for template haskell reifying of expressions+    | TypQuote l (QName l)                  -- ^ @''T@ for template haskell reifying of types+    | BracketExp l (Bracket l)              -- ^ template haskell bracket expression+    | SpliceExp l (Splice l)                -- ^ template haskell splice expression+    | QuasiQuote l String String            -- ^ quasi-quotaion: @[$/name/| /string/ |]@+    | TypeApp l (Type l)                    -- ^ Visible type application++-- Hsx+    | XTag l (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]+                                            -- ^ xml element, with attributes and children+    | XETag l (XName l) [XAttr l] (Maybe (Exp l))+                                            -- ^ empty xml element, with attributes+    | XPcdata l String                      -- ^ PCDATA child element+    | XExpTag l (Exp l)                     -- ^ escaped haskell expression inside xml+    | XChildTag l [Exp l]                   -- ^ children of an xml element+++-- Pragmas+    | CorePragma l      String (Exp l)      -- ^ CORE pragma+    | SCCPragma  l      String (Exp l)      -- ^ SCC pragma+    | GenPragma  l      String (Int, Int) (Int, Int) (Exp l)+                                            -- ^ GENERATED pragma++-- Arrows+    | Proc            l (Pat l) (Exp l)     -- ^ arrows proc: @proc@ /pat/ @->@ /exp/+    | LeftArrApp      l (Exp l) (Exp l)     -- ^ arrow application (from left): /exp/ @-<@ /exp/+    | RightArrApp     l (Exp l) (Exp l)     -- ^ arrow application (from right): /exp/ @>-@ /exp/+    | LeftArrHighApp  l (Exp l) (Exp l)     -- ^ higher-order arrow application (from left): /exp/ @-<<@ /exp/+    | RightArrHighApp l (Exp l) (Exp l)     -- ^ higher-order arrow application (from right): /exp/ @>>-@ /exp/+    | ArrOp           l (Exp l)             -- ^ arrow control operators: @(| /exp/ |)@++-- LambdaCase+    | LCase l [Alt l]                       -- ^ @\case@ /alts/++  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The name of an xml element or attribute,+--   possibly qualified with a namespace.+data XName l+    = XName l String              -- <name ...+    | XDomName l String String    -- <dom:name ...+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An xml attribute, which is a name-expression pair.+data XAttr l = XAttr l (XName l) (Exp l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A template haskell bracket expression.+data Bracket l+    = ExpBracket l (Exp l)        -- ^ expression bracket: @[| ... |]@+    | TExpBracket l (Exp l)       -- ^ typed expression bracket: @[|| ... ||]@+    | PatBracket l (Pat l)        -- ^ pattern bracket: @[p| ... |]@+    | TypeBracket l (Type l)      -- ^ type bracket: @[t| ... |]@+    | DeclBracket l [Decl l]      -- ^ declaration bracket: @[d| ... |]@+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A template haskell splice expression+data Splice l+    = IdSplice l String           -- ^ variable splice: @$var@+    | TIdSplice l String          -- ^ typed variable splice: @$$var@+    | ParenSplice l (Exp l)       -- ^ parenthesised expression splice: @$(/exp/)@+    | TParenSplice l (Exp l)      -- ^ parenthesised typed expression splice: @$$(/exp/)@+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The safety of a foreign function call.+data Safety l+    = PlayRisky l         -- ^ unsafe+    | PlaySafe l Bool     -- ^ safe ('False') or threadsafe ('True')+    | PlayInterruptible l -- ^ interruptible+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The calling convention of a foreign function call.+data CallConv l+    = StdCall l+    | CCall l+    | CPlusPlus l+    | DotNet l+    | Jvm l+    | Js l+    | JavaScript l+    | CApi l+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A top level options pragma, preceding the module header.+data ModulePragma l+    = LanguagePragma   l [Name l]  -- ^ LANGUAGE pragma+    | OptionsPragma    l (Maybe Tool) String+                        -- ^ OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC+    | AnnModulePragma  l (Annotation l)+                        -- ^ ANN pragma with module scope+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Recognised tools for OPTIONS pragmas.+data Tool = GHC | HUGS | NHC98 | YHC | HADDOCK | UnknownTool String+  deriving (Eq,Ord,Show,Typeable,Data,Generic)++-- | Recognised overlaps for overlap pragmas.+data Overlap l+    = NoOverlap l   -- ^ NO_OVERLAP pragma+    | Overlap l     -- ^ OVERLAP pragma+    | Overlapping l+    | Overlaps l+    | Overlappable l+    | Incoherent l  -- ^ INCOHERENT pragma+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Activation clause of a RULES pragma.+data Activation l+    = ActiveFrom   l Int+    | ActiveUntil  l Int+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The body of a RULES pragma.+data Rule l+    = Rule l String (Maybe (Activation l)) (Maybe [RuleVar l]) (Exp l) (Exp l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Variables used in a RULES pragma, optionally annotated with types+data RuleVar l+    = RuleVar l (Name l)+    | TypedRuleVar l (Name l) (Type l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Warning text to optionally use in the module header of e.g.+--   a deprecated module.+data WarningText l+    = DeprText l String+    | WarnText l String+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)+++-- | A pattern, to be matched against a value.+data Pat l+    = PVar l (Name l)                       -- ^ variable+    | PLit l (Sign l) (Literal l)           -- ^ literal constant+    | PNPlusK l (Name l) Integer            -- ^ n+k pattern+    | PInfixApp l (Pat l) (QName l) (Pat l) -- ^ pattern with an infix data constructor+    | PApp l (QName l) [Pat l]              -- ^ data constructor and argument patterns+    | PTuple l Boxed [Pat l]                -- ^ tuple pattern+    | PUnboxedSum l Int Int (Pat l)         -- ^ unboxed sum+    | PList l [Pat l]                       -- ^ list pattern+    | PParen l (Pat l)                      -- ^ parenthesized pattern+    | PRec l (QName l) [PatField l]         -- ^ labelled pattern, record style+    | PAsPat l (Name l) (Pat l)             -- ^ @\@@-pattern+    | PWildCard l                           -- ^ wildcard pattern: @_@+    | PIrrPat l (Pat l)                     -- ^ irrefutable pattern: @~/pat/@+    | PatTypeSig l (Pat l) (Type l)         -- ^ pattern with type signature+    | PViewPat l (Exp l) (Pat l)            -- ^ view patterns of the form @(/exp/ -> /pat/)@+    | PRPat l [RPat l]                      -- ^ regular list pattern+    | PXTag l (XName l) [PXAttr l] (Maybe (Pat l)) [Pat l]+                                            -- ^ XML element pattern+    | PXETag l (XName l) [PXAttr l] (Maybe (Pat l))+                                            -- ^ XML singleton element pattern+    | PXPcdata l String                     -- ^ XML PCDATA pattern+    | PXPatTag l (Pat l)                    -- ^ XML embedded pattern+    | PXRPats  l [RPat l]                   -- ^ XML regular list pattern+    | PSplice l (Splice l)                  -- ^ template haskell splice pattern+    | PQuasiQuote l String String           -- ^ quasi quote pattern: @[$/name/| /string/ |]@+    | PBangPat l (Pat l)                    -- ^ strict (bang) pattern: @f !x = ...@+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An XML attribute in a pattern.+data PXAttr l = PXAttr l (XName l) (Pat l)+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A regular pattern operator.+data RPatOp l+    = RPStar  l  -- ^ @*@ = 0 or more+    | RPStarG l  -- ^ @*!@ = 0 or more, greedy+    | RPPlus  l  -- ^ @+@ = 1 or more+    | RPPlusG l  -- ^ @+!@ = 1 or more, greedy+    | RPOpt   l  -- ^ @?@ = 0 or 1+    | RPOptG  l  -- ^ @?!@ = 0 or 1, greedy+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An entity in a regular pattern.+data RPat l+    = RPOp l (RPat l) (RPatOp l)   -- ^ operator pattern, e.g. pat*+    | RPEither l (RPat l) (RPat l) -- ^ choice pattern, e.g. (1 | 2)+    | RPSeq l [RPat l]             -- ^ sequence pattern, e.g. (| 1, 2, 3 |)+    | RPGuard l (Pat l) [Stmt l]   -- ^ guarded pattern, e.g. (| p | p < 3 |)+    | RPCAs l (Name l) (RPat l)    -- ^ non-linear variable binding, e.g. (foo\@:(1 | 2))*+    | RPAs l (Name l) (RPat l)     -- ^ linear variable binding, e.g. foo\@(1 | 2)+    | RPParen l (RPat l)           -- ^ parenthesised pattern, e.g. (2*)+    | RPPat l (Pat l)              -- ^ an ordinary pattern+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An /fpat/ in a labeled record pattern.+data PatField l+    = PFieldPat l (QName l) (Pat l)     -- ^ ordinary label-pattern pair+    | PFieldPun l (QName l)             -- ^ record field pun+    | PFieldWildcard l                  -- ^ record field wildcard+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A statement, representing both a /stmt/ in a @do@-expression,+--   an ordinary /qual/ in a list comprehension, as well as a /stmt/+--   in a pattern guard.+data Stmt l+    = Generator l (Pat l) (Exp l)+                            -- ^ a generator: /pat/ @<-@ /exp/+    | Qualifier l (Exp l)   -- ^ an /exp/ by itself: in a @do@-expression,+                            --   an action whose result is discarded;+                            --   in a list comprehension and pattern guard,+                            --   a guard expression+    | LetStmt l (Binds l)   -- ^ local bindings+    | RecStmt l [Stmt l]    -- ^ a recursive binding group for arrows+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A general /transqual/ in a list comprehension,+--   which could potentially be a transform of the kind+--   enabled by TransformListComp.+data QualStmt l+    = QualStmt     l (Stmt l)         -- ^ an ordinary statement+    | ThenTrans    l (Exp l)          -- ^ @then@ /exp/+    | ThenBy       l (Exp l) (Exp l)  -- ^ @then@ /exp/ @by@ /exp/+    | GroupBy      l (Exp l)          -- ^ @then@ @group@ @by@ /exp/+    | GroupUsing   l (Exp l)          -- ^ @then@ @group@ @using@ /exp/+    | GroupByUsing l (Exp l) (Exp l)  -- ^ @then@ @group@ @by@ /exp/ @using@ /exp/+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An /fbind/ in a labeled construction or update expression.+data FieldUpdate l+    = FieldUpdate l (QName l) (Exp l)    -- ^ ordinary label-expresion pair+    | FieldPun l (QName l)               -- ^ record field pun+    | FieldWildcard l                    -- ^ record field wildcard+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An /alt/ alternative in a @case@ expression.+data Alt l+    = Alt l (Pat l) (Rhs l) (Maybe (Binds l))+  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-----------------------------------------------------------------------------+-- Builtin names.++prelude_mod, main_mod :: l -> ModuleName l+prelude_mod l = ModuleName l "Prelude"+main_mod    l = ModuleName l "Main"++main_name :: l -> Name l+main_name l = Ident l "main"++unit_con_name :: l -> QName l+unit_con_name l = Special l (UnitCon l)++tuple_con_name :: l -> Boxed -> Int -> QName l+tuple_con_name l b i = Special l (TupleCon l b (i+1))++list_con_name :: l -> QName l+list_con_name l = Special l (ListCon l)++list_cons_name :: l -> QName l+list_cons_name l = Special l (Cons l)++unboxed_singleton_con_name :: l -> QName l+unboxed_singleton_con_name l = Special l (UnboxedSingleCon l)++unit_con :: l -> Exp l+unit_con l = Con l $ unit_con_name l++tuple_con :: l -> Boxed -> Int -> Exp l+tuple_con l b i = Con l (tuple_con_name l b i)++unboxed_singleton_con :: l -> Exp l+unboxed_singleton_con l = Con l (unboxed_singleton_con_name l)++as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name :: l -> Name l+as_name        l = Ident  l "as"+qualified_name l = Ident  l "qualified"+hiding_name    l = Ident  l "hiding"+minus_name     l = Symbol l "-"+bang_name      l = Symbol l "!"+dot_name       l = Symbol l "."+star_name      l = Symbol l "*"++hole_name :: l -> QName l+hole_name      l = Special l (ExprHole l)++export_name, safe_name, unsafe_name, interruptible_name, threadsafe_name,+  stdcall_name, ccall_name, cplusplus_name, dotnet_name,+  jvm_name, js_name, javascript_name, capi_name, forall_name,+  family_name, role_name, stock_name, anyclass_name, via_name :: l -> Name l+export_name     l = Ident l "export"+safe_name       l = Ident l "safe"+unsafe_name     l = Ident l "unsafe"+interruptible_name l = Ident l "interruptible"+threadsafe_name l = Ident l "threadsafe"+stdcall_name    l = Ident l "stdcall"+ccall_name      l = Ident l "ccall"+cplusplus_name  l = Ident l "cplusplus"+dotnet_name     l = Ident l "dotnet"+jvm_name        l = Ident l "jvm"+js_name         l = Ident l "js"+javascript_name l = Ident l "javascript"+capi_name       l = Ident l "capi"+forall_name     l = Ident l "forall"+family_name     l = Ident l "family"+role_name       l = Ident l "role"+stock_name      l = Ident l "stock"+anyclass_name   l = Ident l "anyclass"+via_name        l = Ident l "via"++unit_tycon_name, fun_tycon_name, list_tycon_name, unboxed_singleton_tycon_name :: l -> QName l+unit_tycon_name l = unit_con_name l+fun_tycon_name  l = Special l (FunCon l)+list_tycon_name l = Special l (ListCon l)+unboxed_singleton_tycon_name l = Special l (UnboxedSingleCon l)++tuple_tycon_name :: l -> Boxed -> Int -> QName l+tuple_tycon_name l b i = tuple_con_name l b i++unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: l -> Type l+unit_tycon l = TyCon l $ unit_tycon_name l+fun_tycon  l = TyCon l $ fun_tycon_name  l+list_tycon l = TyCon l $ list_tycon_name l+unboxed_singleton_tycon l = TyCon l $ unboxed_singleton_tycon_name l++tuple_tycon :: l -> Boxed -> Int -> Type l+tuple_tycon l b i = TyCon l (tuple_tycon_name l b i)++-----------------------------------------------------------------------------+-- AST traversal, boiler-plate style++-- | Test if two AST elements are equal modulo annotations.+(=~=) :: (Annotated a, Eq (a ())) => a l1 -> a l2 -> Bool+a =~= b = fmap (const ()) a == fmap (const ()) b++-----------------------------------------------------------------------------+-- Reading annotations++-- | AST nodes are annotated, and this class allows manipulation of the annotations.+class Functor ast => Annotated ast where+    -- | Retrieve the annotation of an AST node.+    ann :: ast l -> l+    -- | Change the annotation of an AST node. Note that only the annotation of+    --   the node itself is affected, and not the annotations of any child nodes.+    --   if all nodes in the AST tree are to be affected, use 'fmap'.+    amap :: (l -> l) -> ast l -> ast l++instance Annotated ModuleName where+    ann (ModuleName l _) = l+    amap f (ModuleName l n) = ModuleName (f l) n++instance Annotated SpecialCon where+    ann sc = case sc of+        UnitCon l   -> l+        ListCon l   -> l+        FunCon  l   -> l+        TupleCon l _ _  -> l+        Cons l      -> l+        UnboxedSingleCon l  -> l+        ExprHole l  -> l+    amap = fmap++instance Annotated QName where+    ann qn = case qn of+        Qual    l _ _  -> l+        UnQual  l   _  -> l+        Special l _    -> l+    amap f qn = case qn of+        Qual    l mn n  -> Qual    (f l) mn n+        UnQual  l    n  -> UnQual  (f l)    n+        Special l sc    -> Special (f l) sc++instance Annotated Name where+    ann (Ident  l _) = l+    ann (Symbol l _) = l+    amap = fmap++instance Annotated IPName where+    ann (IPDup l _) = l+    ann (IPLin l _) = l+    amap = fmap++instance Annotated QOp where+    ann (QVarOp l _) = l+    ann (QConOp l _) = l+    amap f (QVarOp l qn) = QVarOp (f l) qn+    amap f (QConOp l qn) = QConOp (f l) qn++instance Annotated Op where+    ann (VarOp l _) = l+    ann (ConOp l _) = l+    amap f (VarOp l n) = VarOp (f l) n+    amap f (ConOp l n) = ConOp (f l) n++instance Annotated CName where+    ann (VarName l _) = l+    ann (ConName l _) = l+    amap f (VarName l n) = VarName (f l) n+    amap f (ConName l n) = ConName (f l) n++instance Annotated Module where+    ann (Module l _ _ _ _)            = l+    ann (XmlPage l _ _ _ _ _ _)       = l+    ann (XmlHybrid l _ _ _ _ _ _ _ _) = l++    amap f (Module l mmh ops iss dcls) =+        Module (f l) mmh ops iss dcls+    amap f (XmlPage l mn os xn xas me es) =+        XmlPage (f l) mn os xn xas me es+    amap f (XmlHybrid l mmh ops iss dcls xn xas me es) =+        XmlHybrid (f l) mmh ops iss dcls xn xas me es++instance Annotated ModuleHead where+    ann (ModuleHead l _ _ _)         = l+    amap f (ModuleHead l n mwt mesl) = ModuleHead (f l) n mwt mesl++instance Annotated ExportSpecList where+    ann (ExportSpecList l _)      = l+    amap f (ExportSpecList l ess) = ExportSpecList (f l) ess++instance Annotated ExportSpec where+    ann es = case es of+        EVar l _            -> l+        EAbs l _ _          -> l+        EThingWith l _ _ _    -> l+        EModuleContents l _ -> l+    amap f es = case es of+        EVar l qn     -> EVar (f l) qn+        EAbs l n qn       -> EAbs (f l) n qn+        EThingWith l wc qn cns -> EThingWith (f l) wc qn cns+        EModuleContents l mn    -> EModuleContents (f l) mn++instance Annotated EWildcard where+  ann ewc = case ewc of+      NoWildcard l  -> l+      EWildcard l _ -> l+  amap f ewc = case ewc of+      NoWildcard l  -> NoWildcard (f l)+      EWildcard l n -> EWildcard (f l) n++++instance Annotated Namespace where+    ann es = case es of+        NoNamespace l   -> l+        TypeNamespace l -> l+        PatternNamespace l -> l+    amap f es = case es of+        NoNamespace l   -> NoNamespace (f l)+        TypeNamespace l -> TypeNamespace (f l)+        PatternNamespace l -> PatternNamespace (f l)++instance Annotated ImportDecl where+    ann (ImportDecl l _ _ _ _ _ _ _) = l+    amap f (ImportDecl l mn qual src safe pkg mmn mis) =+        ImportDecl (f l) mn qual src safe pkg mmn mis++instance Annotated ImportSpecList where+    ann (ImportSpecList l _ _)      = l+    amap f (ImportSpecList l b iss) = ImportSpecList (f l) b iss++instance Annotated ImportSpec where+    ann is = case is of+        IVar l _         -> l+        IAbs l _ _       -> l+        IThingAll l _    -> l+        IThingWith l _ _ -> l+    amap f is = case is of+        IVar l n        -> IVar (f l) n+        IAbs l ns n     -> IAbs (f l) ns n+        IThingAll l n   -> IThingAll (f l) n+        IThingWith l n cns  -> IThingWith (f l) n cns++instance Annotated Assoc where+    ann (AssocNone  l) = l+    ann (AssocLeft  l) = l+    ann (AssocRight l) = l+    amap = fmap++instance Annotated Deriving where+    ann (Deriving l _ _)        = l+    amap f (Deriving l mds ihs) = Deriving (f l) mds ihs++instance Annotated DerivStrategy where+    ann (DerivStock l)    = l+    ann (DerivAnyclass l) = l+    ann (DerivNewtype l)  = l+    ann (DerivVia l _)    = l++    amap f (DerivStock l)    = DerivStock (f l)+    amap f (DerivAnyclass l) = DerivAnyclass (f l)+    amap f (DerivNewtype l)  = DerivNewtype (f l)+    amap f (DerivVia l t)    = DerivVia (f l) t++instance Annotated TypeEqn where+    ann (TypeEqn l _ _) = l+    amap f (TypeEqn l a b) = TypeEqn (f l) a b++instance Annotated InjectivityInfo where+  ann (InjectivityInfo l _ _) = l+  amap f (InjectivityInfo l to from) = InjectivityInfo (f l) to from++instance Annotated ResultSig where+  ann (KindSig l _) = l+  ann (TyVarSig l _) = l++  amap f (KindSig l k) = KindSig (f l) k+  amap f (TyVarSig l tv) = TyVarSig (f l) tv++instance Annotated Decl where+    ann decl = case decl of+        TypeDecl     l _ _              -> l+        TypeFamDecl  l _ _ _            -> l+        ClosedTypeFamDecl  l _ _ _ _    -> l+        DataDecl     l _ _ _ _ _        -> l+        GDataDecl    l _ _ _ _ _ _      -> l+        DataFamDecl  l    _ _ _         -> l+        TypeInsDecl  l _  _             -> l+        DataInsDecl  l _ _ _ _          -> l+        GDataInsDecl l _ _ _ _ _        -> l+        ClassDecl    l _ _ _ _          -> l+        InstDecl     l _ _ _            -> l+        DerivDecl    l _ _ _            -> l+        InfixDecl    l _ _ _            -> l+        DefaultDecl  l _                -> l+        SpliceDecl   l _                -> l+        TSpliceDecl  l _                -> l+        TypeSig      l _ _              -> l+        PatSynSig    l _ _ _ _ _ _      -> l+        FunBind      l _                -> l+        PatBind      l _ _ _            -> l+        ForImp       l _ _ _ _ _        -> l+        ForExp       l _ _ _ _          -> l+        RulePragmaDecl   l _            -> l+        DeprPragmaDecl   l _            -> l+        WarnPragmaDecl   l _            -> l+        InlineSig        l _ _ _        -> l+        InlineConlikeSig l   _ _        -> l+        SpecSig          l   _ _ _      -> l+        SpecInlineSig    l _ _ _ _      -> l+        InstSig          l _            -> l+        AnnPragma        l _            -> l+        MinimalPragma    l _            -> l+        RoleAnnotDecl    l _ _          -> l+        PatSyn           l _ _ _        -> l+        CompletePragma l _ _            -> l+    amap f decl = case decl of+        TypeDecl     l dh t      -> TypeDecl    (f l) dh t+        TypeFamDecl  l dh mk mi  -> TypeFamDecl (f l) dh mk mi+        ClosedTypeFamDecl  l dh mk mi eqns  -> ClosedTypeFamDecl (f l) dh mk mi eqns+        DataDecl     l dn mcx dh cds ders ->+            DataDecl (f l) dn mcx dh cds ders+        GDataDecl    l dn mcx dh mk gds ders ->+            GDataDecl (f l) dn mcx dh mk gds ders+        DataFamDecl  l mcx dh mk         -> DataFamDecl (f l) mcx dh mk+        TypeInsDecl  l t1 t2             -> TypeInsDecl (f l) t1 t2+        DataInsDecl  l dn t cds ders     -> DataInsDecl (f l) dn t cds ders+        GDataInsDecl l dn t mk gds ders  -> GDataInsDecl (f l) dn t mk gds ders+        ClassDecl    l mcx dh fds cds    -> ClassDecl (f l) mcx dh fds cds+        InstDecl     l mo ih ids         -> InstDecl (f l) mo ih ids+        DerivDecl    l mds mo ih         -> DerivDecl (f l) mds mo ih+        InfixDecl    l a k ops           -> InfixDecl (f l) a k ops+        DefaultDecl  l ts                -> DefaultDecl (f l) ts+        SpliceDecl   l sp                -> SpliceDecl (f l) sp+        TSpliceDecl  l sp                -> TSpliceDecl (f l) sp+        TypeSig      l ns t              -> TypeSig (f l) ns t+        PatSynSig    l n dh c1 dh2 c2 t      -> PatSynSig (f l) n dh c1 dh2 c2 t+        FunBind      l ms                -> FunBind (f l) ms+        PatBind      l p rhs bs          -> PatBind (f l) p rhs bs+        ForImp       l cc msf s n t      -> ForImp (f l) cc msf s n t+        ForExp       l cc     s n t      -> ForExp (f l) cc     s n t+        RulePragmaDecl   l rs            -> RulePragmaDecl (f l) rs+        DeprPragmaDecl   l nss           -> DeprPragmaDecl (f l) nss+        WarnPragmaDecl   l nss           -> WarnPragmaDecl (f l) nss+        InlineSig        l b act qn      -> InlineSig (f l) b act qn+        InlineConlikeSig l   act qn      -> InlineConlikeSig (f l) act qn+        SpecSig          l   act qn ts   -> SpecSig       (f l)   act qn ts+        SpecInlineSig    l b act qn ts   -> SpecInlineSig (f l) b act qn ts+        InstSig          l ih            -> InstSig (f l) ih+        AnnPragma        l ann'          -> AnnPragma (f l) ann'+        MinimalPragma    l b             -> MinimalPragma (f l) b+        RoleAnnotDecl    l t rs          -> RoleAnnotDecl (f l) t rs+        PatSyn           l p r d         -> PatSyn (f l) p r d+        CompletePragma   l cs ty         -> CompletePragma (f l) cs ty++instance Annotated Role where+    ann r = case r of+      RoleWildcard l -> l+      Representational l -> l+      Phantom l -> l+      Nominal l -> l+    amap f r = case r of+      RoleWildcard l -> RoleWildcard (f l)+      Representational l -> Representational (f l)+      Phantom l -> Phantom (f l)+      Nominal l -> Nominal (f l)++instance Annotated Annotation where+    ann (Ann     l _ _) = l+    ann (TypeAnn l _ _) = l+    ann (ModuleAnn l _) = l+    amap f (Ann     l n e) = Ann     (f l) n e+    amap f (TypeAnn l n e) = TypeAnn (f l) n e+    amap f (ModuleAnn l e) = ModuleAnn (f l) e++instance Annotated BooleanFormula where+    ann (VarFormula l _)   = l+    ann (AndFormula l _)   = l+    ann (OrFormula l _)    = l+    ann (ParenFormula l _) = l+    amap f (VarFormula l n)   = VarFormula (f l) n+    amap f (AndFormula l bs)  = AndFormula (f l) bs+    amap f (OrFormula l bs)   = OrFormula (f l) bs+    amap f (ParenFormula l b) = ParenFormula (f l) b++instance Annotated DataOrNew where+    ann (DataType l) = l+    ann (NewType  l) = l+    amap = fmap++instance Annotated DeclHead where+    ann (DHead l _)              = l+    ann (DHInfix l _ _)          = l+    ann (DHParen l _)            = l+    ann (DHApp l _ _)            = l+    amap f (DHead l n)           = DHead (f l) n+    amap f (DHInfix l tva n)     = DHInfix (f l) tva n+    amap f (DHParen l dh)        = DHParen (f l) dh+    amap f (DHApp l dh t)        = DHApp (f l) dh t++instance Annotated InstRule where+    ann (IRule l _ _ _)         = l+    ann (IParen l _)            = l+    amap f (IRule l mtv cxt qn) = IRule (f l) mtv cxt qn+    amap f (IParen l ih)        = IParen (f l) ih++instance Annotated InstHead where+    ann (IHCon l _)              = l+    ann (IHInfix l _ _)          = l+    ann (IHParen l _)            = l+    ann (IHApp l _ _)            = l+    amap f (IHCon l n)           = IHCon (f l) n+    amap f (IHInfix l tva n)     = IHInfix (f l) tva n+    amap f (IHParen l dh)        = IHParen (f l) dh+    amap f (IHApp l dh t)        = IHApp (f l) dh t++instance Annotated Binds where+    ann (BDecls  l _) = l+    ann (IPBinds l _) = l+    amap f (BDecls  l decls) = BDecls (f l) decls+    amap f (IPBinds l ibs)   = IPBinds (f l) ibs++instance Annotated IPBind where+    ann (IPBind l _ _) = l+    amap f (IPBind l ipn e) = IPBind (f l) ipn e++instance Annotated Match where+    ann (Match l _ _ _ _)        = l+    ann (InfixMatch l _ _ _ _ _) = l+    amap f (Match l n ps rhs bs) = Match (f l) n ps rhs bs+    amap f (InfixMatch l a n b rhs bs) = InfixMatch (f l) a n b rhs bs++instance Annotated QualConDecl where+    ann (QualConDecl l _ _ _) = l+    amap f (QualConDecl l tvs cx cd) = QualConDecl (f l) tvs cx cd++instance Annotated ConDecl where+    ann (ConDecl l _ _)        = l+    ann (InfixConDecl l _ _ _) = l+    ann (RecDecl l _ _)        = l+    amap f (ConDecl l n bts) = ConDecl (f l) n bts+    amap f (InfixConDecl l ta n tb) = InfixConDecl (f l) ta n tb+    amap f (RecDecl l n fds) = RecDecl (f l) n fds++instance Annotated FieldDecl where+    ann (FieldDecl l _ _) = l+    amap f (FieldDecl l ns t) = FieldDecl (f l) ns t++instance Annotated GadtDecl where+    ann (GadtDecl l _ _ _ _ _) = l+    amap f (GadtDecl l n t1 t2 t3 t4) = GadtDecl (f l) n t1 t2 t3 t4++instance Annotated ClassDecl where+    ann (ClsDecl    l _)      = l+    ann (ClsDataFam l _ _ _)  = l+    ann (ClsTyFam   l _ _ _) = l+    ann (ClsTyDef   l _)    = l+    ann (ClsDefSig  l _ _)    = l+    amap f (ClsDecl    l d) = ClsDecl (f l) d+    amap f (ClsDataFam l mcx dh mk) = ClsDataFam (f l) mcx dh mk+    amap f (ClsTyFam   l dh mk mi) = ClsTyFam (f l) dh mk mi+    amap f (ClsTyDef   l t ) = ClsTyDef (f l) t+    amap f (ClsDefSig  l n t) = ClsDefSig (f l) n t++instance Annotated InstDecl where+    ann id = case id of+        InsDecl   l _            -> l+        InsType   l _ _          -> l+        InsData   l _ _  _ _     -> l+        InsGData  l _ _ _ _ _    -> l+--        InsInline l _ _ _    -> l+    amap f id = case id of+        InsDecl   l d           -> InsDecl (f l) d+        InsType   l t1 t2       -> InsType (f l) t1 t2+        InsData   l dn t    cds ders -> InsData  (f l) dn t    cds ders+        InsGData  l dn t mk gds ders -> InsGData (f l) dn t mk gds ders+--        InsInline l b act qn    -> InsInline (f l) b act qn++instance Annotated BangType where+     ann (BangedTy   l)       = l+     ann (LazyTy   l)         = l+     ann (NoStrictAnnot l)    = l++     amap f (BangedTy   l) = BangedTy (f l)+     amap f (LazyTy   l)   = LazyTy (f l)+     amap f (NoStrictAnnot l) = NoStrictAnnot (f l)++instance Annotated Unpackedness where+    ann (Unpack l) = l+    ann (NoUnpack l) = l+    ann (NoUnpackPragma l) = l++    amap f (Unpack l) = Unpack (f l)+    amap f (NoUnpack l) = Unpack (f l)+    amap f (NoUnpackPragma l) = Unpack (f l)++instance Annotated Rhs where+     ann (UnGuardedRhs l _) = l+     ann (GuardedRhss  l _) = l+     amap f (UnGuardedRhs l e)     = UnGuardedRhs (f l) e+     amap f (GuardedRhss  l grhss) = GuardedRhss  (f l) grhss++instance Annotated GuardedRhs where+     ann (GuardedRhs l _ _) = l+     amap f (GuardedRhs l ss e) = GuardedRhs (f l) ss e++instance Annotated Type where+    ann t = case t of+      TyForall l _ _ _              -> l+      TyStar  l                     -> l+      TyFun   l _ _                 -> l+      TyTuple l _ _                 -> l+      TyUnboxedSum l _              -> l+      TyList  l _                   -> l+      TyParArray  l _               -> l+      TyApp   l _ _                 -> l+      TyVar   l _                   -> l+      TyCon   l _                   -> l+      TyParen l _                   -> l+      TyInfix l _ _ _               -> l+      TyKind  l _ _                 -> l+      TyPromoted l   _              -> l+      TyEquals l _ _                -> l+      TySplice l _                  -> l+      TyBang l _ _ _                  -> l+      TyWildCard l _                -> l+      TyQuasiQuote l _ _            -> l+    amap f t1 = case t1 of+      TyForall l mtvs mcx t         -> TyForall (f l) mtvs mcx t+      TyStar  l                     -> TyStar (f l)+      TyFun   l t1' t2              -> TyFun (f l) t1' t2+      TyTuple l b ts                -> TyTuple (f l) b ts+      TyUnboxedSum l s              -> TyUnboxedSum (f l) s+      TyList  l t                   -> TyList (f l) t+      TyParArray  l t               -> TyParArray (f l) t+      TyApp   l t1' t2              -> TyApp (f l) t1' t2+      TyVar   l n                   -> TyVar (f l) n+      TyCon   l qn                  -> TyCon (f l) qn+      TyParen l t                   -> TyParen (f l) t+      TyInfix l ta qn tb            -> TyInfix (f l) ta qn tb+      TyKind  l t k                 -> TyKind (f l) t k+      TyPromoted l   p              -> TyPromoted (f l)   p+      TyEquals l a b                -> TyEquals (f l) a b+      TySplice l s                  -> TySplice (f l) s+      TyBang l b u t                  -> TyBang (f l) b u t+      TyWildCard l n                -> TyWildCard (f l) n+      TyQuasiQuote l n s            -> TyQuasiQuote (f l) n s++instance Annotated MaybePromotedName where+  ann t = case t of+    PromotedName l _ -> l+    UnpromotedName l _ -> l+  amap f tl =  case tl of+    PromotedName l q -> PromotedName (f l)     q+    UnpromotedName l q -> UnpromotedName (f l) q++instance Annotated TyVarBind where+    ann (KindedVar   l _ _) = l+    ann (UnkindedVar l _)   = l+    amap f (KindedVar   l n k) = KindedVar   (f l) n k+    amap f (UnkindedVar l n)   = UnkindedVar (f l) n++instance Annotated FunDep where+    ann (FunDep l _ _) = l+    amap f (FunDep l ns1 ns2) = FunDep (f l) ns1 ns2++instance Annotated Context where+    ann (CxSingle l _) = l+    ann (CxTuple  l _) = l+    ann (CxEmpty  l)   = l+    amap f (CxSingle l asst ) = CxSingle (f l) asst+    amap f (CxTuple  l assts) = CxTuple  (f l) assts+    amap f (CxEmpty l) = CxEmpty (f l)++instance Annotated Asst where+    ann asst = case asst of+        TypeA l _        -> l+        IParam l _ _     -> l+        ParenA l _       -> l+    amap f asst = case asst of+        TypeA l t           -> TypeA (f l) t+        IParam l ipn t      -> IParam (f l) ipn t+        ParenA l a          -> ParenA (f l) a++instance Annotated Literal where+    ann lit = case lit of+        Char    l _    _  -> l+        String  l _    _  -> l+        Int     l _    _  -> l+        Frac    l _    _  -> l+        PrimInt    l _ _  -> l+        PrimWord   l _ _  -> l+        PrimFloat  l _ _  -> l+        PrimDouble l _ _  -> l+        PrimChar   l _ _  -> l+        PrimString l _ _  -> l+    amap = fmap++instance Annotated Sign where+    ann sg = case sg of+        Signless l -> l+        Negative l -> l+    amap = fmap++instance Annotated Exp where+    ann e = case e of+        Var l _                -> l+        OverloadedLabel l _    -> l+        IPVar l _              -> l+        Con l _                -> l+        Lit l _                -> l+        InfixApp l _ _ _       -> l+        App l _ _              -> l+        NegApp l _             -> l+        Lambda l _ _           -> l+        Let l _ _              -> l+        If l _ _ _             -> l+        MultiIf l _            -> l+        Case l _ _             -> l+        Do l _                 -> l+        MDo l _                -> l+        Tuple l _ _            -> l+        UnboxedSum l _ _ _     -> l+        TupleSection l _ _     -> l+        List l _               -> l+        ParArray l _           -> l+        Paren l _              -> l+        LeftSection l _ _      -> l+        RightSection l _ _     -> l+        RecConstr l _ _        -> l+        RecUpdate l _ _        -> l+        EnumFrom l _           -> l+        EnumFromTo l _ _       -> l+        EnumFromThen l _ _     -> l+        EnumFromThenTo l _ _ _ -> l+        ParArrayFromTo l _ _   -> l+        ParArrayFromThenTo l _ _ _ -> l+        ListComp l _ _         -> l+        ParComp  l _ _         -> l+        ParArrayComp  l _ _    -> l+        ExpTypeSig l _ _       -> l+        VarQuote l _           -> l+        TypQuote l _           -> l+        BracketExp l _         -> l+        SpliceExp l _          -> l+        QuasiQuote l _ _       -> l+        TypeApp l _            -> l++        XTag  l _ _ _ _        -> l+        XETag l _ _ _          -> l+        XPcdata l _            -> l+        XExpTag l _            -> l+        XChildTag l _          -> l++        CorePragma l _ _       -> l+        SCCPragma  l _ _       -> l+        GenPragma  l _ _ _ _   -> l++        Proc            l _ _  -> l+        LeftArrApp      l _ _  -> l+        RightArrApp     l _ _  -> l+        LeftArrHighApp  l _ _  -> l+        RightArrHighApp l _ _  -> l+        ArrOp           l _    -> l++        LCase l _              -> l++    amap f e1 = case e1 of+        Var l qn        -> Var (f l) qn+        OverloadedLabel l qn -> OverloadedLabel (f l) qn+        IPVar l ipn     -> IPVar (f l) ipn+        Con l qn        -> Con (f l) qn+        Lit l lit       -> Lit (f l) lit+        InfixApp l e1' qop e2    -> InfixApp (f l) e1' qop e2+        App l e1' e2    -> App (f l) e1' e2+        NegApp l e      -> NegApp (f l) e+        Lambda l ps e   -> Lambda (f l) ps e+        Let l bs e      -> Let (f l) bs e+        If l ec et ee   -> If (f l) ec et ee+        Case l e alts   -> Case (f l) e alts+        Do l ss         -> Do (f l) ss+        MDo l ss        -> MDo (f l) ss+        Tuple l bx es   -> Tuple (f l) bx es+        UnboxedSum l b a es -> UnboxedSum (f l) b a es+        TupleSection l bx mes -> TupleSection (f l) bx mes+        List l es       -> List (f l) es+        ParArray l es   -> ParArray (f l) es+        Paren l e       -> Paren (f l) e+        LeftSection l e qop     -> LeftSection (f l) e qop+        RightSection l qop e    -> RightSection (f l) qop e+        RecConstr l qn fups     -> RecConstr (f l) qn fups+        RecUpdate l e  fups     -> RecUpdate (f l) e  fups+        EnumFrom l e            -> EnumFrom (f l) e+        EnumFromTo l ef et      -> EnumFromTo (f l) ef et+        EnumFromThen l ef et    -> EnumFromThen (f l) ef et+        EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto+        ParArrayFromTo l ef et  -> ParArrayFromTo (f l) ef et+        ParArrayFromThenTo l ef eth eto -> ParArrayFromThenTo (f l) ef eth eto+        ListComp l e qss        -> ListComp (f l) e qss+        ParComp  l e qsss       -> ParComp  (f l) e qsss+        ParArrayComp  l e qsss  -> ParArrayComp  (f l) e qsss+        ExpTypeSig l e t        -> ExpTypeSig (f l) e t+        VarQuote l qn           -> VarQuote (f l) qn+        TypQuote l qn           -> TypQuote (f l) qn+        BracketExp l br         -> BracketExp (f l) br+        SpliceExp l sp          -> SpliceExp (f l) sp+        QuasiQuote l sn se      -> QuasiQuote (f l) sn se+        TypeApp l t             -> TypeApp (f l) t++        XTag  l xn xas me es     -> XTag  (f l) xn xas me es+        XETag l xn xas me        -> XETag (f l) xn xas me+        XPcdata l s              -> XPcdata (f l) s+        XExpTag l e              -> XExpTag (f l) e+        XChildTag l es           -> XChildTag (f l) es++        CorePragma l s e   -> CorePragma (f l) s e+        SCCPragma  l s e   -> SCCPragma (f l) s e+        GenPragma  l s n12 n34 e -> GenPragma (f l) s n12 n34 e++        Proc            l p e  -> Proc (f l) p e+        LeftArrApp      l e1' e2 -> LeftArrApp      (f l) e1' e2+        RightArrApp     l e1' e2 -> RightArrApp     (f l) e1' e2+        LeftArrHighApp  l e1' e2 -> LeftArrHighApp  (f l) e1' e2+        RightArrHighApp l e1' e2 -> RightArrHighApp (f l) e1' e2+        ArrOp           l e      -> ArrOp           (f l) e++        LCase l alts -> LCase (f l) alts+        MultiIf l alts -> MultiIf (f l) alts+++instance Annotated XName where+    ann (XName l _)      = l+    ann (XDomName l _ _) = l+    amap = fmap++instance Annotated XAttr where+    ann (XAttr l _ _) = l+    amap f (XAttr l xn e) = XAttr (f l) xn e++instance Annotated Bracket where+    ann (ExpBracket l _)  = l+    ann (TExpBracket l _) = l+    ann (PatBracket l _)  = l+    ann (TypeBracket l _) = l+    ann (DeclBracket l _) = l+    amap f (ExpBracket l e) = ExpBracket (f l) e+    amap f (TExpBracket l e) = TExpBracket (f l) e+    amap f (PatBracket l p) = PatBracket (f l) p+    amap f (TypeBracket l t) = TypeBracket (f l) t+    amap f (DeclBracket l ds) = DeclBracket (f l) ds++instance Annotated Splice where+    ann (IdSplice l _)    = l+    ann (TIdSplice l _)   = l+    ann (ParenSplice l _) = l+    ann (TParenSplice l _) = l+    amap f (IdSplice l s) = IdSplice (f l) s+    amap f (TIdSplice l s) = TIdSplice (f l) s+    amap f (ParenSplice l e) = ParenSplice (f l) e+    amap f (TParenSplice l e) = TParenSplice (f l) e++instance Annotated Safety where+    ann (PlayRisky l) = l+    ann (PlaySafe l _) = l+    ann (PlayInterruptible l) = l+    amap = fmap++instance Annotated CallConv where+    ann (StdCall l) = l+    ann (CCall l) = l+    ann (CPlusPlus l) = l+    ann (DotNet l) = l+    ann (Jvm l) = l+    ann (Js l) = l+    ann (JavaScript l) = l+    ann (CApi l) = l+    amap = fmap++instance Annotated ModulePragma where+    ann (LanguagePragma   l _)   = l+    ann (OptionsPragma    l _ _) = l+    ann (AnnModulePragma  l _)   = l+    amap f (LanguagePragma   l ns) = LanguagePragma (f l) ns+    amap f (AnnModulePragma  l a) = AnnModulePragma (f l) a+    amap f p = fmap f p++instance Annotated Overlap where+    ann (NoOverlap l)  = l+    ann (Overlap l)    = l+    ann (Overlaps l)   = l+    ann (Overlappable l) = l+    ann (Overlapping l)  = l+    ann (Incoherent l) = l+    amap = fmap++instance Annotated Activation where+    ann (ActiveFrom   l _) = l+    ann (ActiveUntil  l _) = l+    amap = fmap++instance Annotated Rule where+    ann (Rule l _ _ _ _ _) = l+    amap f (Rule l s act mrvs e1 e2) = Rule (f l) s act mrvs e1 e2++instance Annotated RuleVar where+    ann (RuleVar l _)        = l+    ann (TypedRuleVar l _ _) = l+    amap f (RuleVar l n) = RuleVar (f l) n+    amap f (TypedRuleVar l n t) = TypedRuleVar (f l) n t++instance Annotated WarningText where+    ann (DeprText l _) = l+    ann (WarnText l _) = l+    amap = fmap++instance Annotated Pat where+    ann p = case p of+      PVar l _          -> l+      PLit l _ _        -> l+      PNPlusK l _ _     -> l+      PInfixApp l _ _ _ -> l+      PApp l _ _        -> l+      PTuple l _ _      -> l+      PUnboxedSum l _ _ _ -> l+      PList l _         -> l+      PParen l _        -> l+      PRec l _ _        -> l+      PAsPat l _ _      -> l+      PWildCard l       -> l+      PIrrPat l _       -> l+      PatTypeSig l _ _  -> l+      PViewPat l _ _    -> l+      PRPat l _         -> l+      PXTag l _ _ _ _   -> l+      PXETag l _ _ _    -> l+      PXPcdata l _      -> l+      PXPatTag l _      -> l+      PXRPats  l _      -> l+      PSplice l _       -> l+      PQuasiQuote l _ _ -> l+      PBangPat l _      -> l+    amap f p1 = case p1 of+      PVar l n          -> PVar (f l) n+      PLit l sg lit     -> PLit (f l) sg lit+      PNPlusK l n k     -> PNPlusK (f l) n k+      PInfixApp l pa qn pb  -> PInfixApp (f l) pa qn pb+      PApp l qn ps      -> PApp (f l) qn ps+      PTuple l bx ps    -> PTuple (f l) bx ps+      PUnboxedSum l b a ps -> PUnboxedSum (f l) b a ps+      PList l ps        -> PList (f l) ps+      PParen l p        -> PParen (f l) p+      PRec l qn pfs     -> PRec (f l) qn pfs+      PAsPat l n p      -> PAsPat (f l) n p+      PWildCard l       -> PWildCard (f l)+      PIrrPat l p       -> PIrrPat (f l) p+      PatTypeSig l p t  -> PatTypeSig (f l) p t+      PViewPat l e p    -> PViewPat (f l) e p+      PRPat l rps       -> PRPat (f l) rps+      PXTag l xn pxas mp ps -> PXTag  (f l) xn pxas mp ps+      PXETag l xn pxas mp   -> PXETag (f l) xn pxas mp+      PXPcdata l s      -> PXPcdata (f l) s+      PXPatTag l p      -> PXPatTag (f l) p+      PXRPats  l rps    -> PXRPats  (f l) rps+      PSplice l sp      -> PSplice (f l) sp+      PQuasiQuote l sn st   -> PQuasiQuote (f l) sn st+      PBangPat l p          -> PBangPat (f l) p++instance Annotated PXAttr where+    ann (PXAttr l _ _) = l+    amap f (PXAttr l xn p) = PXAttr (f l) xn p++instance Annotated RPatOp where+    ann (RPStar  l) = l+    ann (RPStarG l) = l+    ann (RPPlus  l) = l+    ann (RPPlusG l) = l+    ann (RPOpt   l) = l+    ann (RPOptG  l) = l+    amap = fmap++instance Annotated RPat where+    ann rp = case rp of+      RPOp l _ _            -> l+      RPEither l _ _        -> l+      RPSeq l _             -> l+      RPGuard l _ _         -> l+      RPCAs l _ _           -> l+      RPAs l _ _            -> l+      RPParen l _           -> l+      RPPat l _             -> l+    amap f rp1 = case rp1 of+      RPOp l rp rop         -> RPOp (f l) rp rop+      RPEither l rp1' rp2   -> RPEither (f l) rp1' rp2+      RPSeq l rps           -> RPSeq (f l) rps+      RPGuard l p ss        -> RPGuard (f l) p ss+      RPCAs l n rp          -> RPCAs (f l) n rp+      RPAs l n rp           -> RPAs (f l) n rp+      RPParen l rp          -> RPParen (f l) rp+      RPPat l p             -> RPPat (f l) p++instance Annotated PatField where+    ann (PFieldPat l _ _)  = l+    ann (PFieldPun l _)    = l+    ann (PFieldWildcard l) = l+    amap f (PFieldPat l qn p) = PFieldPat (f l) qn p+    amap f (PFieldPun l n) = PFieldPun (f l) n+    amap f (PFieldWildcard l) = PFieldWildcard (f l)++instance Annotated Stmt where+    ann (Generator l _ _) = l+    ann (Qualifier l _)   = l+    ann (LetStmt l _)     = l+    ann (RecStmt l _)     = l+    amap f (Generator l p e) = Generator (f l) p e+    amap f (Qualifier l e)   = Qualifier (f l) e+    amap f (LetStmt l bs)    = LetStmt (f l) bs+    amap f (RecStmt l ss)    = RecStmt (f l) ss++instance Annotated QualStmt where+    ann (QualStmt     l _)   = l+    ann (ThenTrans    l _)   = l+    ann (ThenBy       l _ _) = l+    ann (GroupBy      l _)   = l+    ann (GroupUsing   l _)   = l+    ann (GroupByUsing l _ _) = l+    amap f (QualStmt     l s) = QualStmt (f l) s+    amap f (ThenTrans    l e) = ThenTrans (f l) e+    amap f (ThenBy       l e1 e2) = ThenBy (f l) e1 e2+    amap f (GroupBy      l e) = GroupBy (f l) e+    amap f (GroupUsing   l e) = GroupUsing (f l) e+    amap f (GroupByUsing l e1 e2) = GroupByUsing (f l) e1 e2++instance Annotated FieldUpdate where+    ann (FieldUpdate l _ _)  = l+    ann (FieldPun l _)       = l+    ann (FieldWildcard l)    = l+    amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e+    amap f (FieldPun l n)       = FieldPun (f l) n+    amap f (FieldWildcard l)    = FieldWildcard (f l)++instance Annotated Alt where+    ann (Alt l _ _ _) = l+    amap f (Alt l p gs bs) = Alt (f l) p gs bs++instance Annotated Promoted where+    ann (PromotedInteger l _ _) = l+    ann (PromotedString l _ _)  = l+    ann (PromotedCon l _ _)     = l+    ann (PromotedList l _ _)    = l+    ann (PromotedTuple l _)     = l+    ann (PromotedUnit l)        = l+    amap f (PromotedInteger l int raw) = PromotedInteger (f l) int raw+    amap f (PromotedString l str raw) = PromotedString (f l) str raw+    amap f (PromotedCon l b qn)   = PromotedCon (f l) b qn+    amap f (PromotedList l b ps)  = PromotedList  (f l) b ps+    amap f (PromotedTuple l ps) = PromotedTuple (f l) ps+    amap f (PromotedUnit l)     = PromotedUnit (f l)
+ src/Language/Preprocessor/Unlit.hs view
@@ -0,0 +1,72 @@+-- | Part of this code is from "Report on the Programming Language Haskell",+--   version 1.2, appendix C.+{-# OPTIONS_GHC -Wwarn #-}+module Language.Preprocessor.Unlit (unlit) where++import Data.Char+import Data.List (isPrefixOf)++data Classified = Program String | Blank | Comment+                | Include Int String | Pre String++classify :: [String] -> [Classified]+classify []                = []+classify (('\\':x):xs) | x == "begin{code}" = Blank : allProg xs+   where allProg [] = []  -- Should give an error message,+                          -- but I have no good position information.+         allProg (('\\':y):ys) |  "end{code}" `isPrefixOf` y = Blank : classify ys+         allProg (y:ys) = Program y : allProg ys+classify (('>':x):xs)      = Program (' ' : x) : classify xs+classify (('#':x):xs)      = (case words x of+                                (line:rest) | all isDigit line+                                   -> Include (read line) (unwords rest)+                                _  -> Pre x+                             ) : classify xs+--classify (x:xs) | "{-# LINE" `isPrefixOf` x = Program x: classify xs+classify (x:xs) | all isSpace x = Blank : classify xs+classify (_:xs)                 = Comment : classify xs++unclassify :: Classified -> String+unclassify (Program s) = s+unclassify (Pre s)     = '#':s+unclassify (Include i f) = '#':' ':show i ++ ' ':f+unclassify Blank       = ""+unclassify Comment     = ""++-- | 'unlit' takes a filename (for error reports), and transforms the+--   given string, to eliminate the literate comments from the program text.+unlit :: FilePath -> String -> String+unlit file lhs = (unlines+                 . map unclassify+                 . adjacent file (0::Int) Blank+                 . classify) (inlines lhs)++adjacent :: FilePath -> Int -> Classified -> [Classified] -> [Classified]+adjacent file 0 _             (x              :xs) = x : adjacent file 1 x xs -- force evaluation of line number+adjacent file n   (Program _) (Comment        :_ ) = error (message file n "program" "comment")+adjacent _    _ y@(Program _) (x@(Include i f):xs) = x: adjacent f    i     y xs+adjacent file n y@(Program _) (x@(Pre _)      :xs) = x: adjacent file (n+1) y xs+adjacent file n   Comment     (  (Program _)  :_ ) = error (message file n "comment" "program")+adjacent _    _ y@Comment     (x@(Include i f):xs) = x: adjacent f    i     y xs+adjacent file n y@Comment     (x@(Pre _)      :xs) = x: adjacent file (n+1) y xs+adjacent _    _ y@Blank       (x@(Include i f):xs) = x: adjacent f    i     y xs+adjacent file n y@Blank       (x@(Pre _)      :xs) = x: adjacent file (n+1) y xs+adjacent file n _             (x              :xs) = x: adjacent file (n+1) x xs+adjacent _    _ _             []                   = []++message :: String -> Int -> String -> String -> String+message "\"\"" n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n"+message []     n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n"+message file   n p c = "In file " ++ file ++ " at line "++show n++": "++p++ " line before "++c++" line.\n"+++-- Re-implementation of 'lines', for better efficiency (but decreased laziness).+-- Also, importantly, accepts non-standard DOS and Mac line ending characters.+inlines :: String -> [String]+inlines = (`lines'` id)+  where+  lines' []             acc = [acc []]+  lines' ('\^M':'\n':s) acc = acc [] : lines' s id      -- DOS+  lines' ('\^M':s)      acc = acc [] : lines' s id      -- MacOS+  lines' ('\n':s)       acc = acc [] : lines' s id      -- Unix+  lines' (c:s)          acc = lines' s (acc . (c:))
+ tests/Extensions.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, StandaloneDeriving #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Extensions (extensionProperties) where++import Test.Tasty+import Test.Tasty.SmallCheck+import Test.SmallCheck.Series+import Language.Haskell.Exts+import Data.Function+import Data.List++instance Monad m => Serial m Language where+  series = generate (const knownLanguages)++instance Monad m => Serial m Extension where+  series = generate (const knownExtensions)++instance Monad m => Serial m KnownExtension where+  series = generate $ const [ e | EnableExtension e <- knownExtensions ]++infix 3 ~~+(~~) :: Monad m => [Extension] -> [Extension] -> Property m+xts1 ~~ xts2 = forAll $ \lang -> ((==) `on` sort . toExtensionList lang) xts1 xts2++-- arbitrary examples+e1 :: KnownExtension+e1 = OverlappingInstances++e2 :: KnownExtension+e2 = UndecidableInstances++extensionProperties :: TestTree+extensionProperties =+  localOption (SmallCheckDepth 2) $ testGroup "Properties of LANGUAGE extensions" $+  [ testProperty "identity" $ \x -> x ~~ x+  , testProperty "idempotence" $ \x -> x ++ x ~~ x+  -- Actually, let's not exhaustively check n^2 cases+  -- , testProperty "right bias" $ \x y -> x ++ y ++ x ~~ y ++ x+  , testProperty "right bias - override to disabled" $+      [EnableExtension e1, DisableExtension e1] ~~ [DisableExtension e1]+  , testProperty "right bias - override to enabled" $+      [DisableExtension e1, EnableExtension e1] ~~ [EnableExtension e1]+  , testProperty "right bias - interleaved override to disabled" $+      [EnableExtension e1, EnableExtension e2, DisableExtension e1]+        ~~ [EnableExtension e2, DisableExtension e1]+  , testProperty "right bias - interleaved override to enabled" $+      [DisableExtension e1, EnableExtension e2, EnableExtension e1]+        ~~ [EnableExtension e2, EnableExtension e1]+  , testProperty "closedness of implication" $ \x -> impliesExts (impliesExts x) == impliesExts x+  , testProperty "closedness of toExtensionList" $ \l x -> let es = toExtensionList l x in es == impliesExts es+  , testProperty "opposite extensions 1" $ \x -> [EnableExtension x, DisableExtension x] ~~ [DisableExtension x]+  , testProperty "opposite extensions 2" $ \x -> [DisableExtension x, EnableExtension x] ~~ [EnableExtension x]+  ]
+ tests/Runner.hs view
@@ -0,0 +1,189 @@+{-# LANGUAGE ViewPatterns #-}+-- | Use "runhaskell Setup.hs test" or "cabal test" to run these tests.+module Main where++import Language.Haskell.Exts++import Test.Tasty hiding (defaultMain)+import Test.Tasty.Golden+import Test.Tasty.Golden.Manage+import System.FilePath+import System.IO+import Control.Monad.Trans+import Control.Applicative+import Extensions+import Text.Show.Pretty+++main :: IO ()+main = do+  sources <- getTestFiles examplesDir+  defaultMain $ testGroup "Tests" $+    [ parserTests sources+    , exactPrinterTests sources+    , prettyPrinterTests sources+    , prettyParserTests sources+    , extensionProperties+    , commentsTests examplesDir+    ]++-- | Where all the tests are to be found+examplesDir :: FilePath+examplesDir = "tests/examples"++getTestFiles :: MonadIO m => FilePath -> m [FilePath]+getTestFiles dir = liftIO $ findByExtension [".hs", ".lhs"] dir++parserTests :: [FilePath] -> TestTree -- {{{+parserTests sources = testGroup "Parser tests" $ do+  -- list monad+  file <- sources+  let+    out = file <.> "parser" <.> "out"+    golden = file <.> "parser" <.> "golden"+    run = do+      ast <-+        parseUTF8FileWithComments+          (defaultParseMode { parseFilename = file })+          file+      writeBinaryFile out $ ppShow ast ++ "\n"+  return $ goldenVsFile (takeBaseName file) golden out run+-- }}}++exactPrinterTests :: [FilePath] -> TestTree -- {{{+exactPrinterTests sources = testGroup "Exact printer tests" $ do+  -- list monad+  file <- sources+  let+    out = file <.> "exactprinter" <.> "out"+    golden = file <.> "exactprinter" <.> "golden"+    run = do+      contents <- readUTF8File file+      let+        -- parse+        mbAst =+          parseFileContentsWithComments+            (defaultParseMode { parseFilename = file })+            contents+        -- try to pretty-print; summarize the test result+        result =+          case mbAst of+            f@ParseFailed{} -> show f+            ParseOk ast ->+              let+                printed = uncurry exactPrint ast+              in+                if printed == contents+                  then "Match"+                  else printed+      writeBinaryFile out $ result ++ "\n"+  return $ goldenVsFile (takeBaseName file) golden out run+-- }}}++prettyPrinterTests :: [FilePath] -> TestTree -- {{{+prettyPrinterTests sources = testGroup "Pretty printer tests" $ do+  -- list monad+  file <- sources+  let+    out = file <.> "prettyprinter" <.> "out"+    golden = file <.> "prettyprinter" <.> "golden"+    run = do+      contents <- readUTF8File file+      let+        -- parse+        mbAst =+          parseFileContentsWithMode+            (defaultParseMode { parseFilename = file })+            contents+        -- try to pretty-print; summarize the test result+        result =+          case mbAst of+            f@ParseFailed{} -> show f+            ParseOk ast -> prettyPrint ast+      writeBinaryFile out $ result ++ "\n"+  return $ goldenVsFile (takeBaseName file) golden out run+-- }}}++prettyParserTests :: [FilePath] -> TestTree -- {{{+prettyParserTests sources = testGroup "Pretty-parser tests" $ do+  -- list monad+  file <- sources+  let+    out = file <.> "prettyparser" <.> "out"+    golden = file <.> "prettyparser" <.> "golden"+    run = do+      contents <- readUTF8File file+      let+        -- parse+        parse1Result :: ParseResult (Module SrcSpanInfo)+        parse1Result =+          parseFileContentsWithMode+            (defaultParseMode { parseFilename = file })+            contents++        prettyResult :: ParseResult String+        prettyResult = prettyPrint <$> parse1Result++        parse2Result :: ParseResult (ParseResult (Module SrcSpanInfo))+        parse2Result = parseFileContents <$> prettyResult++        -- Even the un-annotated AST contains certain locations.+        -- Obviously, they may differ, so we have to erase them.+        eraseLocs :: Module l -> Module ()+        eraseLocs = (() <$)++        summary =+          case liftA3 (,,) parse1Result prettyResult parse2Result of+            f@ParseFailed{} -> show f+            ParseOk (eraseLocs -> ast1, pretty, mbAst2) ->+              case mbAst2 of+                f@ParseFailed{} ->+                  "Failed to parse output of pretty-printer:\n" +++                  show f ++ "\n" +++                  "The pretty-printer output follows.\n\n" +++                  pretty+                ParseOk (eraseLocs -> ast2) ->+                  if ast1 == ast2+                    then "Match"+                    else+                      "Roundtrip test failed\n\n" +++                      "AST 1:\n\n" +++                      show ast1 ++ "\n\n" +++                      "AST 2:\n\n" +++                      show ast2 ++ "\n"++      writeBinaryFile out $ summary ++ "\n"+  return $ goldenVsFile (takeBaseName file) golden out run+-- }}}++commentsTests :: FilePath -> TestTree  -- {{{+commentsTests dir = testGroup "Comments tests" $ do+    let file = dir ++ "/HaddockComments.hs"+        out = file <.> "comments" <.> "out"+        golden = file <.> "comments" <.> "golden"+        run = do+            contents <- readUTF8File file+            let+              -- parse+              parse1Result :: ParseResult (Module SrcSpanInfo,[Comment])+              parse1Result =+                parseFileContentsWithComments+                 (defaultParseMode { parseFilename = file })+                  contents+              withC = case parse1Result of+                        ParseOk res         -> ParseOk $ associateHaddock res+                        ParseFailed sloc msg -> ParseFailed sloc msg+            writeBinaryFile out $ show withC ++ "\n"+    return $ goldenVsFile (takeBaseName file) golden out run++-- UTF8 utils {{{+readUTF8File :: FilePath -> IO String+readUTF8File fp = openFile fp ReadMode >>= \h -> do+        hSetEncoding h utf8+        c <- hGetContents h >>= \s -> length s `seq` return s+        hClose h+        return c++parseUTF8FileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment]))+parseUTF8FileWithComments p fp = readUTF8File fp >>= (return . parseFileContentsWithComments p)+-- }}}
+ tests/examples/AmbiguousFixities.hs view
@@ -0,0 +1,1 @@+f = (+ 1) . head &&& tail
+ tests/examples/AmbiguousFixities.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
+ tests/examples/AmbiguousFixities.hs.parser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
+ tests/examples/AmbiguousFixities.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
+ tests/examples/AmbiguousFixities.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
+ tests/examples/ArityMismatch.hs view
@@ -0,0 +1,7 @@+module ArityMismatch where++foo a b = 1+foo a = 2++bar = 1+baz = 2
+ tests/examples/ArityMismatch.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ArityMismatch.hs" 3 1) "arity mismatch for 'foo'"
+ tests/examples/ArityMismatch.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/ArityMismatch.hs" 3 1)+  "arity mismatch for 'foo'"
+ tests/examples/ArityMismatch.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ArityMismatch.hs" 3 1) "arity mismatch for 'foo'"
+ tests/examples/ArityMismatch.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ArityMismatch.hs" 3 1) "arity mismatch for 'foo'"
+ tests/examples/ArrowBrackets.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE Arrows #-}+module ArrowBrackets where++foo = proc (x, y) -> (| f (g -< x) |) y++bar = proc (x, y) -> do+  z <- (| f (g -< x) |) y+  (| f (h -< z) |) y
+ tests/examples/ArrowBrackets.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ArrowBrackets.hs.parser.golden view
@@ -0,0 +1,541 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 1 1+            , SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 1+            , SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 1+            , SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 1+            , SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 6 1+            , SrcSpan "tests/examples/ArrowBrackets.hs" 9 1 9 1+            , SrcSpan "tests/examples/ArrowBrackets.hs" 9 1 9 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 7+                  , SrcSpan "tests/examples/ArrowBrackets.hs" 2 22 2 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 2 8 2 21+                 , srcInfoPoints = []+                 }+               "ArrowBrackets")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 1 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 1 13+                , SrcSpan "tests/examples/ArrowBrackets.hs" 1 21 1 24+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 1 14 1 20+                , srcInfoPoints = []+                }+              "Arrows"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 40+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 5 4 40+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 5 4 6 ]+               }+             (Proc+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 7 4 40+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 7 4 11+                      , SrcSpan "tests/examples/ArrowBrackets.hs" 4 19 4 21+                      ]+                  }+                (PTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 12 4 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 12 4 13+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 4 14 4 15+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 4 17 4 18+                         ]+                     }+                   Boxed+                   [ PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 13 4 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 13 4 14+                            , srcInfoPoints = []+                            }+                          "x")+                   , PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 16 4 17+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 16 4 17+                            , srcInfoPoints = []+                            }+                          "y")+                   ])+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 22 4 40+                     , srcInfoPoints = []+                     }+                   (ArrOp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 22 4 38+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 22 4 24+                            , SrcSpan "tests/examples/ArrowBrackets.hs" 4 36 4 38+                            ]+                        }+                      (App+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 35+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 26+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 26+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 26+                                    , srcInfoPoints = []+                                    }+                                  "f")))+                         (Paren+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 27 4 35+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 27 4 28+                                  , SrcSpan "tests/examples/ArrowBrackets.hs" 4 34 4 35+                                  ]+                              }+                            (LeftArrApp+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 34+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 30 4 32 ]+                                 }+                               (Var+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 29+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 29+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 29+                                          , srcInfoPoints = []+                                          }+                                        "g")))+                               (Var+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ArrowBrackets.hs" 4 33 4 34+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ArrowBrackets.hs" 4 33 4 34+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ArrowBrackets.hs" 4 33 4 34+                                          , srcInfoPoints = []+                                          }+                                        "x")))))))+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 39 4 40+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 39 4 40+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 39 4 40+                              , srcInfoPoints = []+                              }+                            "y"))))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 8 21+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 6 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 6 4+                  , srcInfoPoints = []+                  }+                "bar"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 5 8 21+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 5 6 6 ]+               }+             (Proc+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 7 8 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 7 6 11+                      , SrcSpan "tests/examples/ArrowBrackets.hs" 6 19 6 21+                      ]+                  }+                (PTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 12 6 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 12 6 13+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 6 14 6 15+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 6 17 6 18+                         ]+                     }+                   Boxed+                   [ PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 13 6 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 13 6 14+                            , srcInfoPoints = []+                            }+                          "x")+                   , PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 16 6 17+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 16 6 17+                            , srcInfoPoints = []+                            }+                          "y")+                   ])+                (Do+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 22 8 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 22 6 24+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 3+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 3+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 9 1 9 0+                         ]+                     }+                   [ Generator+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 26+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 5 7 7 ]+                         }+                       (PVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 4+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 4+                               , srcInfoPoints = []+                               }+                             "z"))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 8 7 26+                            , srcInfoPoints = []+                            }+                          (ArrOp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 8 7 24+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 8 7 10+                                   , SrcSpan "tests/examples/ArrowBrackets.hs" 7 22 7 24+                                   ]+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 21+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 12+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 12+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 12+                                           , srcInfoPoints = []+                                           }+                                         "f")))+                                (Paren+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 7 13 7 21+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 13 7 14+                                         , SrcSpan "tests/examples/ArrowBrackets.hs" 7 20 7 21+                                         ]+                                     }+                                   (LeftArrApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ArrowBrackets.hs" 7 14 7 20+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 16 7 18 ]+                                        }+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 7 14 7 15+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ArrowBrackets.hs" 7 14 7 15+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ArrowBrackets.hs" 7 14 7 15+                                                 , srcInfoPoints = []+                                                 }+                                               "g")))+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 7 19 7 20+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ArrowBrackets.hs" 7 19 7 20+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ArrowBrackets.hs" 7 19 7 20+                                                 , srcInfoPoints = []+                                                 }+                                               "x")))))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 25 7 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ArrowBrackets.hs" 7 25 7 26+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 7 25 7 26+                                     , srcInfoPoints = []+                                     }+                                   "y"))))+                   , Qualifier+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 21+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 21+                            , srcInfoPoints = []+                            }+                          (ArrOp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 19+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 5+                                   , SrcSpan "tests/examples/ArrowBrackets.hs" 8 17 8 19+                                   ]+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 16+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 7+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 7+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 7+                                           , srcInfoPoints = []+                                           }+                                         "f")))+                                (Paren+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 8 8 8 16+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 8 8 8 9+                                         , SrcSpan "tests/examples/ArrowBrackets.hs" 8 15 8 16+                                         ]+                                     }+                                   (LeftArrApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ArrowBrackets.hs" 8 9 8 15+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/ArrowBrackets.hs" 8 11 8 13 ]+                                        }+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 8 9 8 10+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/ArrowBrackets.hs" 8 9 8 10+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ArrowBrackets.hs" 8 9 8 10+                                                 , srcInfoPoints = []+                                                 }+                                               "h")))+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 8 14 8 15+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ArrowBrackets.hs" 8 14 8 15+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ArrowBrackets.hs" 8 14 8 15+                                                 , srcInfoPoints = []+                                                 }+                                               "z")))))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 20 8 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ArrowBrackets.hs" 8 20 8 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 8 20 8 21+                                     , srcInfoPoints = []+                                     }+                                   "y"))))+                   ])))+          Nothing+      ]+  , []+  )
+ tests/examples/ArrowBrackets.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ArrowBrackets.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE Arrows #-}+module ArrowBrackets where+foo = proc (x, y) -> (| f (g -< x) |) y+bar+  = proc (x, y) ->+      do z <- (| f (g -< x) |) y+         (| f (h -< z) |) y
+ tests/examples/ArrowLayout.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE Arrows #-}+module ArrowLayout where++exp = proc () -> do+  rec let e = 1 + i+      i <- integral -< e+  returnA -< e
+ tests/examples/ArrowLayout.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ArrowLayout.hs.parser.golden view
@@ -0,0 +1,338 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ArrowLayout.hs" 1 1 1 1+            , SrcSpan "tests/examples/ArrowLayout.hs" 2 1 2 1+            , SrcSpan "tests/examples/ArrowLayout.hs" 2 1 2 1+            , SrcSpan "tests/examples/ArrowLayout.hs" 4 1 4 1+            , SrcSpan "tests/examples/ArrowLayout.hs" 8 1 8 1+            , SrcSpan "tests/examples/ArrowLayout.hs" 8 1 8 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 2 1 2 25+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ArrowLayout.hs" 2 1 2 7+                  , SrcSpan "tests/examples/ArrowLayout.hs" 2 20 2 25+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 2 8 2 19+                 , srcInfoPoints = []+                 }+               "ArrowLayout")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 1 1 1 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ArrowLayout.hs" 1 1 1 13+                , SrcSpan "tests/examples/ArrowLayout.hs" 1 21 1 24+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 1 14 1 20+                , srcInfoPoints = []+                }+              "Arrows"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 1 7 15+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 1 4 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 1 4 4+                  , srcInfoPoints = []+                  }+                "exp"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 5 7 15+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ArrowLayout.hs" 4 5 4 6 ]+               }+             (Proc+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 7 7 15+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ArrowLayout.hs" 4 7 4 11+                      , SrcSpan "tests/examples/ArrowLayout.hs" 4 15 4 17+                      ]+                  }+                (PApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 13+                         , SrcSpan "tests/examples/ArrowLayout.hs" 4 13 4 14+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 13+                            , SrcSpan "tests/examples/ArrowLayout.hs" 4 13 4 14+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 14+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 13+                               , SrcSpan "tests/examples/ArrowLayout.hs" 4 13 4 14+                               ]+                           }))+                   [])+                (Do+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 18 7 15+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ArrowLayout.hs" 4 18 4 20+                         , SrcSpan "tests/examples/ArrowLayout.hs" 5 3 5 3+                         , SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 3+                         , SrcSpan "tests/examples/ArrowLayout.hs" 8 1 8 0+                         ]+                     }+                   [ RecStmt+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 5 3 6 25+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ArrowLayout.hs" 5 3 5 6+                             , SrcSpan "tests/examples/ArrowLayout.hs" 5 7 5 7+                             , SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 7+                             , SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 0+                             ]+                         }+                       [ LetStmt+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 5 7 5 20+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/ArrowLayout.hs" 5 7 5 10 ]+                             }+                           (BDecls+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 20+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 11+                                    , SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 0+                                    ]+                                }+                              [ PatBind+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 20+                                    , srcInfoPoints = []+                                    }+                                  (PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 12+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 12+                                          , srcInfoPoints = []+                                          }+                                        "e"))+                                  (UnGuardedRhs+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ArrowLayout.hs" 5 13 5 20+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/ArrowLayout.hs" 5 13 5 14 ]+                                       }+                                     (InfixApp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ArrowLayout.hs" 5 15 5 20+                                          , srcInfoPoints = []+                                          }+                                        (Lit+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/ArrowLayout.hs" 5 15 5 16+                                             , srcInfoPoints = []+                                             }+                                           (Int+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ArrowLayout.hs" 5 15 5 16+                                                , srcInfoPoints = []+                                                }+                                              1+                                              "1"))+                                        (QVarOp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/ArrowLayout.hs" 5 17 5 18+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ArrowLayout.hs" 5 17 5 18+                                                , srcInfoPoints = []+                                                }+                                              (Symbol+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ArrowLayout.hs" 5 17 5 18+                                                   , srcInfoPoints = []+                                                   }+                                                 "+")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/ArrowLayout.hs" 5 19 5 20+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ArrowLayout.hs" 5 19 5 20+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ArrowLayout.hs" 5 19 5 20+                                                   , srcInfoPoints = []+                                                   }+                                                 "i")))))+                                  Nothing+                              ])+                       , Generator+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 25+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/ArrowLayout.hs" 6 9 6 11 ]+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 8+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 8+                                   , srcInfoPoints = []+                                   }+                                 "i"))+                           (LeftArrApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 12 6 25+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/ArrowLayout.hs" 6 21 6 23 ]+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 12 6 20+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/ArrowLayout.hs" 6 12 6 20+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/ArrowLayout.hs" 6 12 6 20+                                         , srcInfoPoints = []+                                         }+                                       "integral")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 24 6 25+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/ArrowLayout.hs" 6 24 6 25+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/ArrowLayout.hs" 6 24 6 25+                                         , srcInfoPoints = []+                                         }+                                       "e"))))+                       ]+                   , Qualifier+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 15+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ArrowLayout.hs" 7 11 7 13 ]+                         }+                       (LeftArrApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 15+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ArrowLayout.hs" 7 11 7 13 ]+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 10+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 10+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 10+                                     , srcInfoPoints = []+                                     }+                                   "returnA")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 14 7 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 14 7 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ArrowLayout.hs" 7 14 7 15+                                     , srcInfoPoints = []+                                     }+                                   "e"))))+                   ])))+          Nothing+      ]+  , []+  )
+ tests/examples/ArrowLayout.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ArrowLayout.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE Arrows #-}+module ArrowLayout where+exp+  = proc () ->+      do rec let e = 1 + i+             i <- integral -< e+         returnA -< e
+ tests/examples/AtOperator.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeOperators #-}++data a :+: b = Proxy++foo = id @(Int :+: Int)++_ @> m = m
+ tests/examples/AtOperator.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtOperator.hs.parser.golden view
@@ -0,0 +1,291 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/AtOperator.hs" 1 1 1 1+            , SrcSpan "tests/examples/AtOperator.hs" 2 1 2 1+            , SrcSpan "tests/examples/AtOperator.hs" 4 1 4 1+            , SrcSpan "tests/examples/AtOperator.hs" 4 1 4 1+            , SrcSpan "tests/examples/AtOperator.hs" 4 1 4 1+            , SrcSpan "tests/examples/AtOperator.hs" 6 1 6 1+            , SrcSpan "tests/examples/AtOperator.hs" 8 1 8 1+            , SrcSpan "tests/examples/AtOperator.hs" 9 1 9 1+            , SrcSpan "tests/examples/AtOperator.hs" 9 1 9 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 1 1 1 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/AtOperator.hs" 1 1 1 13+                , SrcSpan "tests/examples/AtOperator.hs" 1 31 1 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 1 14 1 30+                , srcInfoPoints = []+                }+              "TypeApplications"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 2 1 2 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/AtOperator.hs" 2 1 2 13+                , SrcSpan "tests/examples/AtOperator.hs" 2 28 2 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 2 14 2 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 1 4 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/AtOperator.hs" 4 14 4 15 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 1 4 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 13+               , srcInfoPoints = []+               }+             (DHInfix+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 13+                  , srcInfoPoints = []+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 7+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 7+                        , srcInfoPoints = []+                        }+                      "a"))+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 8 4 11+                     , srcInfoPoints = []+                     }+                   ":+:"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 12 4 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 12 4 13+                     , srcInfoPoints = []+                     }+                   "b")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 16 4 21+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 16 4 21+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 16 4 21+                      , srcInfoPoints = []+                      }+                    "Proxy")+                 [])+          ]+          []+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 1 6 24+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 1 6 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 1 6 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 5 6 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/AtOperator.hs" 6 5 6 6 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 24+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 9+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 9+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 9+                           , srcInfoPoints = []+                           }+                         "id")))+                (TypeApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 10 6 24+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/AtOperator.hs" 6 10 6 11 ]+                     }+                   (TyParen+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 11 6 24+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/AtOperator.hs" 6 11 6 12+                            , SrcSpan "tests/examples/AtOperator.hs" 6 23 6 24+                            ]+                        }+                      (TyInfix+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 23+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 15+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 15+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 15+                                    , srcInfoPoints = []+                                    }+                                  "Int")))+                         (UnpromotedName+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 16 6 19+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 16 6 19+                                 , srcInfoPoints = []+                                 }+                               (Symbol+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 16 6 19+                                    , srcInfoPoints = []+                                    }+                                  ":+:")))+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 20 6 23+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 20 6 23+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 20 6 23+                                    , srcInfoPoints = []+                                    }+                                  "Int"))))))))+          Nothing+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 1 8 11+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 1 8 11+                , srcInfoPoints = []+                }+              (PWildCard+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 1 8 2+                   , srcInfoPoints = []+                   })+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 3 8 5+                   , srcInfoPoints = []+                   }+                 "@>")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 6 8 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 6 8 7+                       , srcInfoPoints = []+                       }+                     "m")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 8 8 11+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/AtOperator.hs" 8 8 8 9 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 10 8 11+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 10 8 11+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 10 8 11+                            , srcInfoPoints = []+                            }+                          "m"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/AtOperator.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtOperator.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeOperators #-}++data a :+: b = Proxy+foo = id @(Int :+: Int)+_ @> m = m
+ tests/examples/AtSign.hs view
@@ -0,0 +1,17 @@+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeApplications #-}+{- |+Accelerate interface to the native CUDA implementation+of the Fourier Transform provided by the CUFFT library.+-}+module Data.Array.Accelerate.CUFFT.Private where+++transform hndl@(Handle fallback mode width _) =+   wrap mode (A.constant width) $+   A.foreignAcc+      (AF.CUDAForeignAcc "transformForeign" $ transformForeign hndl)+      (unwrap mode (A.constant width) fallback)++
+ tests/examples/AtSign.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtSign.hs.parser.golden view
@@ -0,0 +1,591 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 1 1 18 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/AtSign.hs" 1 1 1 1+            , SrcSpan "tests/examples/AtSign.hs" 2 1 2 1+            , SrcSpan "tests/examples/AtSign.hs" 3 1 3 1+            , SrcSpan "tests/examples/AtSign.hs" 8 1 8 1+            , SrcSpan "tests/examples/AtSign.hs" 8 1 8 1+            , SrcSpan "tests/examples/AtSign.hs" 11 1 11 1+            , SrcSpan "tests/examples/AtSign.hs" 18 1 18 1+            , SrcSpan "tests/examples/AtSign.hs" 18 1 18 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 8 1 8 49+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/AtSign.hs" 8 1 8 7+                  , SrcSpan "tests/examples/AtSign.hs" 8 44 8 49+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 8 8 8 43+                 , srcInfoPoints = []+                 }+               "Data.Array.Accelerate.CUFFT.Private")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/AtSign.hs" 1 1 1 13+                , SrcSpan "tests/examples/AtSign.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 2 1 2 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/AtSign.hs" 2 1 2 13+                , SrcSpan "tests/examples/AtSign.hs" 2 28 2 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 2 14 2 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 3 1 3 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/AtSign.hs" 3 1 3 13+                , SrcSpan "tests/examples/AtSign.hs" 3 31 3 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 3 14 3 30+                , srcInfoPoints = []+                }+              "TypeApplications"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 1 15 48+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 1 15 48+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 1 11 10+                   , srcInfoPoints = []+                   }+                 "transform")+              [ PAsPat+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 11 11 46+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/AtSign.hs" 11 15 11 16 ]+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 11 11 15+                       , srcInfoPoints = []+                       }+                     "hndl")+                  (PParen+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 16 11 46+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/AtSign.hs" 11 16 11 17+                           , SrcSpan "tests/examples/AtSign.hs" 11 45 11 46+                           ]+                       }+                     (PApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 17 11 45+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 17 11 23+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 17 11 23+                                , srcInfoPoints = []+                                }+                              "Handle"))+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 24 11 32+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 24 11 32+                                 , srcInfoPoints = []+                                 }+                               "fallback")+                        , PVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 33 11 37+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 33 11 37+                                 , srcInfoPoints = []+                                 }+                               "mode")+                        , PVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 38 11 43+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 38 11 43+                                 , srcInfoPoints = []+                                 }+                               "width")+                        , PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 44 11 45+                              , srcInfoPoints = []+                              }+                        ]))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 47 15 48+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/AtSign.hs" 11 47 11 48 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 15 48+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 32+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 13+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 8+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 8+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 8+                                     , srcInfoPoints = []+                                     }+                                   "wrap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 9 12 13+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 9 12 13+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 9 12 13+                                     , srcInfoPoints = []+                                     }+                                   "mode"))))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 14 12 32+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/AtSign.hs" 12 14 12 15+                                , SrcSpan "tests/examples/AtSign.hs" 12 31 12 32+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 15 12 31+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 15 12 25+                                  , srcInfoPoints = []+                                  }+                                (Qual+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 15 12 25+                                     , srcInfoPoints = []+                                     }+                                   (ModuleName+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 12 15 12 25+                                        , srcInfoPoints = []+                                        }+                                      "A")+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 12 15 12 25+                                        , srcInfoPoints = []+                                        }+                                      "constant")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 26 12 31+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 26 12 31+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 12 26 12 31+                                        , srcInfoPoints = []+                                        }+                                      "width"))))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 33 12 34+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 33 12 34+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 33 12 34+                               , srcInfoPoints = []+                               }+                             "$")))+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 15 48+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 14 69+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 13 16+                               , srcInfoPoints = []+                               }+                             (Qual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 13 16+                                  , srcInfoPoints = []+                                  }+                                (ModuleName+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 13 16+                                     , srcInfoPoints = []+                                     }+                                   "A")+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 13 16+                                     , srcInfoPoints = []+                                     }+                                   "foreignAcc")))+                          (Paren+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 7 14 69+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/AtSign.hs" 14 7 14 8+                                   , SrcSpan "tests/examples/AtSign.hs" 14 68 14 69+                                   ]+                               }+                             (InfixApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 8 14 68+                                  , srcInfoPoints = []+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 8 14 44+                                     , srcInfoPoints = []+                                     }+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 14 8 14 25+                                        , srcInfoPoints = []+                                        }+                                      (Qual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/AtSign.hs" 14 8 14 25+                                           , srcInfoPoints = []+                                           }+                                         (ModuleName+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/AtSign.hs" 14 8 14 25+                                              , srcInfoPoints = []+                                              }+                                            "AF")+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/AtSign.hs" 14 8 14 25+                                              , srcInfoPoints = []+                                              }+                                            "CUDAForeignAcc")))+                                   (Lit+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 14 26 14 44+                                        , srcInfoPoints = []+                                        }+                                      (String+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/AtSign.hs" 14 26 14 44+                                           , srcInfoPoints = []+                                           }+                                         "transformForeign"+                                         "transformForeign")))+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 45 14 46+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 14 45 14 46+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/AtSign.hs" 14 45 14 46+                                           , srcInfoPoints = []+                                           }+                                         "$")))+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 47 14 68+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 14 47 14 63+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/AtSign.hs" 14 47 14 63+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/AtSign.hs" 14 47 14 63+                                              , srcInfoPoints = []+                                              }+                                            "transformForeign")))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 14 64 14 68+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/AtSign.hs" 14 64 14 68+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/AtSign.hs" 14 64 14 68+                                              , srcInfoPoints = []+                                              }+                                            "hndl")))))))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 7 15 48+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/AtSign.hs" 15 7 15 8+                                , SrcSpan "tests/examples/AtSign.hs" 15 47 15 48+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 8 15 47+                               , srcInfoPoints = []+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 8 15 38+                                  , srcInfoPoints = []+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 8 15 19+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 15 8 15 14+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/AtSign.hs" 15 8 15 14+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/AtSign.hs" 15 8 15 14+                                              , srcInfoPoints = []+                                              }+                                            "unwrap")))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 15 15 15 19+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/AtSign.hs" 15 15 15 19+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/AtSign.hs" 15 15 15 19+                                              , srcInfoPoints = []+                                              }+                                            "mode"))))+                                (Paren+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 20 15 38+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/AtSign.hs" 15 20 15 21+                                         , SrcSpan "tests/examples/AtSign.hs" 15 37 15 38+                                         ]+                                     }+                                   (App+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 15 21 15 37+                                        , srcInfoPoints = []+                                        }+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/AtSign.hs" 15 21 15 31+                                           , srcInfoPoints = []+                                           }+                                         (Qual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/AtSign.hs" 15 21 15 31+                                              , srcInfoPoints = []+                                              }+                                            (ModuleName+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/AtSign.hs" 15 21 15 31+                                                 , srcInfoPoints = []+                                                 }+                                               "A")+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/AtSign.hs" 15 21 15 31+                                                 , srcInfoPoints = []+                                                 }+                                               "constant")))+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/AtSign.hs" 15 32 15 37+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/AtSign.hs" 15 32 15 37+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/AtSign.hs" 15 32 15 37+                                                 , srcInfoPoints = []+                                                 }+                                               "width"))))))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 39 15 47+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 39 15 47+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/AtSign.hs" 15 39 15 47+                                        , srcInfoPoints = []+                                        }+                                      "fallback"))))))))+              Nothing+          ]+      ]+  , [ Comment+        True+        (SrcSpan "tests/examples/AtSign.hs" 4 1 7 3)+        " |\nAccelerate interface to the native CUDA implementation\nof the Fourier Transform provided by the CUFFT library.\n"+    ]+  )
+ tests/examples/AtSign.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtSign.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeApplications #-}+module Data.Array.Accelerate.CUFFT.Private where+transform hndl@(Handle fallback mode width _)+  = wrap mode (A.constant width) $+      A.foreignAcc+        (AF.CUDAForeignAcc "transformForeign" $ transformForeign hndl)+        (unwrap mode (A.constant width) fallback)
+ tests/examples/Attributes.hs view
@@ -0,0 +1,2181 @@+{- |+   Module      : Data.GraphViz.Attributes+   Description : Definition of the Graphviz attributes.+   Copyright   : (c) Matthew Sackman, Ivan Lazar Miljenovic+   License     : 3-Clause BSD-style+   Maintainer  : Ivan.Miljenovic@gmail.com++   This module defines the various attributes that different parts of+   a Graphviz graph can have.  These attributes are based on the+   documentation found at:+     <http://graphviz.org/doc/info/attrs.html>++   For more information on usage, etc. please see that document.++   A summary of known current constraints\/limitations\/differences:++   * There might still be a few cases where quotes are still not+     escaped/parsed correctly; if you find such a situation, please+     let me know; however, you should be able to use 'String' values+     directly without having to worry about when quotes are required+     or extra escaping of quote characters as 'PrintDot' and+     'ParseDot' instances for 'String' should take care of that+     for you.++   * Note that for an edge, in /Dot/ parlance if the edge goes from+     /A/ to /B/, then /A/ is the tail node and /B/ is the head node+     (since /A/ is at the tail end of the arrow).++   * ColorList and PointfList are defined as actual lists (but+     'LayerList' is not).  Note that for the Color 'Attribute' for+     node values, only a single Color is valid; edges are allowed+     multiple colors with one spline/arrow per color in the list (but+     you must have at least one 'Color' in the list).  This might be+     changed in future.++   * Style is implemented as a list of 'StyleItem' values; note that+     empty lists are not allowed.++   * A lot of values have a possible value of @none@.  These now+     have custom constructors.  In fact, most constructors have been+     expanded upon to give an idea of what they represent rather than+     using generic terms.++   * @PointF@ and 'Point' have been combined, and feature support for pure+     'Int'-based co-ordinates as well as 'Double' ones (i.e. no floating+     point-only points for Point).  The optional '!' and third value+     for Point are not available.++   * 'Rect' uses two 'Point' values to denote the lower-left and+     top-right corners.++   * The two 'LabelLoc' attributes have been combined.++   * The defined 'LayerSep' is not used to parse 'LayerRange' or+     'LayerList'; the default (@[' ', ':', '\t']@) is instead used.++   * @SplineType@ has been replaced with @['Spline']@.++   * Only polygon-based 'Shape's are available.++   * 'PortPos' only has the 'CompassPoint' option, not+     @PortName[:CompassPoint]@ (since record shapes aren't allowed,+     and parsing HTML-like labels could be problematic).++   * Not every 'Attribute' is fully documented/described.  However,+     all those which have specific allowed values should be covered.++   * Deprecated 'Overlap' algorithms are not defined.++   * The global @Orientation@ attribute is not defined, as it is+     difficult to distinguish from the node-based 'Orientation'+     'Attribute'; also, its behaviour is duplicated by 'Rotate'.++ -}+module Data.GraphViz.Attributes+    ( -- * The actual /Dot/ attributes.+      Attribute(..)+    , Attributes+      -- ** Validity functions on @Attribute@ values.+    , usedByGraphs+    , usedBySubGraphs+    , usedByClusters+    , usedByNodes+    , usedByEdges+      -- * Value types for @Attribute@s.+    , EscString+    , URL(..)+    , ArrowType(..)+    , AspectType(..)+    , Rect(..)+    , ClusterMode(..)+    , DirType(..)+    , DEConstraints(..)+    , DPoint(..)+    , ModeType(..)+    , Model(..)+    , Label(..)+    , Point(..)+    , Overlap(..)+    , LayerRange(..)+    , LayerID(..)+    , LayerList(..)+    , OutputMode(..)+    , Pack(..)+    , PackMode(..)+    , Pos(..)+    , EdgeType(..)+    , PageDir(..)+    , Spline(..)+    , QuadType(..)+    , Root(..)+    , RankType(..)+    , RankDir(..)+    , Shape(..)+    , SmoothType(..)+    , StartType(..)+    , STStyle(..)+    , StyleItem(..)+    , StyleName(..)+    , PortPos(..)+    , CompassPoint(..)+    , ViewPort(..)+    , FocusType(..)+    , VerticalPlacement(..)+    , ScaleType(..)+    , Justification(..)+    , Ratios(..)+    , module Data.GraphViz.Attributes.Colors+      -- * Types representing the Dot grammar for @ArrowType@.+    , ArrowShape(..)+    , ArrowModifier(..)+    , ArrowFill(..)+    , ArrowSide(..)+      -- ** Default @ArrowType@ aliases.+      -- *** The 9 primitive @ArrowShape@s.+    , box+    , crow+    , diamond+    , dotArrow+    , inv+    , noArrow+    , normal+    , tee+    , vee+      -- *** 5 derived Arrows.+    , oDot+    , invDot+    , invODot+    , oBox+    , oDiamond+      -- *** 5 supported cases for backwards compatibility+    , eDiamond+    , openArr+    , halfOpen+    , emptyArr+    , invEmpty+      -- ** @ArrowModifier@ instances+    , noMods+    , openMod+      -- * Other exported functions\/values+    , defLayerSep+    , notLayerSep+    ) where++import Data.GraphViz.Attributes.Colors+import Data.GraphViz.Util+import Data.GraphViz.Parsing+import Data.GraphViz.Printing++import Data.Char(toLower)+import Data.Maybe(isJust)+import Control.Arrow(first)+import Control.Monad(liftM, liftM2)++-- -----------------------------------------------------------------------------++{- |++   These attributes have been implemented in a /permissive/ manner:+   that is, rather than split them up based on which type of value+   they are allowed, they have all been included in the one data type,+   with functions to determine if they are indeed valid for what+   they're being applied to.++   To interpret the /Valid for/ listings:++     [@G@] Valid for Graphs.++     [@C@] Valid for Clusters.++     [@S@] Valid for Sub-Graphs (and also Clusters).++     [@N@] Valid for Nodes.++     [@E@] Valid for Edges.++   The /Default/ listings are those that the various Graphviz commands+   use if that 'Attribute' isn't specified (in cases where this is+   /none/, this is equivalent to a 'Nothing' value; that is, no value+   is used).  The /Parsing Default/ listings represent what value is+   used (i.e. corresponds to 'True') when the 'Attribute' name is+   listed on its own in /Dot/ source code.+-}+data Attribute+    = Damping Double                   -- ^ /Valid for/: G; /Default/: @0.99@; /Minimum/: @0.0@; /Notes/: neato only+    | K Double                         -- ^ /Valid for/: GC; /Default/: @0.3@; /Minimum/: @0@; /Notes/: sfdp, fdp only+    | URL URL                          -- ^ /Valid for/: ENGC; /Default/: none; /Notes/: svg, postscript, map only+    | ArrowHead ArrowType              -- ^ /Valid for/: E; /Default/: @'normal'@+    | ArrowSize Double                 -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@+    | ArrowTail ArrowType              -- ^ /Valid for/: E; /Default/: @'normal'@+    | Aspect AspectType                -- ^ /Valid for/: G; /Notes/: dot only+    | Bb Rect                          -- ^ /Valid for/: G; /Notes/: write only+    | BgColor Color                    -- ^ /Valid for/: GC; /Default/: X11Color 'Transparent'+    | Center Bool                      -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'+    | Charset String                   -- ^ /Valid for/: G; /Default/: @\"UTF-8\"@+    | ClusterRank ClusterMode          -- ^ /Valid for/: G; /Default/: @'Local'@; /Notes/: dot only+    | ColorScheme ColorScheme          -- ^ /Valid for/: ENCG; /Default/: @'X11'@+    | Color [Color]                    -- ^ /Valid for/: ENC; /Default/: @X11Color 'Black'@+    | Comment String                   -- ^ /Valid for/: ENG; /Default/: @\"\"@+    | Compound Bool                    -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: dot only+    | Concentrate Bool                 -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'+    | Constraint Bool                  -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'; /Notes/: dot only+    | Decorate Bool                    -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True'+    | DefaultDist Double               -- ^ /Valid for/: G; /Default/: @1+(avg. len)*sqrt(|V|)@; /Minimum/: @epsilon@; /Notes/: neato only+    | Dimen Int                        -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only+    | Dim Int                          -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only+    | Dir DirType                      -- ^ /Valid for/: E; /Default/: @'Forward'@ (directed), @'NoDir'@ (undirected)+    | DirEdgeConstraints DEConstraints -- ^ /Valid for/: G; /Default/: @'NoConstraints'@; /Parsing Default/: 'EdgeConstraints'; /Notes/: neato only+    | Distortion Double                -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-100.0@+    | DPI Double                       -- ^ /Valid for/: G; /Default/: @96.0@, @0.0@; /Notes/: svg, bitmap output only; \"resolution\" is a synonym+    | EdgeURL URL                      -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only+    | EdgeTarget EscString             -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only+    | EdgeTooltip EscString            -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only+    | Epsilon Double                   -- ^ /Valid for/: G; /Default/: @.0001 * # nodes@ (@mode == 'KK'@), @.0001@ (@mode == 'Major'@); /Notes/: neato only+    | ESep DPoint                      -- ^ /Valid for/: G; /Default/: @+3@; /Notes/: not dot+    | FillColor Color                  -- ^ /Valid for/: NC; /Default/: @X11Color 'LightGray'@ (nodes), @X11Color 'Black'@ (clusters)+    | FixedSize Bool                   -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'+    | FontColor Color                  -- ^ /Valid for/: ENGC; /Default/: @X11Color 'Black'@+    | FontName String                  -- ^ /Valid for/: ENGC; /Default/: @\"Times-Roman\"@+    | FontNames String                 -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only+    | FontPath String                  -- ^ /Valid for/: G; /Default/: system-dependent+    | FontSize Double                  -- ^ /Valid for/: ENGC; /Default/: @14.0@; /Minimum/: @1.0@+    | Group String                     -- ^ /Valid for/: N; /Default/: @\"\"@; /Notes/: dot only+    | HeadURL URL                      -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only+    | HeadClip Bool                    -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'+    | HeadLabel Label                  -- ^ /Valid for/: E; /Default/: @\"\"@+    | HeadPort PortPos                 -- ^ /Valid for/: E; /Default/: @'PP' 'CenterPoint'@+    | HeadTarget EscString             -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only+    | HeadTooltip EscString            -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only+    | Height Double                    -- ^ /Valid for/: N; /Default/: @0.5@; /Minimum/: @0.02@+    | ID Label                         -- ^ /Valid for/: GNE; /Default/: @\"\"@; /Notes/: svg, postscript, map only+    | Image String                     -- ^ /Valid for/: N; /Default/: @\"\"@+    | ImageScale ScaleType             -- ^ /Valid for/: N; /Default/: @'NoScale'@; /Parsing Default/: 'UniformScale'+    | LabelURL URL                     -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only+    | LabelAngle Double                -- ^ /Valid for/: E; /Default/: @-25.0@; /Minimum/: @-180.0@+    | LabelDistance Double             -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@+    | LabelFloat Bool                  -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True'+    | LabelFontColor Color             -- ^ /Valid for/: E; /Default/: @X11Color 'Black'@+    | LabelFontName String             -- ^ /Valid for/: E; /Default/: @\"Times-Roman\"@+    | LabelFontSize Double             -- ^ /Valid for/: E; /Default/: @14.0@; /Minimum/: @1.0@+    | LabelJust Justification          -- ^ /Valid for/: GC; /Default/: @'JCenter'@+    | LabelLoc VerticalPlacement       -- ^ /Valid for/: GCN; /Default/: @'VTop'@ (clusters), @'VBottom'@ (root graphs), @'VCenter'@ (nodes)+    | LabelTarget EscString            -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only+    | LabelTooltip EscString           -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only+    | Label Label                      -- ^ /Valid for/: ENGC; /Default/: @'StrLabel' \"\N\"@ (nodes), @'StrLabel' \"\"@ (otherwise)+    | Landscape Bool                   -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'+    | LayerSep String                  -- ^ /Valid for/: G; /Default/: @\" :\t\"@+    | Layers LayerList                 -- ^ /Valid for/: G; /Default/: @\"\"@+    | Layer LayerRange                 -- ^ /Valid for/: EN; /Default/: @\"\"@+    | Layout String                    -- ^ /Valid for/: G; /Default/: @\"\"@+    | Len Double                       -- ^ /Valid for/: E; /Default/: @1.0@ (neato), @0.3@ (fdp); /Notes/: fdp, neato only+    | LevelsGap Double                 -- ^ /Valid for/: G; /Default/: @0.0@; /Notes/: neato only+    | Levels Int                       -- ^ /Valid for/: G; /Default/: @MAXINT@; /Minimum/: @0@; /Notes/: sfdp only+    | LHead String                     -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+    | LPos Point                       -- ^ /Valid for/: EGC; /Notes/: write only+    | LTail String                     -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+    | Margin DPoint                    -- ^ /Valid for/: NG; /Default/: device-dependent+    | MaxIter Int                      -- ^ /Valid for/: G; /Default/: @100 * # nodes@ (@mode == 'KK'@), @200@ (@mode == 'Major'@), @600@ (fdp); /Notes/: fdp, neato only+    | MCLimit Double                   -- ^ /Valid for/: G; /Default/: @1.0@; /Notes/: dot only+    | MinDist Double                   -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: circo only+    | MinLen Int                       -- ^ /Valid for/: E; /Default/: @1@; /Minimum/: @0@; /Notes/: dot only+    | Model Model                      -- ^ /Valid for/: G; /Default/: @'ShortPath'@; /Notes/: neato only+    | Mode ModeType                    -- ^ /Valid for/: G; /Default/: @'Major'@; /Notes/: neato only+    | Mosek Bool                       -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: neato only; requires the Mosek software+    | NodeSep Double                   -- ^ /Valid for/: G; /Default/: @0.25@; /Minimum/: @0.02@; /Notes/: dot only+    | NoJustify Bool                   -- ^ /Valid for/: GCNE; /Default/: @'False'@; /Parsing Default/: 'True'+    | Normalize Bool                   -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: not dot+    | Nslimit1 Double                  -- ^ /Valid for/: G; /Notes/: dot only+    | Nslimit Double                   -- ^ /Valid for/: G; /Notes/: dot only+    | Ordering String                  -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: dot only+    | Orientation Double               -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @360.0@+    | OutputOrder OutputMode           -- ^ /Valid for/: G; /Default/: @'BreadthFirst'@+    | OverlapScaling Double            -- ^ /Valid for/: G; /Default/: @-4@; /Minimum/: @-1.0e10@; /Notes/: prism only+    | Overlap Overlap                  -- ^ /Valid for/: G; /Default/: @'KeepOverlaps'@; /Parsing Default/: 'KeepOverlaps'; /Notes/: not dot+    | PackMode PackMode                -- ^ /Valid for/: G; /Default/: @'PackNode'@; /Notes/: not dot+    | Pack Pack                        -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'DoPack'; /Notes/: not dot+    | Pad DPoint                       -- ^ /Valid for/: G; /Default/: @'DVal' 0.0555@ (4 points)+    | PageDir PageDir                  -- ^ /Valid for/: G; /Default/: @'BL'@+    | Page Point                       -- ^ /Valid for/: G+    | PenColor Color                   -- ^ /Valid for/: C; /Default/: @X11Color 'Black'@+    | PenWidth Double                  -- ^ /Valid for/: CNE; /Default/: @1.0@; /Minimum/: @0.0@+    | Peripheries Int                  -- ^ /Valid for/: NC; /Default/: shape default (nodes), @1@ (clusters); /Minimum/: 0+    | Pin Bool                         -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: fdp, neato only+    | Pos Pos                          -- ^ /Valid for/: EN+    | QuadTree QuadType                -- ^ /Valid for/: G; /Default/: @'NormalQT'@; /Parsing Default/: 'NormalQT'; /Notes/: sfdp only+    | Quantum Double                   -- ^ /Valid for/: G; /Default/: @0.0@; /Minimum/: @0.0@+    | RankDir RankDir                  -- ^ /Valid for/: G; /Default/: @'TB'@; /Notes/: dot only+    | RankSep Double                   -- ^ /Valid for/: G; /Default/: @0.5@ (dot), @1.0@ (twopi); /Minimum/: 0.02; /Notes/: twopi, dot only+    | Rank RankType                    -- ^ /Valid for/: S; /Notes/: dot only+    | Ratio Ratios                     -- ^ /Valid for/: G+    | Rects Rect                       -- ^ /Valid for/: N; /Notes/: write only+    | Regular Bool                     -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'+    | ReMinCross Bool                  -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: dot only+    | RepulsiveForce Double            -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: sfdp only+    | Root Root                        -- ^ /Valid for/: GN; /Default/: @'NodeName' \"\"@ (graphs), @'NotCentral'@ (nodes); /Parsing Default/: 'IsCentral'; /Notes/: circo, twopi only+    | Rotate Int                       -- ^ /Valid for/: G; /Default/: @0@+    | SameHead String                  -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+    | SameTail String                  -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+    | SamplePoints Int                 -- ^ /Valid for/: N; /Default/: @8@ (output), @20@ (overlap and image maps)+    | SearchSize Int                   -- ^ /Valid for/: G; /Default/: @30@; /Notes/: dot only+    | Sep DPoint                       -- ^ /Valid for/: G; /Default/: @+4@; /Notes/: not dot+    | ShapeFile String                 -- ^ /Valid for/: N; /Default/: @\"\"@+    | Shape Shape                      -- ^ /Valid for/: N; /Default/: @'Ellipse'@+    | ShowBoxes Int                    -- ^ /Valid for/: ENG; /Default/: @0@; /Minimum/: @0@; /Notes/: dot only+    | Sides Int                        -- ^ /Valid for/: N; /Default/: @4@; /Minimum/: @0@+    | Size Point                       -- ^ /Valid for/: G+    | Skew Double                      -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-100.0@+    | Smoothing SmoothType             -- ^ /Valid for/: G; /Default/: @'NoSmooth'@; /Notes/: sfdp only+    | SortV Int                        -- ^ /Valid for/: GCN; /Default/: @0@; /Minimum/: @0@+    | Splines EdgeType                 -- ^ /Valid for/: G; /Parsing Default/: 'SplineEdges'+    | Start StartType                  -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: fdp, neato only+    | StyleSheet String                -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only+    | Style [StyleItem]                -- ^ /Valid for/: ENC+    | TailURL URL                      -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only+    | TailClip Bool                    -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'+    | TailLabel Label                  -- ^ /Valid for/: E; /Default/: @\"\"@+    | TailPort PortPos                 -- ^ /Valid for/: E; /Default/: center+    | TailTarget EscString             -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only+    | TailTooltip EscString            -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only+    | Target EscString                 -- ^ /Valid for/: ENGC; /Default/: none; /Notes/: svg, map only+    | Tooltip EscString                -- ^ /Valid for/: NEC; /Default/: @\"\"@; /Notes/: svg, cmap only+    | TrueColor Bool                   -- ^ /Valid for/: G; /Parsing Default/: 'True'; /Notes/: bitmap output only+    | Vertices [Point]                 -- ^ /Valid for/: N; /Notes/: write only+    | ViewPort ViewPort                -- ^ /Valid for/: G; /Default/: none+    | VoroMargin Double                -- ^ /Valid for/: G; /Default/: @0.05@; /Minimum/: @0.0@; /Notes/: not dot+    | Weight Double                    -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0@ (dot), @1@ (neato,fdp,sfdp)+    | Width Double                     -- ^ /Valid for/: N; /Default/: @0.75@; /Minimum/: @0.01@+    | Z Double                         -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-MAXFLOAT@, @-1000@+      deriving (Eq, Ord, Show, Read)++type Attributes = [Attribute]++instance PrintDot Attribute where+    unqtDot (Damping v)            = printField "Damping" v+    unqtDot (K v)                  = printField "K" v+    unqtDot (URL v)                = printField "URL" v+    unqtDot (ArrowHead v)          = printField "arrowhead" v+    unqtDot (ArrowSize v)          = printField "arrowsize" v+    unqtDot (ArrowTail v)          = printField "arrowtail" v+    unqtDot (Aspect v)             = printField "aspect" v+    unqtDot (Bb v)                 = printField "bb" v+    unqtDot (BgColor v)            = printField "bgcolor" v+    unqtDot (Center v)             = printField "center" v+    unqtDot (Charset v)            = printField "charset" v+    unqtDot (ClusterRank v)        = printField "clusterrank" v+    unqtDot (ColorScheme v)        = printField "colorscheme" v+    unqtDot (Color v)              = printField "color" v+    unqtDot (Comment v)            = printField "comment" v+    unqtDot (Compound v)           = printField "compound" v+    unqtDot (Concentrate v)        = printField "concentrate" v+    unqtDot (Constraint v)         = printField "constraint" v+    unqtDot (Decorate v)           = printField "decorate" v+    unqtDot (DefaultDist v)        = printField "defaultdist" v+    unqtDot (Dimen v)              = printField "dimen" v+    unqtDot (Dim v)                = printField "dim" v+    unqtDot (Dir v)                = printField "dir" v+    unqtDot (DirEdgeConstraints v) = printField "diredgeconstraints" v+    unqtDot (Distortion v)         = printField "distortion" v+    unqtDot (DPI v)                = printField "dpi" v+    unqtDot (EdgeURL v)            = printField "edgeURL" v+    unqtDot (EdgeTarget v)         = printField "edgetarget" v+    unqtDot (EdgeTooltip v)        = printField "edgetooltip" v+    unqtDot (Epsilon v)            = printField "epsilon" v+    unqtDot (ESep v)               = printField "esep" v+    unqtDot (FillColor v)          = printField "fillcolor" v+    unqtDot (FixedSize v)          = printField "fixedsize" v+    unqtDot (FontColor v)          = printField "fontcolor" v+    unqtDot (FontName v)           = printField "fontname" v+    unqtDot (FontNames v)          = printField "fontnames" v+    unqtDot (FontPath v)           = printField "fontpath" v+    unqtDot (FontSize v)           = printField "fontsize" v+    unqtDot (Group v)              = printField "group" v+    unqtDot (HeadURL v)            = printField "headURL" v+    unqtDot (HeadClip v)           = printField "headclip" v+    unqtDot (HeadLabel v)          = printField "headlabel" v+    unqtDot (HeadPort v)           = printField "headport" v+    unqtDot (HeadTarget v)         = printField "headtarget" v+    unqtDot (HeadTooltip v)        = printField "headtooltip" v+    unqtDot (Height v)             = printField "height" v+    unqtDot (ID v)                 = printField "id" v+    unqtDot (Image v)              = printField "image" v+    unqtDot (ImageScale v)         = printField "imagescale" v+    unqtDot (LabelURL v)           = printField "labelURL" v+    unqtDot (LabelAngle v)         = printField "labelangle" v+    unqtDot (LabelDistance v)      = printField "labeldistance" v+    unqtDot (LabelFloat v)         = printField "labelfloat" v+    unqtDot (LabelFontColor v)     = printField "labelfontcolor" v+    unqtDot (LabelFontName v)      = printField "labelfontname" v+    unqtDot (LabelFontSize v)      = printField "labelfontsize" v+    unqtDot (LabelJust v)          = printField "labeljust" v+    unqtDot (LabelLoc v)           = printField "labelloc" v+    unqtDot (LabelTarget v)        = printField "labeltarget" v+    unqtDot (LabelTooltip v)       = printField "labeltooltip" v+    unqtDot (Label v)              = printField "label" v+    unqtDot (Landscape v)          = printField "landscape" v+    unqtDot (LayerSep v)           = printField "layersep" v+    unqtDot (Layers v)             = printField "layers" v+    unqtDot (Layer v)              = printField "layer" v+    unqtDot (Layout v)             = printField "layout" v+    unqtDot (Len v)                = printField "len" v+    unqtDot (LevelsGap v)          = printField "levelsgap" v+    unqtDot (Levels v)             = printField "levels" v+    unqtDot (LHead v)              = printField "lhead" v+    unqtDot (LPos v)               = printField "lp" v+    unqtDot (LTail v)              = printField "ltail" v+    unqtDot (Margin v)             = printField "margin" v+    unqtDot (MaxIter v)            = printField "maxiter" v+    unqtDot (MCLimit v)            = printField "mclimit" v+    unqtDot (MinDist v)            = printField "mindist" v+    unqtDot (MinLen v)             = printField "minlen" v+    unqtDot (Model v)              = printField "model" v+    unqtDot (Mode v)               = printField "mode" v+    unqtDot (Mosek v)              = printField "mosek" v+    unqtDot (NodeSep v)            = printField "nodesep" v+    unqtDot (NoJustify v)          = printField "nojustify" v+    unqtDot (Normalize v)          = printField "normalize" v+    unqtDot (Nslimit1 v)           = printField "nslimit1" v+    unqtDot (Nslimit v)            = printField "nslimit" v+    unqtDot (Ordering v)           = printField "ordering" v+    unqtDot (Orientation v)        = printField "orientation" v+    unqtDot (OutputOrder v)        = printField "outputorder" v+    unqtDot (OverlapScaling v)     = printField "overlap_scaling" v+    unqtDot (Overlap v)            = printField "overlap" v+    unqtDot (PackMode v)           = printField "packmode" v+    unqtDot (Pack v)               = printField "pack" v+    unqtDot (Pad v)                = printField "pad" v+    unqtDot (PageDir v)            = printField "pagedir" v+    unqtDot (Page v)               = printField "page" v+    unqtDot (PenColor v)           = printField "pencolor" v+    unqtDot (PenWidth v)           = printField "penwidth" v+    unqtDot (Peripheries v)        = printField "peripheries" v+    unqtDot (Pin v)                = printField "pin" v+    unqtDot (Pos v)                = printField "pos" v+    unqtDot (QuadTree v)           = printField "quadtree" v+    unqtDot (Quantum v)            = printField "quantum" v+    unqtDot (RankDir v)            = printField "rankdir" v+    unqtDot (RankSep v)            = printField "ranksep" v+    unqtDot (Rank v)               = printField "rank" v+    unqtDot (Ratio v)              = printField "ratio" v+    unqtDot (Rects v)              = printField "rects" v+    unqtDot (Regular v)            = printField "regular" v+    unqtDot (ReMinCross v)         = printField "remincross" v+    unqtDot (RepulsiveForce v)     = printField "repulsiveforce" v+    unqtDot (Root v)               = printField "root" v+    unqtDot (Rotate v)             = printField "rotate" v+    unqtDot (SameHead v)           = printField "samehead" v+    unqtDot (SameTail v)           = printField "sametail" v+    unqtDot (SamplePoints v)       = printField "samplepoints" v+    unqtDot (SearchSize v)         = printField "searchsize" v+    unqtDot (Sep v)                = printField "sep" v+    unqtDot (ShapeFile v)          = printField "shapefile" v+    unqtDot (Shape v)              = printField "shape" v+    unqtDot (ShowBoxes v)          = printField "showboxes" v+    unqtDot (Sides v)              = printField "sides" v+    unqtDot (Size v)               = printField "size" v+    unqtDot (Skew v)               = printField "skew" v+    unqtDot (Smoothing v)          = printField "smoothing" v+    unqtDot (SortV v)              = printField "sortv" v+    unqtDot (Splines v)            = printField "splines" v+    unqtDot (Start v)              = printField "start" v+    unqtDot (StyleSheet v)         = printField "stylesheet" v+    unqtDot (Style v)              = printField "style" v+    unqtDot (TailURL v)            = printField "tailURL" v+    unqtDot (TailClip v)           = printField "tailclip" v+    unqtDot (TailLabel v)          = printField "taillabel" v+    unqtDot (TailPort v)           = printField "tailport" v+    unqtDot (TailTarget v)         = printField "tailtarget" v+    unqtDot (TailTooltip v)        = printField "tailtooltip" v+    unqtDot (Target v)             = printField "target" v+    unqtDot (Tooltip v)            = printField "tooltip" v+    unqtDot (TrueColor v)          = printField "truecolor" v+    unqtDot (Vertices v)           = printField "vertices" v+    unqtDot (ViewPort v)           = printField "viewport" v+    unqtDot (VoroMargin v)         = printField "voro_margin" v+    unqtDot (Weight v)             = printField "weight" v+    unqtDot (Width v)              = printField "width" v+    unqtDot (Z v)                  = printField "z" v++    listToDot = unqtListToDot++instance ParseDot Attribute where+    parseUnqt = oneOf [ liftM Damping            $ parseField "Damping"+                      , liftM K                  $ parseField "K"+                      , liftM URL                $ parseFields ["URL", "href"]+                      , liftM ArrowHead          $ parseField "arrowhead"+                      , liftM ArrowSize          $ parseField "arrowsize"+                      , liftM ArrowTail          $ parseField "arrowtail"+                      , liftM Aspect             $ parseField "aspect"+                      , liftM Bb                 $ parseField "bb"+                      , liftM BgColor            $ parseField "bgcolor"+                      , liftM Center             $ parseFieldBool "center"+                      , liftM Charset            $ parseField "charset"+                      , liftM ClusterRank        $ parseField "clusterrank"+                      , liftM ColorScheme        $ parseField "colorscheme"+                      , liftM Color              $ parseField "color"+                      , liftM Comment            $ parseField "comment"+                      , liftM Compound           $ parseFieldBool "compound"+                      , liftM Concentrate        $ parseFieldBool "concentrate"+                      , liftM Constraint         $ parseFieldBool "constraint"+                      , liftM Decorate           $ parseFieldBool "decorate"+                      , liftM DefaultDist        $ parseField "defaultdist"+                      , liftM Dimen              $ parseField "dimen"+                      , liftM Dim                $ parseField "dim"+                      , liftM Dir                $ parseField "dir"+                      , liftM DirEdgeConstraints $ parseFieldDef EdgeConstraints "diredgeconstraints"+                      , liftM Distortion         $ parseField "distortion"+                      , liftM DPI                $ parseFields ["dpi", "resolution"]+                      , liftM EdgeURL            $ parseFields ["edgeURL", "edgehref"]+                      , liftM EdgeTarget         $ parseField "edgetarget"+                      , liftM EdgeTooltip        $ parseField "edgetooltip"+                      , liftM Epsilon            $ parseField "epsilon"+                      , liftM ESep               $ parseField "esep"+                      , liftM FillColor          $ parseField "fillcolor"+                      , liftM FixedSize          $ parseFieldBool "fixedsize"+                      , liftM FontColor          $ parseField "fontcolor"+                      , liftM FontName           $ parseField "fontname"+                      , liftM FontNames          $ parseField "fontnames"+                      , liftM FontPath           $ parseField "fontpath"+                      , liftM FontSize           $ parseField "fontsize"+                      , liftM Group              $ parseField "group"+                      , liftM HeadURL            $ parseFields ["headURL", "headhref"]+                      , liftM HeadClip           $ parseFieldBool "headclip"+                      , liftM HeadLabel          $ parseField "headlabel"+                      , liftM HeadPort           $ parseField "headport"+                      , liftM HeadTarget         $ parseField "headtarget"+                      , liftM HeadTooltip        $ parseField "headtooltip"+                      , liftM Height             $ parseField "height"+                      , liftM ID                 $ parseField "id"+                      , liftM Image              $ parseField "image"+                      , liftM ImageScale         $ parseFieldDef UniformScale "imagescale"+                      , liftM LabelURL           $ parseFields ["labelURL", "labelhref"]+                      , liftM LabelAngle         $ parseField "labelangle"+                      , liftM LabelDistance      $ parseField "labeldistance"+                      , liftM LabelFloat         $ parseFieldBool "labelfloat"+                      , liftM LabelFontColor     $ parseField "labelfontcolor"+                      , liftM LabelFontName      $ parseField "labelfontname"+                      , liftM LabelFontSize      $ parseField "labelfontsize"+                      , liftM LabelJust          $ parseField "labeljust"+                      , liftM LabelLoc           $ parseField "labelloc"+                      , liftM LabelTarget        $ parseField "labeltarget"+                      , liftM LabelTooltip       $ parseField "labeltooltip"+                      , liftM Label              $ parseField "label"+                      , liftM Landscape          $ parseFieldBool "landscape"+                      , liftM LayerSep           $ parseField "layersep"+                      , liftM Layers             $ parseField "layers"+                      , liftM Layer              $ parseField "layer"+                      , liftM Layout             $ parseField "layout"+                      , liftM Len                $ parseField "len"+                      , liftM LevelsGap          $ parseField "levelsgap"+                      , liftM Levels             $ parseField "levels"+                      , liftM LHead              $ parseField "lhead"+                      , liftM LPos               $ parseField "lp"+                      , liftM LTail              $ parseField "ltail"+                      , liftM Margin             $ parseField "margin"+                      , liftM MaxIter            $ parseField "maxiter"+                      , liftM MCLimit            $ parseField "mclimit"+                      , liftM MinDist            $ parseField "mindist"+                      , liftM MinLen             $ parseField "minlen"+                      , liftM Model              $ parseField "model"+                      , liftM Mode               $ parseField "mode"+                      , liftM Mosek              $ parseFieldBool "mosek"+                      , liftM NodeSep            $ parseField "nodesep"+                      , liftM NoJustify          $ parseFieldBool "nojustify"+                      , liftM Normalize          $ parseFieldBool "normalize"+                      , liftM Nslimit1           $ parseField "nslimit1"+                      , liftM Nslimit            $ parseField "nslimit"+                      , liftM Ordering           $ parseField "ordering"+                      , liftM Orientation        $ parseField "orientation"+                      , liftM OutputOrder        $ parseField "outputorder"+                      , liftM OverlapScaling     $ parseField "overlap_scaling"+                      , liftM Overlap            $ parseFieldDef KeepOverlaps "overlap"+                      , liftM PackMode           $ parseField "packmode"+                      , liftM Pack               $ parseFieldDef DoPack "pack"+                      , liftM Pad                $ parseField "pad"+                      , liftM PageDir            $ parseField "pagedir"+                      , liftM Page               $ parseField "page"+                      , liftM PenColor           $ parseField "pencolor"+                      , liftM PenWidth           $ parseField "penwidth"+                      , liftM Peripheries        $ parseField "peripheries"+                      , liftM Pin                $ parseFieldBool "pin"+                      , liftM Pos                $ parseField "pos"+                      , liftM QuadTree           $ parseFieldDef NormalQT "quadtree"+                      , liftM Quantum            $ parseField "quantum"+                      , liftM RankDir            $ parseField "rankdir"+                      , liftM RankSep            $ parseField "ranksep"+                      , liftM Rank               $ parseField "rank"+                      , liftM Ratio              $ parseField "ratio"+                      , liftM Rects              $ parseField "rects"+                      , liftM Regular            $ parseFieldBool "regular"+                      , liftM ReMinCross         $ parseFieldBool "remincross"+                      , liftM RepulsiveForce     $ parseField "repulsiveforce"+                      , liftM Root               $ parseFieldDef IsCentral "root"+                      , liftM Rotate             $ parseField "rotate"+                      , liftM SameHead           $ parseField "samehead"+                      , liftM SameTail           $ parseField "sametail"+                      , liftM SamplePoints       $ parseField "samplepoints"+                      , liftM SearchSize         $ parseField "searchsize"+                      , liftM Sep                $ parseField "sep"+                      , liftM ShapeFile          $ parseField "shapefile"+                      , liftM Shape              $ parseField "shape"+                      , liftM ShowBoxes          $ parseField "showboxes"+                      , liftM Sides              $ parseField "sides"+                      , liftM Size               $ parseField "size"+                      , liftM Skew               $ parseField "skew"+                      , liftM Smoothing          $ parseField "smoothing"+                      , liftM SortV              $ parseField "sortv"+                      , liftM Splines            $ parseFieldDef SplineEdges "splines"+                      , liftM Start              $ parseField "start"+                      , liftM StyleSheet         $ parseField "stylesheet"+                      , liftM Style              $ parseField "style"+                      , liftM TailURL            $ parseFields ["tailURL", "tailhref"]+                      , liftM TailClip           $ parseFieldBool "tailclip"+                      , liftM TailLabel          $ parseField "taillabel"+                      , liftM TailPort           $ parseField "tailport"+                      , liftM TailTarget         $ parseField "tailtarget"+                      , liftM TailTooltip        $ parseField "tailtooltip"+                      , liftM Target             $ parseField "target"+                      , liftM Tooltip            $ parseField "tooltip"+                      , liftM TrueColor          $ parseFieldBool "truecolor"+                      , liftM Vertices           $ parseField "vertices"+                      , liftM ViewPort           $ parseField "viewport"+                      , liftM VoroMargin         $ parseField "voro_margin"+                      , liftM Weight             $ parseField "weight"+                      , liftM Width              $ parseField "width"+                      , liftM Z                  $ parseField "z"+                      ]++    parse = parseUnqt++    parseList = parseUnqtList++-- | Determine if this Attribute is valid for use with Graphs.+usedByGraphs                      :: Attribute -> Bool+usedByGraphs Damping{}            = True+usedByGraphs K{}                  = True+usedByGraphs URL{}                = True+usedByGraphs Aspect{}             = True+usedByGraphs Bb{}                 = True+usedByGraphs BgColor{}            = True+usedByGraphs Center{}             = True+usedByGraphs Charset{}            = True+usedByGraphs ClusterRank{}        = True+usedByGraphs ColorScheme{}        = True+usedByGraphs Comment{}            = True+usedByGraphs Compound{}           = True+usedByGraphs Concentrate{}        = True+usedByGraphs DefaultDist{}        = True+usedByGraphs Dimen{}              = True+usedByGraphs Dim{}                = True+usedByGraphs DirEdgeConstraints{} = True+usedByGraphs DPI{}                = True+usedByGraphs Epsilon{}            = True+usedByGraphs ESep{}               = True+usedByGraphs FontColor{}          = True+usedByGraphs FontName{}           = True+usedByGraphs FontNames{}          = True+usedByGraphs FontPath{}           = True+usedByGraphs FontSize{}           = True+usedByGraphs ID{}                 = True+usedByGraphs LabelJust{}          = True+usedByGraphs LabelLoc{}           = True+usedByGraphs Label{}              = True+usedByGraphs Landscape{}          = True+usedByGraphs LayerSep{}           = True+usedByGraphs Layers{}             = True+usedByGraphs Layout{}             = True+usedByGraphs LevelsGap{}          = True+usedByGraphs Levels{}             = True+usedByGraphs LPos{}               = True+usedByGraphs Margin{}             = True+usedByGraphs MaxIter{}            = True+usedByGraphs MCLimit{}            = True+usedByGraphs MinDist{}            = True+usedByGraphs Model{}              = True+usedByGraphs Mode{}               = True+usedByGraphs Mosek{}              = True+usedByGraphs NodeSep{}            = True+usedByGraphs NoJustify{}          = True+usedByGraphs Normalize{}          = True+usedByGraphs Nslimit1{}           = True+usedByGraphs Nslimit{}            = True+usedByGraphs Ordering{}           = True+usedByGraphs OutputOrder{}        = True+usedByGraphs OverlapScaling{}     = True+usedByGraphs Overlap{}            = True+usedByGraphs PackMode{}           = True+usedByGraphs Pack{}               = True+usedByGraphs Pad{}                = True+usedByGraphs PageDir{}            = True+usedByGraphs Page{}               = True+usedByGraphs QuadTree{}           = True+usedByGraphs Quantum{}            = True+usedByGraphs RankDir{}            = True+usedByGraphs RankSep{}            = True+usedByGraphs Ratio{}              = True+usedByGraphs ReMinCross{}         = True+usedByGraphs RepulsiveForce{}     = True+usedByGraphs Root{}               = True+usedByGraphs Rotate{}             = True+usedByGraphs SearchSize{}         = True+usedByGraphs Sep{}                = True+usedByGraphs ShowBoxes{}          = True+usedByGraphs Size{}               = True+usedByGraphs Smoothing{}          = True+usedByGraphs SortV{}              = True+usedByGraphs Splines{}            = True+usedByGraphs Start{}              = True+usedByGraphs StyleSheet{}         = True+usedByGraphs Target{}             = True+usedByGraphs TrueColor{}          = True+usedByGraphs ViewPort{}           = True+usedByGraphs VoroMargin{}         = True+usedByGraphs _                    = False++-- | Determine if this Attribute is valid for use with Clusters.+usedByClusters               :: Attribute -> Bool+usedByClusters K{}           = True+usedByClusters URL{}         = True+usedByClusters BgColor{}     = True+usedByClusters ColorScheme{} = True+usedByClusters Color{}       = True+usedByClusters FillColor{}   = True+usedByClusters FontColor{}   = True+usedByClusters FontName{}    = True+usedByClusters FontSize{}    = True+usedByClusters LabelJust{}   = True+usedByClusters LabelLoc{}    = True+usedByClusters Label{}       = True+usedByClusters LPos{}        = True+usedByClusters NoJustify{}   = True+usedByClusters PenColor{}    = True+usedByClusters PenWidth{}    = True+usedByClusters Peripheries{} = True+usedByClusters Rank{}        = True+usedByClusters SortV{}       = True+usedByClusters Style{}       = True+usedByClusters Target{}      = True+usedByClusters Tooltip{}     = True+usedByClusters _             = False++-- | Determine if this Attribute is valid for use with SubGraphs.+usedBySubGraphs        :: Attribute -> Bool+usedBySubGraphs Rank{} = True+usedBySubGraphs _      = False++-- | Determine if this Attribute is valid for use with Nodes.+usedByNodes                :: Attribute -> Bool+usedByNodes URL{}          = True+usedByNodes ColorScheme{}  = True+usedByNodes Color{}        = True+usedByNodes Comment{}      = True+usedByNodes Distortion{}   = True+usedByNodes FillColor{}    = True+usedByNodes FixedSize{}    = True+usedByNodes FontColor{}    = True+usedByNodes FontName{}     = True+usedByNodes FontSize{}     = True+usedByNodes Group{}        = True+usedByNodes Height{}       = True+usedByNodes ID{}           = True+usedByNodes Image{}        = True+usedByNodes ImageScale{}   = True+usedByNodes LabelLoc{}     = True+usedByNodes Label{}        = True+usedByNodes Layer{}        = True+usedByNodes Margin{}       = True+usedByNodes NoJustify{}    = True+usedByNodes Orientation{}  = True+usedByNodes PenWidth{}     = True+usedByNodes Peripheries{}  = True+usedByNodes Pin{}          = True+usedByNodes Pos{}          = True+usedByNodes Rects{}        = True+usedByNodes Regular{}      = True+usedByNodes Root{}         = True+usedByNodes SamplePoints{} = True+usedByNodes ShapeFile{}    = True+usedByNodes Shape{}        = True+usedByNodes ShowBoxes{}    = True+usedByNodes Sides{}        = True+usedByNodes Skew{}         = True+usedByNodes SortV{}        = True+usedByNodes Style{}        = True+usedByNodes Target{}       = True+usedByNodes Tooltip{}      = True+usedByNodes Vertices{}     = True+usedByNodes Width{}        = True+usedByNodes Z{}            = True+usedByNodes _              = False++-- | Determine if this Attribute is valid for use with Edges.+usedByEdges                  :: Attribute -> Bool+usedByEdges URL{}            = True+usedByEdges ArrowHead{}      = True+usedByEdges ArrowSize{}      = True+usedByEdges ArrowTail{}      = True+usedByEdges ColorScheme{}    = True+usedByEdges Color{}          = True+usedByEdges Comment{}        = True+usedByEdges Constraint{}     = True+usedByEdges Decorate{}       = True+usedByEdges Dir{}            = True+usedByEdges EdgeURL{}        = True+usedByEdges EdgeTarget{}     = True+usedByEdges EdgeTooltip{}    = True+usedByEdges FontColor{}      = True+usedByEdges FontName{}       = True+usedByEdges FontSize{}       = True+usedByEdges HeadURL{}        = True+usedByEdges HeadClip{}       = True+usedByEdges HeadLabel{}      = True+usedByEdges HeadPort{}       = True+usedByEdges HeadTarget{}     = True+usedByEdges HeadTooltip{}    = True+usedByEdges ID{}             = True+usedByEdges LabelURL{}       = True+usedByEdges LabelAngle{}     = True+usedByEdges LabelDistance{}  = True+usedByEdges LabelFloat{}     = True+usedByEdges LabelFontColor{} = True+usedByEdges LabelFontName{}  = True+usedByEdges LabelFontSize{}  = True+usedByEdges LabelTarget{}    = True+usedByEdges LabelTooltip{}   = True+usedByEdges Label{}          = True+usedByEdges Layer{}          = True+usedByEdges Len{}            = True+usedByEdges LHead{}          = True+usedByEdges LPos{}           = True+usedByEdges LTail{}          = True+usedByEdges MinLen{}         = True+usedByEdges NoJustify{}      = True+usedByEdges PenWidth{}       = True+usedByEdges Pos{}            = True+usedByEdges SameHead{}       = True+usedByEdges SameTail{}       = True+usedByEdges ShowBoxes{}      = True+usedByEdges Style{}          = True+usedByEdges TailURL{}        = True+usedByEdges TailClip{}       = True+usedByEdges TailLabel{}      = True+usedByEdges TailPort{}       = True+usedByEdges TailTarget{}     = True+usedByEdges TailTooltip{}    = True+usedByEdges Target{}         = True+usedByEdges Tooltip{}        = True+usedByEdges Weight{}         = True+usedByEdges _                = False++{- Delete to here -}+-- -----------------------------------------------------------------------------++{- |++   Some 'Attribute's (mainly label-like ones) take a 'String' argument+   that allows for extra escape codes.  This library doesn't do any+   extra checks or special parsing for these escape codes, but usage+   of 'EscString' rather than 'String' indicates that the Graphviz+   tools will recognise these extra escape codes for these+   'Attribute's.++   The extra escape codes include (note that these are all 'String's):++     [@\\N@] Replace with the name of the node (for Node 'Attribute's).++     [@\\G@] Replace with the name of the graph (for Node 'Attribute's)+             or the name of the graph or cluster, whichever is+             applicable (for Graph, Cluster and Edge 'Attribute's).++     [@\\E@] Replace with the name of the edge, formed by the two+             adjoining nodes and the edge type (for Edge 'Attribute's).++     [@\\T@] Replace with the name of the tail node (for Edge+             'Attribute's).++     [@\\H@] Replace with the name of the head node (for Edge+             'Attribute's).++     [@\\L@] Replace with the object's label (for all 'Attribute's).++   Also, if the 'Attribute' in question is 'Label', 'HeadLabel' or+   'TailLabel', then @\\n@, @\\l@ and @\\r@ split the label into lines+   centered, left-justified and right-justified respectively.++ -}+type EscString = String++-- -----------------------------------------------------------------------------++-- | No checks are placed on the content of a 'URL' value; however,+--   you should ensure that it does not contain any \'@>@\' or \'@<@\'+--   characters; Graphviz might care about escaping other characters+--   properly, but for the purposes of this library the presence of+--   these characters will make it harder to parse URLs.+newtype URL = UStr { urlString :: EscString }+    deriving (Eq, Ord, Show, Read)++instance PrintDot URL where+    unqtDot = wrap (char '<') (char '>')+              -- Explicitly use text here... no quotes!+              . text . urlString++instance ParseDot URL where+    parseUnqt = liftM UStr+                $ bracket (character open)+                          (character close)+                          (many1 $ satisfy ((/=) close))+        where+          open = '<'+          close = '>'++    -- No quotes+    parse = parseUnqt++-- -----------------------------------------------------------------------------++-- | /Dot/ has a basic grammar of arrow shapes which allows usage of+--   up to 1,544,761 different shapes from 9 different basic+--   'ArrowShape's.  Note that whilst an explicit list is used in the+--   definition of 'ArrowType', there must be at least one tuple and a+--   maximum of 4 (since that is what is required by Dot).  For more+--   information, see: <http://graphviz.org/doc/info/arrows.html>+--+--   The 19 basic arrows shown on the overall attributes page have+--   been defined below as a convenience.  Parsing of the 5+--   backward-compatible special cases is also supported.+newtype ArrowType = AType [(ArrowModifier, ArrowShape)]+    deriving (Eq, Ord, Show, Read)++box, crow, diamond, dotArrow, inv, noArrow, normal, tee, vee :: ArrowType+oDot, invDot, invODot, oBox, oDiamond :: ArrowType+eDiamond, openArr, halfOpen, emptyArr, invEmpty :: ArrowType++normal = AType [(noMods, Normal)]+inv = AType [(noMods, Inv)]+dotArrow = AType [(noMods, DotArrow)]+invDot = AType [ (noMods, Inv)+               , (noMods, DotArrow)]+oDot = AType [(ArrMod OpenArrow BothSides, DotArrow)]+invODot = AType [ (noMods, Inv)+                , (openMod, DotArrow)]+noArrow = AType [(noMods, NoArrow)]+tee = AType [(noMods, Tee)]+emptyArr = AType [(openMod, Normal)]+invEmpty = AType [ (noMods, Inv)+                 , (openMod, Normal)]+diamond = AType [(noMods, Diamond)]+oDiamond = AType [(openMod, Diamond)]+eDiamond = oDiamond+crow = AType [(noMods, Crow)]+box = AType [(noMods, Box)]+oBox = AType [(openMod, Box)]+openArr = vee+halfOpen = AType [(ArrMod FilledArrow LeftSide, Vee)]+vee = AType [(noMods, Vee)]++instance PrintDot ArrowType where+    unqtDot (AType mas) = hcat $ map appMod mas+        where+          appMod (m, a) = unqtDot m <> unqtDot a++instance ParseDot ArrowType where+    parseUnqt = do mas <- many1 $ do m <- parseUnqt+                                     a <- parseUnqt+                                     return (m,a)+                   return $ AType mas+                `onFail`+                specialArrowParse++specialArrowParse :: Parse ArrowType+specialArrowParse = oneOf [ stringRep eDiamond "ediamond"+                          , stringRep openArr "open"+                          , stringRep halfOpen "halfopen"+                          , stringRep emptyArr "empty"+                          , stringRep invEmpty "invempty"+                          ]++data ArrowShape = Box+                | Crow+                | Diamond+                | DotArrow+                | Inv+                | NoArrow+                | Normal+                | Tee+                | Vee+                  deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowShape where+    unqtDot Box      = unqtDot "box"+    unqtDot Crow     = unqtDot "crow"+    unqtDot Diamond  = unqtDot "diamond"+    unqtDot DotArrow = unqtDot "dot"+    unqtDot Inv      = unqtDot "inv"+    unqtDot NoArrow  = unqtDot "none"+    unqtDot Normal   = unqtDot "normal"+    unqtDot Tee      = unqtDot "tee"+    unqtDot Vee      = unqtDot "vee"++instance ParseDot ArrowShape where+    parseUnqt = oneOf [ stringRep Box "box"+                      , stringRep Crow "crow"+                      , stringRep Diamond "diamond"+                      , stringRep DotArrow "dot"+                      , stringRep Inv "inv"+                      , stringRep NoArrow "none"+                      , stringRep Normal "normal"+                      , stringRep Tee "tee"+                      , stringRep Vee "vee"+                      ]++-- | What modifications to apply to an 'ArrowShape'.+data ArrowModifier = ArrMod { arrowFill :: ArrowFill+                            , arrowSide :: ArrowSide+                            }+                     deriving (Eq, Ord, Show, Read)++-- | Apply no modifications to an 'ArrowShape'.+noMods :: ArrowModifier+noMods = ArrMod FilledArrow BothSides++-- | 'OpenArrow' and 'BothSides'+openMod :: ArrowModifier+openMod = ArrMod OpenArrow BothSides++instance PrintDot ArrowModifier where+    unqtDot (ArrMod f s) = unqtDot f <> unqtDot s++instance ParseDot ArrowModifier where+    parseUnqt = do f <- parseUnqt+                   s <- parseUnqt+                   return $ ArrMod f s++data ArrowFill = OpenArrow+               | FilledArrow+                 deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowFill where+    unqtDot OpenArrow   = char 'o'+    unqtDot FilledArrow = empty++instance ParseDot ArrowFill where+    parseUnqt = liftM (bool FilledArrow OpenArrow . isJust)+                $ optional (character 'o')++    -- Not used individually+    parse = parseUnqt++-- | Represents which side (when looking towards the node the arrow is+--   pointing to) is drawn.+data ArrowSide = LeftSide+               | RightSide+               | BothSides+                 deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowSide where+    unqtDot LeftSide  = char 'l'+    unqtDot RightSide = char 'r'+    unqtDot BothSides = empty++instance ParseDot ArrowSide where+    parseUnqt = liftM getSideType+                $ optional (oneOf $ map character ['l', 'r'])+        where+          getSideType = maybe BothSides+                              (bool RightSide LeftSide . (==) 'l')++    -- Not used individually+    parse = parseUnqt++-- -----------------------------------------------------------------------------++data AspectType = RatioOnly Double+                | RatioPassCount Double Int+                  deriving (Eq, Ord, Show, Read)++instance PrintDot AspectType where+    unqtDot (RatioOnly r)        = unqtDot r+    unqtDot (RatioPassCount r p) = commaDel r p++    toDot at@RatioOnly{}      = unqtDot at+    toDot at@RatioPassCount{} = doubleQuotes $ unqtDot at++instance ParseDot AspectType where+    parseUnqt = liftM (uncurry RatioPassCount) commaSepUnqt+                `onFail`+                liftM RatioOnly parseUnqt+++    parse = quotedParse (liftM (uncurry RatioPassCount) commaSepUnqt)+            `onFail`+            liftM RatioOnly parse++-- -----------------------------------------------------------------------------++data Rect = Rect Point Point+            deriving (Eq, Ord, Show, Read)++instance PrintDot Rect where+    unqtDot (Rect p1 p2) = commaDel p1 p2++    toDot = doubleQuotes . unqtDot++instance ParseDot Rect where+    parseUnqt = liftM (uncurry Rect) commaSepUnqt++    parse = quotedParse parseUnqt++-- -----------------------------------------------------------------------------++data ClusterMode = Local+                 | Global+                 | NoCluster+                   deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ClusterMode where+    unqtDot Local     = unqtDot "local"+    unqtDot Global    = unqtDot "global"+    unqtDot NoCluster = unqtDot "none"++++instance ParseDot ClusterMode where+    parseUnqt = oneOf [ stringRep Local "local"+                      , stringRep Global "global"+                      , stringRep NoCluster "none"+                      ]++-- -----------------------------------------------------------------------------++data DirType = Forward | Back | Both | NoDir+               deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot DirType where+    unqtDot Forward = unqtDot "forward"+    unqtDot Back    = unqtDot "back"+    unqtDot Both    = unqtDot "both"+    unqtDot NoDir   = unqtDot "none"++instance ParseDot DirType where+    parseUnqt = oneOf [ stringRep Forward "forward"+                      , stringRep Back "back"+                      , stringRep Both "both"+                      , stringRep NoDir "none"+                      ]++-- -----------------------------------------------------------------------------++-- | Only when @mode == 'IpSep'@.+data DEConstraints = EdgeConstraints+                   | NoConstraints+                   | HierConstraints+                     deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot DEConstraints where+    unqtDot EdgeConstraints = unqtDot True+    unqtDot NoConstraints   = unqtDot False+    unqtDot HierConstraints = text "hier"++instance ParseDot DEConstraints where+    parseUnqt = liftM (bool NoConstraints EdgeConstraints) parse+                `onFail`+                stringRep HierConstraints "hier"++-- -----------------------------------------------------------------------------++-- | Either a 'Double' or a 'Point'.+data DPoint = DVal Double+            | PVal Point+             deriving (Eq, Ord, Show, Read)++instance PrintDot DPoint where+    unqtDot (DVal d) = unqtDot d+    unqtDot (PVal p) = unqtDot p++    toDot (DVal d) = toDot d+    toDot (PVal p) = toDot p++instance ParseDot DPoint where+    parseUnqt = liftM PVal parseUnqt+                `onFail`+                liftM DVal parseUnqt++    parse = liftM PVal parse+            `onFail`+            liftM DVal parse++-- -----------------------------------------------------------------------------++data ModeType = Major+              | KK+              | Hier+              | IpSep+                deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ModeType where+    unqtDot Major = text "major"+    unqtDot KK    = text "KK"+    unqtDot Hier  = text "hier"+    unqtDot IpSep = text "ipsep"++instance ParseDot ModeType where+    parseUnqt = oneOf [ stringRep Major "major"+                      , stringRep KK "KK"+                      , stringRep Hier "hier"+                      , stringRep IpSep "ipsep"+                      ]++-- -----------------------------------------------------------------------------++data Model = ShortPath+           | SubSet+           | Circuit+             deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Model where+    unqtDot ShortPath = text "shortpath"+    unqtDot SubSet    = text "subset"+    unqtDot Circuit   = text "circuit"++instance ParseDot Model where+    parseUnqt = oneOf [ stringRep ShortPath "shortpath"+                      , stringRep SubSet "subset"+                      , stringRep Circuit "circuit"+                      ]++-- -----------------------------------------------------------------------------++data Label = StrLabel EscString+           | URLLabel URL+             deriving (Eq, Ord, Show, Read)++instance PrintDot Label where+    unqtDot (StrLabel s) = unqtDot s+    unqtDot (URLLabel u) = unqtDot u++    toDot (StrLabel s) = toDot s+    toDot (URLLabel u) = toDot u++instance ParseDot Label where+    parseUnqt = liftM StrLabel parseUnqt+                `onFail`+                liftM URLLabel parseUnqt++    parse = liftM StrLabel parse+            `onFail`+            liftM URLLabel parse++-- -----------------------------------------------------------------------------++data Point = Point Int Int+           | PointD Double Double+             deriving (Eq, Ord, Show, Read)++instance PrintDot Point where+    unqtDot (Point  x y) = commaDel x y+    unqtDot (PointD x y) = commaDel x y++    toDot = doubleQuotes . unqtDot++    unqtListToDot = hsep . map unqtDot++    listToDot = doubleQuotes . unqtListToDot++instance ParseDot Point where+    -- Need to take into account the situation where first value is an+    -- integer, second a double: if Point parsing first, then it won't+    -- parse the second number properly; but if PointD first then it+    -- will treat Int/Int as Double/Double.+    parseUnqt = intDblPoint+                `onFail`+                liftM (uncurry Point)  commaSepUnqt+                `onFail`+                liftM (uncurry PointD) commaSepUnqt+        where+          intDblPoint = liftM (uncurry PointD . first fI)+                        $ commaSep' parseUnqt parseStrictFloat+          fI :: Int -> Double+          fI = fromIntegral++    parse = quotedParse parseUnqt++    parseUnqtList = sepBy1 parseUnqt whitespace++-- -----------------------------------------------------------------------------++data Overlap = KeepOverlaps+             | RemoveOverlaps+             | ScaleOverlaps+             | ScaleXYOverlaps+             | PrismOverlap (Maybe Int) -- ^ Only when sfdp is available, 'Int' is non-negative+             | CompressOverlap+             | VpscOverlap+             | IpsepOverlap -- ^ Only when @mode == 'IpSep'@+               deriving (Eq, Ord, Show, Read)++instance PrintDot Overlap where+    unqtDot KeepOverlaps     = unqtDot True+    unqtDot RemoveOverlaps   = unqtDot False+    unqtDot ScaleOverlaps    = text "scale"+    unqtDot ScaleXYOverlaps  = text "scalexy"+    unqtDot (PrismOverlap i) = maybe id (flip (<>) . unqtDot) i $ text "prism"+    unqtDot CompressOverlap  = text "compress"+    unqtDot VpscOverlap      = text "vpsc"+    unqtDot IpsepOverlap     = text "ipsep"++instance ParseDot Overlap where+    parseUnqt = oneOf [ stringRep KeepOverlaps "true"+                      , stringRep RemoveOverlaps "false"+                      , stringRep ScaleXYOverlaps "scalexy"+                      , stringRep ScaleOverlaps "scale"+                      , string "prism" >> liftM PrismOverlap (optional parse)+                      , stringRep CompressOverlap "compress"+                      , stringRep VpscOverlap "vpsc"+                      , stringRep IpsepOverlap "ipsep"+                      ]++-- -----------------------------------------------------------------------------++data LayerRange = LRID LayerID+                | LRS LayerID String LayerID+                  deriving (Eq, Ord, Show, Read)++instance PrintDot LayerRange where+    unqtDot (LRID lid)      = unqtDot lid+    unqtDot (LRS id1 s id2) = unqtDot id1 <> unqtDot s <> unqtDot id2++    toDot (LRID lid) = toDot lid+    toDot lrs        = doubleQuotes $ unqtDot lrs++instance ParseDot LayerRange where+    parseUnqt = do id1 <- parseUnqt+                   s   <- parseLayerSep+                   id2 <- parseUnqt+                   return $ LRS id1 s id2+                `onFail`+                liftM LRID parseUnqt+++    parse = quotedParse ( do id1 <- parseUnqt+                             s   <- parseLayerSep+                             id2 <- parseUnqt+                             return $ LRS id1 s id2+                        )+            `onFail`+            liftM LRID parse++parseLayerSep :: Parse String+parseLayerSep = many1 . oneOf+                $ map character defLayerSep++defLayerSep :: [Char]+defLayerSep = [' ', ':', '\t']++parseLayerName :: Parse String+parseLayerName = many1 . orQuote+                 $ satisfy (liftM2 (&&) notLayerSep ((/=) quoteChar))++parseLayerName' :: Parse String+parseLayerName' = stringBlock+                  `onFail`+                  quotedParse parseLayerName++notLayerSep :: Char -> Bool+notLayerSep = flip notElem defLayerSep++-- | You should not have any quote characters for the 'LRName' option,+--   as it won't be parseable.+data LayerID = AllLayers+             | LRInt Int+             | LRName String+               deriving (Eq, Ord, Show, Read)++instance PrintDot LayerID where+    unqtDot AllLayers   = text "all"+    unqtDot (LRInt n)   = unqtDot n+    unqtDot (LRName nm) = unqtDot nm++    toDot (LRName nm) = toDot nm+    -- Other two don't need quotes+    toDot li          = unqtDot li++instance ParseDot LayerID where+    parseUnqt = liftM checkLayerName parseLayerName -- tests for Int and All++    parse = oneOf [ liftM checkLayerName parseLayerName'+                  , liftM LRInt parse -- Mainly for unquoted case.+                  ]++checkLayerName     :: String -> LayerID+checkLayerName str = maybe checkAll LRInt $ stringToInt str+  where+    checkAll = if map toLower str == "all"+               then AllLayers+               else LRName str++-- | The list represent (Separator, Name).  You should not have any+--   quote characters for any of the 'String's, since there are+--   parsing problems with them.+data LayerList = LL String [(String, String)]+                 deriving (Eq, Ord, Show, Read)++instance PrintDot LayerList where+    unqtDot (LL l1 ols) = unqtDot l1 <> hcat (map subLL ols)+        where+          subLL (s, l) = unqtDot s <> unqtDot l++    toDot (LL l1 []) = toDot l1+    -- Might not need quotes, but probably will.+    toDot ll         = doubleQuotes $ unqtDot ll++instance ParseDot LayerList where+    parseUnqt = do l1 <- parseLayerName+                   ols <- many $ do s   <- parseLayerSep+                                    lnm <- parseLayerName+                                    return (s, lnm)+                   return $ LL l1 ols++    parse = quotedParse parseUnqt+            `onFail`+            liftM (flip LL []) (parseLayerName' `onFail` numString)++-- -----------------------------------------------------------------------------++data OutputMode = BreadthFirst | NodesFirst | EdgesFirst+                  deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot OutputMode where+    unqtDot BreadthFirst = text "breadthfirst"+    unqtDot NodesFirst   = text "nodesfirst"+    unqtDot EdgesFirst   = text "edgesfirst"++instance ParseDot OutputMode where+    parseUnqt = oneOf [ stringRep BreadthFirst "breadthfirst"+                      , stringRep NodesFirst "nodesfirst"+                      , stringRep EdgesFirst "edgesfirst"+                      ]++-- -----------------------------------------------------------------------------++data Pack = DoPack+          | DontPack+          | PackMargin Int -- ^ If non-negative, then packs; otherwise doesn't.+            deriving (Eq, Ord, Show, Read)++instance PrintDot Pack where+    unqtDot DoPack         = unqtDot True+    unqtDot DontPack       = unqtDot False+    unqtDot (PackMargin m) = unqtDot m++instance ParseDot Pack where+    -- What happens if it parses 0?  It's non-negative, but parses as False+    parseUnqt = oneOf [ liftM PackMargin parseUnqt+                      , liftM (bool DontPack DoPack) onlyBool+                      ]++-- -----------------------------------------------------------------------------++data PackMode = PackNode+              | PackClust+              | PackGraph+              | PackArray Bool Bool (Maybe Int) -- ^ Sort by cols, sort+                                                -- by user, number of+                                                -- rows/cols+                deriving (Eq, Ord, Show, Read)++instance PrintDot PackMode where+    unqtDot PackNode           = text "node"+    unqtDot PackClust          = text "clust"+    unqtDot PackGraph          = text "graph"+    unqtDot (PackArray c u mi) = addNum . isU . isC . isUnder+                                 $ text "array"+        where+          addNum = maybe id (flip (<>) . unqtDot) mi+          isUnder = if c || u+                    then flip (<>) $ char '_'+                    else id+          isC = if c+                then flip (<>) $ char 'c'+                else id+          isU = if u+                then flip (<>) $ char 'u'+                else id++instance ParseDot PackMode where+    parseUnqt = oneOf [ stringRep PackNode "node"+                      , stringRep PackClust "clust"+                      , stringRep PackGraph "graph"+                      , do string "array"+                           mcu <- optional $ do character '_'+                                                many1 $ satisfy isCU+                           let c = hasCharacter mcu 'c'+                               u = hasCharacter mcu 'u'+                           mi <- optional parseUnqt+                           return $ PackArray c u mi+                      ]+        where+          hasCharacter ms c = maybe False (elem c) ms+          -- Also checks and removes quote characters+          isCU = flip elem ['c', 'u']++-- -----------------------------------------------------------------------------++data Pos = PointPos Point+         | SplinePos [Spline]+           deriving (Eq, Ord, Show, Read)++instance PrintDot Pos where+    unqtDot (PointPos p)   = unqtDot p+    unqtDot (SplinePos ss) = unqtDot ss++    toDot (PointPos p)   = toDot p+    toDot (SplinePos ss) = toDot ss++instance ParseDot Pos where+    -- Have to be careful with this: if we try to parse points first,+    -- then a spline with no start and end points will erroneously get+    -- parsed as a point and then the parser will crash as it expects+    -- a closing quote character...+    parseUnqt = do splns <- parseUnqt+                   case splns of+                     [Spline Nothing Nothing [p]] -> return $ PointPos p+                     _                            -> return $ SplinePos splns++    parse = quotedParse parseUnqt++-- -----------------------------------------------------------------------------++-- | Controls how (and if) edges are represented.+data EdgeType = SplineEdges+              | LineEdges+              | NoEdges+              | PolyLine+              | CompoundEdge -- ^ fdp only+                deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot EdgeType where+    unqtDot SplineEdges  = toDot True+    unqtDot LineEdges    = toDot False+    unqtDot NoEdges      = empty+    unqtDot PolyLine     = text "polyline"+    unqtDot CompoundEdge = text "compound"++    toDot NoEdges = doubleQuotes empty+    toDot et      = unqtDot et++instance ParseDot EdgeType where+    -- Can't parse NoEdges without quotes.+    parseUnqt = oneOf [ liftM (bool LineEdges SplineEdges) parse+                      , stringRep SplineEdges "spline"+                      , stringRep LineEdges "line"+                      , stringRep PolyLine "polyline"+                      , stringRep CompoundEdge "compound"+                      ]++    parse = stringRep NoEdges "\"\""+            `onFail`+            optionalQuoted parseUnqt++-- -----------------------------------------------------------------------------++-- | Upper-case first character is major order;+--   lower-case second character is minor order.+data PageDir = Bl | Br | Tl | Tr | Rb | Rt | Lb | Lt+               deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot PageDir where+    unqtDot Bl = text "BL"+    unqtDot Br = text "BR"+    unqtDot Tl = text "TL"+    unqtDot Tr = text "TR"+    unqtDot Rb = text "RB"+    unqtDot Rt = text "RT"+    unqtDot Lb = text "LB"+    unqtDot Lt = text "LT"++instance ParseDot PageDir where+    parseUnqt = oneOf [ stringRep Bl "BL"+                      , stringRep Br "BR"+                      , stringRep Tl "TL"+                      , stringRep Tr "TR"+                      , stringRep Rb "RB"+                      , stringRep Rt "RT"+                      , stringRep Lb "LB"+                      , stringRep Lt "LT"+                      ]++-- -----------------------------------------------------------------------------++-- | The number of points in the list must be equivalent to 1 mod 3;+--   note that this is not checked.+data Spline = Spline (Maybe Point) (Maybe Point) [Point]+              deriving (Eq, Ord, Show, Read)++instance PrintDot Spline where+    unqtDot (Spline ms me ps) = addS . addE+                               . hsep+                               $ map unqtDot ps+        where+          addP t = maybe id ((<+>) . commaDel t)+          addS = addP 's' ms+          addE = addP 'e' me++    toDot = doubleQuotes . unqtDot++    unqtListToDot = hcat . punctuate semi . map unqtDot++    listToDot = doubleQuotes . unqtListToDot++instance ParseDot Spline where+    parseUnqt = do ms <- parseP 's'+                   me <- parseP 'e'+                   ps <- sepBy1 parseUnqt whitespace+                   return $ Spline ms me ps+        where+          parseP t = optional $ do character t+                                   parseComma+                                   parseUnqt `discard` whitespace++    parse = quotedParse parseUnqt++    parseUnqtList = sepBy1 parseUnqt (character ';')++-- -----------------------------------------------------------------------------++data QuadType = NormalQT+              | FastQT+              | NoQT+                deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot QuadType where+    unqtDot NormalQT = text "normal"+    unqtDot FastQT   = text "fast"+    unqtDot NoQT     = text "none"++instance ParseDot QuadType where+    -- Have to take into account the slightly different interpretation+    -- of Bool used as an option for parsing QuadType+    parseUnqt = oneOf [ stringRep NormalQT "normal"+                      , stringRep FastQT "fast"+                      , stringRep NoQT "none"+                      , character '2'   >> return FastQT -- weird bool+                      , liftM (bool NoQT NormalQT) parse+                      ]++-- -----------------------------------------------------------------------------++-- | Specify the root node either as a Node attribute or a Graph attribute.+data Root = IsCentral       -- ^ For Nodes only+          | NotCentral      -- ^ For Nodes only+          | NodeName String -- ^ For Graphs only+            deriving (Eq, Ord, Show, Read)++instance PrintDot Root where+    unqtDot IsCentral    = unqtDot True+    unqtDot NotCentral   = unqtDot False+    unqtDot (NodeName n) = unqtDot n++    toDot (NodeName n) = toDot n+    toDot r            = unqtDot r++instance ParseDot Root where+    parseUnqt = liftM (bool NotCentral IsCentral) onlyBool+                `onFail`+                liftM NodeName parseUnqt++    parse = optionalQuoted (liftM (bool NotCentral IsCentral) onlyBool)+            `onFail`+            liftM NodeName parse++-- -----------------------------------------------------------------------------++data RankType = SameRank+              | MinRank+              | SourceRank+              | MaxRank+              | SinkRank+                deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot RankType where+    unqtDot SameRank   = text "same"+    unqtDot MinRank    = text "min"+    unqtDot SourceRank = text "source"+    unqtDot MaxRank    = text "max"+    unqtDot SinkRank   = text "sink"++instance ParseDot RankType where+    parseUnqt = oneOf [ stringRep SameRank "same"+                      , stringRep MinRank "min"+                      , stringRep SourceRank "source"+                      , stringRep MaxRank "max"+                      , stringRep SinkRank "sink"+                      ]++-- -----------------------------------------------------------------------------++data RankDir = FromTop+             | FromLeft+             | FromBottom+             | FromRight+               deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot RankDir where+    unqtDot FromTop    = text "TB"+    unqtDot FromLeft   = text "LR"+    unqtDot FromBottom = text "BT"+    unqtDot FromRight  = text "RL"++instance ParseDot RankDir where+    parseUnqt = oneOf [ stringRep FromTop "TB"+                      , stringRep FromLeft "LR"+                      , stringRep FromBottom "BT"+                      , stringRep FromRight "RL"+                      ]++-- -----------------------------------------------------------------------------++data Shape+    = BoxShape -- ^ Has synonyms of /rect/ and /rectangle/.+    | Polygon+    | Ellipse+    | Circle+    | PointShape+    | Egg+    | Triangle+    | PlainText -- ^ Has synonym of /none/.+    | DiamondShape+    | Trapezium+    | Parallelogram+    | House+    | Pentagon+    | Hexagon+    | Septagon+    | Octagon+    | DoubleCircle+    | DoubleOctagon+    | TripleOctagon+    | InvTriangle+    | InvTrapezium+    | InvHouse+    | MDiamond+    | MSquare+    | MCircle+    | Note+    | Tab+    | Folder+    | Box3D+    | Component+      deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Shape where+    unqtDot BoxShape      = text "box"+    unqtDot Polygon       = text "polygon"+    unqtDot Ellipse       = text "ellipse"+    unqtDot Circle        = text "circle"+    unqtDot PointShape    = text "point"+    unqtDot Egg           = text "egg"+    unqtDot Triangle      = text "triangle"+    unqtDot PlainText     = text "plaintext"+    unqtDot DiamondShape  = text "diamond"+    unqtDot Trapezium     = text "trapezium"+    unqtDot Parallelogram = text "parallelogram"+    unqtDot House         = text "house"+    unqtDot Pentagon      = text "pentagon"+    unqtDot Hexagon       = text "hexagon"+    unqtDot Septagon      = text "septagon"+    unqtDot Octagon       = text "octagon"+    unqtDot DoubleCircle  = text "doublecircle"+    unqtDot DoubleOctagon = text "doubleoctagon"+    unqtDot TripleOctagon = text "tripleoctagon"+    unqtDot InvTriangle   = text "invtriangle"+    unqtDot InvTrapezium  = text "invtrapezium"+    unqtDot InvHouse      = text "invhouse"+    unqtDot MDiamond      = text "Mdiamond"+    unqtDot MSquare       = text "Msquare"+    unqtDot MCircle       = text "Mcircle"+    unqtDot Note          = text "note"+    unqtDot Tab           = text "tab"+    unqtDot Folder        = text "folder"+    unqtDot Box3D         = text "box3d"+    unqtDot Component     = text "component"++instance ParseDot Shape where+    parseUnqt = oneOf [ stringRep Box3D "box3d" -- Parse this before "box"+                      , stringReps BoxShape ["box","rectangle","rect"]+                      , stringRep Polygon "polygon"+                      , stringRep Ellipse "ellipse"+                      , stringRep Circle "circle"+                      , stringRep PointShape "point"+                      , stringRep Egg "egg"+                      , stringRep Triangle "triangle"+                      , stringReps PlainText ["plaintext","none"]+                      , stringRep DiamondShape "diamond"+                      , stringRep Trapezium "trapezium"+                      , stringRep Parallelogram "parallelogram"+                      , stringRep House "house"+                      , stringRep Pentagon "pentagon"+                      , stringRep Hexagon "hexagon"+                      , stringRep Septagon "septagon"+                      , stringRep Octagon "octagon"+                      , stringRep DoubleCircle "doublecircle"+                      , stringRep DoubleOctagon "doubleoctagon"+                      , stringRep TripleOctagon "tripleoctagon"+                      , stringRep InvTriangle "invtriangle"+                      , stringRep InvTrapezium "invtrapezium"+                      , stringRep InvHouse "invhouse"+                      , stringRep MDiamond "Mdiamond"+                      , stringRep MSquare "Msquare"+                      , stringRep MCircle "Mcircle"+                      , stringRep Note "note"+                      , stringRep Tab "tab"+                      , stringRep Folder "folder"+                      , stringRep Component "component"+                      ]++-- -----------------------------------------------------------------------------++data SmoothType = NoSmooth+                | AvgDist+                | GraphDist+                | PowerDist+                | RNG+                | Spring+                | TriangleSmooth+                  deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot SmoothType where+    unqtDot NoSmooth       = text "none"+    unqtDot AvgDist        = text "avg_dist"+    unqtDot GraphDist      = text "graph_dist"+    unqtDot PowerDist      = text "power_dist"+    unqtDot RNG            = text "rng"+    unqtDot Spring         = text "spring"+    unqtDot TriangleSmooth = text "triangle"++instance ParseDot SmoothType where+    parseUnqt = oneOf [ stringRep NoSmooth "none"+                      , stringRep AvgDist "avg_dist"+                      , stringRep GraphDist "graph_dist"+                      , stringRep PowerDist "power_dist"+                      , stringRep RNG "rng"+                      , stringRep Spring "spring"+                      , stringRep TriangleSmooth "triangle"+                      ]++-- -----------------------------------------------------------------------------++data StartType = StartStyle STStyle+               | StartSeed Int+               | StartStyleSeed STStyle Int+                 deriving (Eq, Ord, Show, Read)++instance PrintDot StartType where+    unqtDot (StartStyle ss)       = unqtDot ss+    unqtDot (StartSeed s)         = unqtDot s+    unqtDot (StartStyleSeed ss s) = unqtDot ss <> unqtDot s++instance ParseDot StartType where+    parseUnqt = oneOf [ do ss <- parseUnqt+                           s  <- parseUnqt+                           return $ StartStyleSeed ss s+                      , liftM StartStyle parseUnqt+                      , liftM StartSeed parseUnqt+                      ]++data STStyle = RegularStyle+             | SelfStyle+             | RandomStyle+               deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot STStyle where+    unqtDot RegularStyle = text "regular"+    unqtDot SelfStyle    = text "self"+    unqtDot RandomStyle  = text "random"++instance ParseDot STStyle where+    parseUnqt = oneOf [ stringRep RegularStyle "regular"+                      , stringRep SelfStyle "self"+                      , stringRep RandomStyle "random"+                      ]++-- -----------------------------------------------------------------------------++data StyleItem = SItem StyleName [String]+             deriving (Eq, Ord, Show, Read)++instance PrintDot StyleItem where+    unqtDot (SItem nm args)+        | null args = dnm+        | otherwise = dnm <> parens args'+        where+          dnm = unqtDot nm+          args' = hcat . punctuate comma $ map unqtDot args++    toDot si@(SItem nm args)+        | null args = toDot nm+        | otherwise = doubleQuotes $ unqtDot si++    unqtListToDot = hcat . punctuate comma . map unqtDot++    listToDot [SItem nm []] = toDot nm+    listToDot sis           = doubleQuotes $ unqtListToDot sis++instance ParseDot StyleItem where+    parseUnqt = do nm <- parseUnqt+                   args <- tryParseList' parseArgs+                   return $ SItem nm args++    parse = quotedParse (liftM2 SItem parseUnqt parseArgs)+            `onFail`+            liftM (flip SItem []) parse++    parseUnqtList = sepBy1 parseUnqt parseComma++    parseList = quotedParse parseUnqtList+                `onFail`+                -- Might not necessarily need to be quoted if a singleton...+                liftM return parse++parseArgs :: Parse [String]+parseArgs = bracketSep (character '(')+                       parseComma+                       (character ')')+                       parseStyleName++data StyleName = Dashed    -- ^ Nodes and Edges+               | Dotted    -- ^ Nodes and Edges+               | Solid     -- ^ Nodes and Edges+               | Bold      -- ^ Nodes and Edges+               | Invisible -- ^ Nodes and Edges+               | Filled    -- ^ Nodes and Clusters+               | Diagonals -- ^ Nodes only+               | Rounded   -- ^ Nodes and Clusters+               | DD String -- ^ Device Dependent+                 deriving (Eq, Ord, Show, Read)++instance PrintDot StyleName where+    unqtDot Dashed    = text "dashed"+    unqtDot Dotted    = text "dotted"+    unqtDot Solid     = text "solid"+    unqtDot Bold      = text "bold"+    unqtDot Invisible = text "invis"+    unqtDot Filled    = text "filled"+    unqtDot Diagonals = text "diagonals"+    unqtDot Rounded   = text "rounded"+    unqtDot (DD nm)   = unqtDot nm++    toDot (DD nm) = toDot nm+    toDot sn      = unqtDot sn++instance ParseDot StyleName where+    parseUnqt = liftM checkDD parseStyleName++    parse = liftM checkDD+            $ quotedParse parseStyleName+              `onFail`+              -- In case a singleton DD is at the end of an attribute list.+              do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ', ']']+                 r <- many (orQuote $ noneOf [quoteChar, '(', ')', ',', ']'])+                 return $ f:r++checkDD     :: String -> StyleName+checkDD str = case map toLower str of+                "dashed"    -> Dashed+                "dotted"    -> Dotted+                "solid"     -> Solid+                "bold"      -> Bold+                "invis"     -> Invisible+                "filled"    -> Filled+                "diagonals" -> Diagonals+                "rounded"   -> Rounded+                _           -> DD str++parseStyleName :: Parse String+parseStyleName = do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ']+                    r <- many (orQuote $ noneOf [quoteChar, '(', ')', ','])+                    return $ f:r++-- -----------------------------------------------------------------------------++newtype PortPos = PP CompassPoint+    deriving (Eq, Ord, Show, Read)++instance PrintDot PortPos where+    unqtDot (PP cp) = unqtDot cp++    toDot (PP cp) = toDot cp++instance ParseDot PortPos where+    parseUnqt = liftM PP parseUnqt++data CompassPoint = North+                  | NorthEast+                  | East+                  | SouthEast+                  | South+                  | SouthWest+                  | West+                  | NorthWest+                  | CenterPoint+                  | NoCP+                    deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot CompassPoint where+    unqtDot NorthEast   = text "ne"+    unqtDot NorthWest   = text "nw"+    unqtDot North       = text "n"+    unqtDot East        = text "e"+    unqtDot SouthEast   = text "se"+    unqtDot SouthWest   = text "sw"+    unqtDot South       = text "s"+    unqtDot West        = text "w"+    unqtDot CenterPoint = text "c"+    unqtDot NoCP        = text "_"++instance ParseDot CompassPoint where+    -- Have to take care of longer parsing values first.+    parseUnqt = oneOf [ stringRep NorthEast "ne"+                      , stringRep NorthWest "nw"+                      , stringRep North "n"+                      , stringRep SouthEast "se"+                      , stringRep SouthWest "sw"+                      , stringRep South "s"+                      , stringRep East "e"+                      , stringRep West "w"+                      , stringRep CenterPoint "c"+                      , stringRep NoCP "_"+                      ]++-- -----------------------------------------------------------------------------++data ViewPort = VP { wVal  :: Double+                   , hVal  :: Double+                   , zVal  :: Double+                   , focus :: Maybe FocusType+                   }+                deriving (Eq, Ord, Show, Read)++instance PrintDot ViewPort where+    unqtDot vp = maybe vs ((<>) (vs <> comma) . unqtDot)+                 $ focus vp+        where+          vs = hcat . punctuate comma+               $ map (unqtDot . flip ($) vp) [wVal, hVal, zVal]++    toDot = doubleQuotes . unqtDot++instance ParseDot ViewPort where+    parseUnqt = do wv <- parseUnqt+                   parseComma+                   hv <- parseUnqt+                   parseComma+                   zv <- parseUnqt+                   mf <- optional $ parseComma >> parseUnqt+                   return $ VP wv hv zv mf++    parse = quotedParse parseUnqt++data FocusType = XY Point+               | NodeFocus String+                 deriving (Eq, Ord, Show, Read)++instance PrintDot FocusType where+    unqtDot (XY p)         = unqtDot p+    unqtDot (NodeFocus nm) = unqtDot nm++    toDot (XY p)         = toDot p+    toDot (NodeFocus nm) = toDot nm++instance ParseDot FocusType where+    parseUnqt = liftM XY parseUnqt+                `onFail`+                liftM NodeFocus parseUnqt++    parse = liftM XY parse+            `onFail`+            liftM NodeFocus parse++-- -----------------------------------------------------------------------------++data VerticalPlacement = VTop+                       | VCenter -- ^ Only valid for Nodes.+                       | VBottom+                         deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot VerticalPlacement where+    unqtDot VTop    = char 't'+    unqtDot VCenter = char 'c'+    unqtDot VBottom = char 'b'++instance ParseDot VerticalPlacement where+    parseUnqt = oneOf [ stringRep VTop "t"+                      , stringRep VCenter "c"+                      , stringRep VBottom "b"+                      ]++-- -----------------------------------------------------------------------------++data ScaleType = UniformScale+               | NoScale+               | FillWidth+               | FillHeight+               | FillBoth+                 deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ScaleType where+    unqtDot UniformScale = unqtDot True+    unqtDot NoScale      = unqtDot False+    unqtDot FillWidth    = text "width"+    unqtDot FillHeight   = text "height"+    unqtDot FillBoth     = text "both"++instance ParseDot ScaleType where+    parseUnqt = oneOf [ stringRep UniformScale "true"+                      , stringRep NoScale "false"+                      , stringRep FillWidth "width"+                      , stringRep FillHeight "height"+                      , stringRep FillBoth "both"+                      ]++-- -----------------------------------------------------------------------------++data Justification = JLeft+                   | JRight+                   | JCenter+                     deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Justification where+    unqtDot JLeft   = char 'l'+    unqtDot JRight  = char 'r'+    unqtDot JCenter = char 'c'++instance ParseDot Justification where+    parseUnqt = oneOf [ stringRep JLeft "l"+                      , stringRep JRight "r"+                      , stringRep JCenter "c"+                      ]++-- -----------------------------------------------------------------------------++data Ratios = AspectRatio Double+            | FillRatio+            | CompressRatio+            | ExpandRatio+            | AutoRatio+              deriving (Eq, Ord, Show, Read)++instance PrintDot Ratios where+    unqtDot (AspectRatio r) = unqtDot r+    unqtDot FillRatio       = text "fill"+    unqtDot CompressRatio   = text "compress"+    unqtDot ExpandRatio     = text "expand"+    unqtDot AutoRatio       = text "auto"++instance ParseDot Ratios where+    parseUnqt = oneOf [ liftM AspectRatio parseUnqt+                      , stringRep FillRatio "fill"+                      , stringRep CompressRatio "compress"+                      , stringRep ExpandRatio "expand"+                      , stringRep AutoRatio "auto"+                      ]
+ tests/examples/Attributes.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Attributes.hs.parser.golden view

file too large to diff

+ tests/examples/Attributes.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Attributes.hs.prettyprinter.golden view
@@ -0,0 +1,1718 @@+module Data.GraphViz.Attributes+       (Attribute(..), Attributes, usedByGraphs, usedBySubGraphs,+        usedByClusters, usedByNodes, usedByEdges, EscString, URL(..),+        ArrowType(..), AspectType(..), Rect(..), ClusterMode(..),+        DirType(..), DEConstraints(..), DPoint(..), ModeType(..),+        Model(..), Label(..), Point(..), Overlap(..), LayerRange(..),+        LayerID(..), LayerList(..), OutputMode(..), Pack(..), PackMode(..),+        Pos(..), EdgeType(..), PageDir(..), Spline(..), QuadType(..),+        Root(..), RankType(..), RankDir(..), Shape(..), SmoothType(..),+        StartType(..), STStyle(..), StyleItem(..), StyleName(..),+        PortPos(..), CompassPoint(..), ViewPort(..), FocusType(..),+        VerticalPlacement(..), ScaleType(..), Justification(..),+        Ratios(..), module Data.GraphViz.Attributes.Colors, ArrowShape(..),+        ArrowModifier(..), ArrowFill(..), ArrowSide(..), box, crow,+        diamond, dotArrow, inv, noArrow, normal, tee, vee, oDot, invDot,+        invODot, oBox, oDiamond, eDiamond, openArr, halfOpen, emptyArr,+        invEmpty, noMods, openMod, defLayerSep, notLayerSep)+       where+import Data.GraphViz.Attributes.Colors+import Data.GraphViz.Util+import Data.GraphViz.Parsing+import Data.GraphViz.Printing+import Data.Char (toLower)+import Data.Maybe (isJust)+import Control.Arrow (first)+import Control.Monad (liftM, liftM2)++data Attribute = Damping Double+               | K Double+               | URL URL+               | ArrowHead ArrowType+               | ArrowSize Double+               | ArrowTail ArrowType+               | Aspect AspectType+               | Bb Rect+               | BgColor Color+               | Center Bool+               | Charset String+               | ClusterRank ClusterMode+               | ColorScheme ColorScheme+               | Color [Color]+               | Comment String+               | Compound Bool+               | Concentrate Bool+               | Constraint Bool+               | Decorate Bool+               | DefaultDist Double+               | Dimen Int+               | Dim Int+               | Dir DirType+               | DirEdgeConstraints DEConstraints+               | Distortion Double+               | DPI Double+               | EdgeURL URL+               | EdgeTarget EscString+               | EdgeTooltip EscString+               | Epsilon Double+               | ESep DPoint+               | FillColor Color+               | FixedSize Bool+               | FontColor Color+               | FontName String+               | FontNames String+               | FontPath String+               | FontSize Double+               | Group String+               | HeadURL URL+               | HeadClip Bool+               | HeadLabel Label+               | HeadPort PortPos+               | HeadTarget EscString+               | HeadTooltip EscString+               | Height Double+               | ID Label+               | Image String+               | ImageScale ScaleType+               | LabelURL URL+               | LabelAngle Double+               | LabelDistance Double+               | LabelFloat Bool+               | LabelFontColor Color+               | LabelFontName String+               | LabelFontSize Double+               | LabelJust Justification+               | LabelLoc VerticalPlacement+               | LabelTarget EscString+               | LabelTooltip EscString+               | Label Label+               | Landscape Bool+               | LayerSep String+               | Layers LayerList+               | Layer LayerRange+               | Layout String+               | Len Double+               | LevelsGap Double+               | Levels Int+               | LHead String+               | LPos Point+               | LTail String+               | Margin DPoint+               | MaxIter Int+               | MCLimit Double+               | MinDist Double+               | MinLen Int+               | Model Model+               | Mode ModeType+               | Mosek Bool+               | NodeSep Double+               | NoJustify Bool+               | Normalize Bool+               | Nslimit1 Double+               | Nslimit Double+               | Ordering String+               | Orientation Double+               | OutputOrder OutputMode+               | OverlapScaling Double+               | Overlap Overlap+               | PackMode PackMode+               | Pack Pack+               | Pad DPoint+               | PageDir PageDir+               | Page Point+               | PenColor Color+               | PenWidth Double+               | Peripheries Int+               | Pin Bool+               | Pos Pos+               | QuadTree QuadType+               | Quantum Double+               | RankDir RankDir+               | RankSep Double+               | Rank RankType+               | Ratio Ratios+               | Rects Rect+               | Regular Bool+               | ReMinCross Bool+               | RepulsiveForce Double+               | Root Root+               | Rotate Int+               | SameHead String+               | SameTail String+               | SamplePoints Int+               | SearchSize Int+               | Sep DPoint+               | ShapeFile String+               | Shape Shape+               | ShowBoxes Int+               | Sides Int+               | Size Point+               | Skew Double+               | Smoothing SmoothType+               | SortV Int+               | Splines EdgeType+               | Start StartType+               | StyleSheet String+               | Style [StyleItem]+               | TailURL URL+               | TailClip Bool+               | TailLabel Label+               | TailPort PortPos+               | TailTarget EscString+               | TailTooltip EscString+               | Target EscString+               | Tooltip EscString+               | TrueColor Bool+               | Vertices [Point]+               | ViewPort ViewPort+               | VoroMargin Double+               | Weight Double+               | Width Double+               | Z Double+                   deriving (Eq, Ord, Show, Read)++type Attributes = [Attribute]++instance PrintDot Attribute where+        unqtDot (Damping v) = printField "Damping" v+        unqtDot (K v) = printField "K" v+        unqtDot (URL v) = printField "URL" v+        unqtDot (ArrowHead v) = printField "arrowhead" v+        unqtDot (ArrowSize v) = printField "arrowsize" v+        unqtDot (ArrowTail v) = printField "arrowtail" v+        unqtDot (Aspect v) = printField "aspect" v+        unqtDot (Bb v) = printField "bb" v+        unqtDot (BgColor v) = printField "bgcolor" v+        unqtDot (Center v) = printField "center" v+        unqtDot (Charset v) = printField "charset" v+        unqtDot (ClusterRank v) = printField "clusterrank" v+        unqtDot (ColorScheme v) = printField "colorscheme" v+        unqtDot (Color v) = printField "color" v+        unqtDot (Comment v) = printField "comment" v+        unqtDot (Compound v) = printField "compound" v+        unqtDot (Concentrate v) = printField "concentrate" v+        unqtDot (Constraint v) = printField "constraint" v+        unqtDot (Decorate v) = printField "decorate" v+        unqtDot (DefaultDist v) = printField "defaultdist" v+        unqtDot (Dimen v) = printField "dimen" v+        unqtDot (Dim v) = printField "dim" v+        unqtDot (Dir v) = printField "dir" v+        unqtDot (DirEdgeConstraints v) = printField "diredgeconstraints" v+        unqtDot (Distortion v) = printField "distortion" v+        unqtDot (DPI v) = printField "dpi" v+        unqtDot (EdgeURL v) = printField "edgeURL" v+        unqtDot (EdgeTarget v) = printField "edgetarget" v+        unqtDot (EdgeTooltip v) = printField "edgetooltip" v+        unqtDot (Epsilon v) = printField "epsilon" v+        unqtDot (ESep v) = printField "esep" v+        unqtDot (FillColor v) = printField "fillcolor" v+        unqtDot (FixedSize v) = printField "fixedsize" v+        unqtDot (FontColor v) = printField "fontcolor" v+        unqtDot (FontName v) = printField "fontname" v+        unqtDot (FontNames v) = printField "fontnames" v+        unqtDot (FontPath v) = printField "fontpath" v+        unqtDot (FontSize v) = printField "fontsize" v+        unqtDot (Group v) = printField "group" v+        unqtDot (HeadURL v) = printField "headURL" v+        unqtDot (HeadClip v) = printField "headclip" v+        unqtDot (HeadLabel v) = printField "headlabel" v+        unqtDot (HeadPort v) = printField "headport" v+        unqtDot (HeadTarget v) = printField "headtarget" v+        unqtDot (HeadTooltip v) = printField "headtooltip" v+        unqtDot (Height v) = printField "height" v+        unqtDot (ID v) = printField "id" v+        unqtDot (Image v) = printField "image" v+        unqtDot (ImageScale v) = printField "imagescale" v+        unqtDot (LabelURL v) = printField "labelURL" v+        unqtDot (LabelAngle v) = printField "labelangle" v+        unqtDot (LabelDistance v) = printField "labeldistance" v+        unqtDot (LabelFloat v) = printField "labelfloat" v+        unqtDot (LabelFontColor v) = printField "labelfontcolor" v+        unqtDot (LabelFontName v) = printField "labelfontname" v+        unqtDot (LabelFontSize v) = printField "labelfontsize" v+        unqtDot (LabelJust v) = printField "labeljust" v+        unqtDot (LabelLoc v) = printField "labelloc" v+        unqtDot (LabelTarget v) = printField "labeltarget" v+        unqtDot (LabelTooltip v) = printField "labeltooltip" v+        unqtDot (Label v) = printField "label" v+        unqtDot (Landscape v) = printField "landscape" v+        unqtDot (LayerSep v) = printField "layersep" v+        unqtDot (Layers v) = printField "layers" v+        unqtDot (Layer v) = printField "layer" v+        unqtDot (Layout v) = printField "layout" v+        unqtDot (Len v) = printField "len" v+        unqtDot (LevelsGap v) = printField "levelsgap" v+        unqtDot (Levels v) = printField "levels" v+        unqtDot (LHead v) = printField "lhead" v+        unqtDot (LPos v) = printField "lp" v+        unqtDot (LTail v) = printField "ltail" v+        unqtDot (Margin v) = printField "margin" v+        unqtDot (MaxIter v) = printField "maxiter" v+        unqtDot (MCLimit v) = printField "mclimit" v+        unqtDot (MinDist v) = printField "mindist" v+        unqtDot (MinLen v) = printField "minlen" v+        unqtDot (Model v) = printField "model" v+        unqtDot (Mode v) = printField "mode" v+        unqtDot (Mosek v) = printField "mosek" v+        unqtDot (NodeSep v) = printField "nodesep" v+        unqtDot (NoJustify v) = printField "nojustify" v+        unqtDot (Normalize v) = printField "normalize" v+        unqtDot (Nslimit1 v) = printField "nslimit1" v+        unqtDot (Nslimit v) = printField "nslimit" v+        unqtDot (Ordering v) = printField "ordering" v+        unqtDot (Orientation v) = printField "orientation" v+        unqtDot (OutputOrder v) = printField "outputorder" v+        unqtDot (OverlapScaling v) = printField "overlap_scaling" v+        unqtDot (Overlap v) = printField "overlap" v+        unqtDot (PackMode v) = printField "packmode" v+        unqtDot (Pack v) = printField "pack" v+        unqtDot (Pad v) = printField "pad" v+        unqtDot (PageDir v) = printField "pagedir" v+        unqtDot (Page v) = printField "page" v+        unqtDot (PenColor v) = printField "pencolor" v+        unqtDot (PenWidth v) = printField "penwidth" v+        unqtDot (Peripheries v) = printField "peripheries" v+        unqtDot (Pin v) = printField "pin" v+        unqtDot (Pos v) = printField "pos" v+        unqtDot (QuadTree v) = printField "quadtree" v+        unqtDot (Quantum v) = printField "quantum" v+        unqtDot (RankDir v) = printField "rankdir" v+        unqtDot (RankSep v) = printField "ranksep" v+        unqtDot (Rank v) = printField "rank" v+        unqtDot (Ratio v) = printField "ratio" v+        unqtDot (Rects v) = printField "rects" v+        unqtDot (Regular v) = printField "regular" v+        unqtDot (ReMinCross v) = printField "remincross" v+        unqtDot (RepulsiveForce v) = printField "repulsiveforce" v+        unqtDot (Root v) = printField "root" v+        unqtDot (Rotate v) = printField "rotate" v+        unqtDot (SameHead v) = printField "samehead" v+        unqtDot (SameTail v) = printField "sametail" v+        unqtDot (SamplePoints v) = printField "samplepoints" v+        unqtDot (SearchSize v) = printField "searchsize" v+        unqtDot (Sep v) = printField "sep" v+        unqtDot (ShapeFile v) = printField "shapefile" v+        unqtDot (Shape v) = printField "shape" v+        unqtDot (ShowBoxes v) = printField "showboxes" v+        unqtDot (Sides v) = printField "sides" v+        unqtDot (Size v) = printField "size" v+        unqtDot (Skew v) = printField "skew" v+        unqtDot (Smoothing v) = printField "smoothing" v+        unqtDot (SortV v) = printField "sortv" v+        unqtDot (Splines v) = printField "splines" v+        unqtDot (Start v) = printField "start" v+        unqtDot (StyleSheet v) = printField "stylesheet" v+        unqtDot (Style v) = printField "style" v+        unqtDot (TailURL v) = printField "tailURL" v+        unqtDot (TailClip v) = printField "tailclip" v+        unqtDot (TailLabel v) = printField "taillabel" v+        unqtDot (TailPort v) = printField "tailport" v+        unqtDot (TailTarget v) = printField "tailtarget" v+        unqtDot (TailTooltip v) = printField "tailtooltip" v+        unqtDot (Target v) = printField "target" v+        unqtDot (Tooltip v) = printField "tooltip" v+        unqtDot (TrueColor v) = printField "truecolor" v+        unqtDot (Vertices v) = printField "vertices" v+        unqtDot (ViewPort v) = printField "viewport" v+        unqtDot (VoroMargin v) = printField "voro_margin" v+        unqtDot (Weight v) = printField "weight" v+        unqtDot (Width v) = printField "width" v+        unqtDot (Z v) = printField "z" v+        listToDot = unqtListToDot++instance ParseDot Attribute where+        parseUnqt+          = oneOf+              [liftM Damping $ parseField "Damping", liftM K $ parseField "K",+               liftM URL $ parseFields ["URL", "href"],+               liftM ArrowHead $ parseField "arrowhead",+               liftM ArrowSize $ parseField "arrowsize",+               liftM ArrowTail $ parseField "arrowtail",+               liftM Aspect $ parseField "aspect", liftM Bb $ parseField "bb",+               liftM BgColor $ parseField "bgcolor",+               liftM Center $ parseFieldBool "center",+               liftM Charset $ parseField "charset",+               liftM ClusterRank $ parseField "clusterrank",+               liftM ColorScheme $ parseField "colorscheme",+               liftM Color $ parseField "color",+               liftM Comment $ parseField "comment",+               liftM Compound $ parseFieldBool "compound",+               liftM Concentrate $ parseFieldBool "concentrate",+               liftM Constraint $ parseFieldBool "constraint",+               liftM Decorate $ parseFieldBool "decorate",+               liftM DefaultDist $ parseField "defaultdist",+               liftM Dimen $ parseField "dimen", liftM Dim $ parseField "dim",+               liftM Dir $ parseField "dir",+               liftM DirEdgeConstraints $+                 parseFieldDef EdgeConstraints "diredgeconstraints",+               liftM Distortion $ parseField "distortion",+               liftM DPI $ parseFields ["dpi", "resolution"],+               liftM EdgeURL $ parseFields ["edgeURL", "edgehref"],+               liftM EdgeTarget $ parseField "edgetarget",+               liftM EdgeTooltip $ parseField "edgetooltip",+               liftM Epsilon $ parseField "epsilon",+               liftM ESep $ parseField "esep",+               liftM FillColor $ parseField "fillcolor",+               liftM FixedSize $ parseFieldBool "fixedsize",+               liftM FontColor $ parseField "fontcolor",+               liftM FontName $ parseField "fontname",+               liftM FontNames $ parseField "fontnames",+               liftM FontPath $ parseField "fontpath",+               liftM FontSize $ parseField "fontsize",+               liftM Group $ parseField "group",+               liftM HeadURL $ parseFields ["headURL", "headhref"],+               liftM HeadClip $ parseFieldBool "headclip",+               liftM HeadLabel $ parseField "headlabel",+               liftM HeadPort $ parseField "headport",+               liftM HeadTarget $ parseField "headtarget",+               liftM HeadTooltip $ parseField "headtooltip",+               liftM Height $ parseField "height", liftM ID $ parseField "id",+               liftM Image $ parseField "image",+               liftM ImageScale $ parseFieldDef UniformScale "imagescale",+               liftM LabelURL $ parseFields ["labelURL", "labelhref"],+               liftM LabelAngle $ parseField "labelangle",+               liftM LabelDistance $ parseField "labeldistance",+               liftM LabelFloat $ parseFieldBool "labelfloat",+               liftM LabelFontColor $ parseField "labelfontcolor",+               liftM LabelFontName $ parseField "labelfontname",+               liftM LabelFontSize $ parseField "labelfontsize",+               liftM LabelJust $ parseField "labeljust",+               liftM LabelLoc $ parseField "labelloc",+               liftM LabelTarget $ parseField "labeltarget",+               liftM LabelTooltip $ parseField "labeltooltip",+               liftM Label $ parseField "label",+               liftM Landscape $ parseFieldBool "landscape",+               liftM LayerSep $ parseField "layersep",+               liftM Layers $ parseField "layers",+               liftM Layer $ parseField "layer",+               liftM Layout $ parseField "layout", liftM Len $ parseField "len",+               liftM LevelsGap $ parseField "levelsgap",+               liftM Levels $ parseField "levels",+               liftM LHead $ parseField "lhead", liftM LPos $ parseField "lp",+               liftM LTail $ parseField "ltail",+               liftM Margin $ parseField "margin",+               liftM MaxIter $ parseField "maxiter",+               liftM MCLimit $ parseField "mclimit",+               liftM MinDist $ parseField "mindist",+               liftM MinLen $ parseField "minlen",+               liftM Model $ parseField "model", liftM Mode $ parseField "mode",+               liftM Mosek $ parseFieldBool "mosek",+               liftM NodeSep $ parseField "nodesep",+               liftM NoJustify $ parseFieldBool "nojustify",+               liftM Normalize $ parseFieldBool "normalize",+               liftM Nslimit1 $ parseField "nslimit1",+               liftM Nslimit $ parseField "nslimit",+               liftM Ordering $ parseField "ordering",+               liftM Orientation $ parseField "orientation",+               liftM OutputOrder $ parseField "outputorder",+               liftM OverlapScaling $ parseField "overlap_scaling",+               liftM Overlap $ parseFieldDef KeepOverlaps "overlap",+               liftM PackMode $ parseField "packmode",+               liftM Pack $ parseFieldDef DoPack "pack",+               liftM Pad $ parseField "pad", liftM PageDir $ parseField "pagedir",+               liftM Page $ parseField "page",+               liftM PenColor $ parseField "pencolor",+               liftM PenWidth $ parseField "penwidth",+               liftM Peripheries $ parseField "peripheries",+               liftM Pin $ parseFieldBool "pin", liftM Pos $ parseField "pos",+               liftM QuadTree $ parseFieldDef NormalQT "quadtree",+               liftM Quantum $ parseField "quantum",+               liftM RankDir $ parseField "rankdir",+               liftM RankSep $ parseField "ranksep",+               liftM Rank $ parseField "rank", liftM Ratio $ parseField "ratio",+               liftM Rects $ parseField "rects",+               liftM Regular $ parseFieldBool "regular",+               liftM ReMinCross $ parseFieldBool "remincross",+               liftM RepulsiveForce $ parseField "repulsiveforce",+               liftM Root $ parseFieldDef IsCentral "root",+               liftM Rotate $ parseField "rotate",+               liftM SameHead $ parseField "samehead",+               liftM SameTail $ parseField "sametail",+               liftM SamplePoints $ parseField "samplepoints",+               liftM SearchSize $ parseField "searchsize",+               liftM Sep $ parseField "sep",+               liftM ShapeFile $ parseField "shapefile",+               liftM Shape $ parseField "shape",+               liftM ShowBoxes $ parseField "showboxes",+               liftM Sides $ parseField "sides", liftM Size $ parseField "size",+               liftM Skew $ parseField "skew",+               liftM Smoothing $ parseField "smoothing",+               liftM SortV $ parseField "sortv",+               liftM Splines $ parseFieldDef SplineEdges "splines",+               liftM Start $ parseField "start",+               liftM StyleSheet $ parseField "stylesheet",+               liftM Style $ parseField "style",+               liftM TailURL $ parseFields ["tailURL", "tailhref"],+               liftM TailClip $ parseFieldBool "tailclip",+               liftM TailLabel $ parseField "taillabel",+               liftM TailPort $ parseField "tailport",+               liftM TailTarget $ parseField "tailtarget",+               liftM TailTooltip $ parseField "tailtooltip",+               liftM Target $ parseField "target",+               liftM Tooltip $ parseField "tooltip",+               liftM TrueColor $ parseFieldBool "truecolor",+               liftM Vertices $ parseField "vertices",+               liftM ViewPort $ parseField "viewport",+               liftM VoroMargin $ parseField "voro_margin",+               liftM Weight $ parseField "weight",+               liftM Width $ parseField "width", liftM Z $ parseField "z"]+        parse = parseUnqt+        parseList = parseUnqtList++usedByGraphs :: Attribute -> Bool+usedByGraphs Damping{} = True+usedByGraphs K{} = True+usedByGraphs URL{} = True+usedByGraphs Aspect{} = True+usedByGraphs Bb{} = True+usedByGraphs BgColor{} = True+usedByGraphs Center{} = True+usedByGraphs Charset{} = True+usedByGraphs ClusterRank{} = True+usedByGraphs ColorScheme{} = True+usedByGraphs Comment{} = True+usedByGraphs Compound{} = True+usedByGraphs Concentrate{} = True+usedByGraphs DefaultDist{} = True+usedByGraphs Dimen{} = True+usedByGraphs Dim{} = True+usedByGraphs DirEdgeConstraints{} = True+usedByGraphs DPI{} = True+usedByGraphs Epsilon{} = True+usedByGraphs ESep{} = True+usedByGraphs FontColor{} = True+usedByGraphs FontName{} = True+usedByGraphs FontNames{} = True+usedByGraphs FontPath{} = True+usedByGraphs FontSize{} = True+usedByGraphs ID{} = True+usedByGraphs LabelJust{} = True+usedByGraphs LabelLoc{} = True+usedByGraphs Label{} = True+usedByGraphs Landscape{} = True+usedByGraphs LayerSep{} = True+usedByGraphs Layers{} = True+usedByGraphs Layout{} = True+usedByGraphs LevelsGap{} = True+usedByGraphs Levels{} = True+usedByGraphs LPos{} = True+usedByGraphs Margin{} = True+usedByGraphs MaxIter{} = True+usedByGraphs MCLimit{} = True+usedByGraphs MinDist{} = True+usedByGraphs Model{} = True+usedByGraphs Mode{} = True+usedByGraphs Mosek{} = True+usedByGraphs NodeSep{} = True+usedByGraphs NoJustify{} = True+usedByGraphs Normalize{} = True+usedByGraphs Nslimit1{} = True+usedByGraphs Nslimit{} = True+usedByGraphs Ordering{} = True+usedByGraphs OutputOrder{} = True+usedByGraphs OverlapScaling{} = True+usedByGraphs Overlap{} = True+usedByGraphs PackMode{} = True+usedByGraphs Pack{} = True+usedByGraphs Pad{} = True+usedByGraphs PageDir{} = True+usedByGraphs Page{} = True+usedByGraphs QuadTree{} = True+usedByGraphs Quantum{} = True+usedByGraphs RankDir{} = True+usedByGraphs RankSep{} = True+usedByGraphs Ratio{} = True+usedByGraphs ReMinCross{} = True+usedByGraphs RepulsiveForce{} = True+usedByGraphs Root{} = True+usedByGraphs Rotate{} = True+usedByGraphs SearchSize{} = True+usedByGraphs Sep{} = True+usedByGraphs ShowBoxes{} = True+usedByGraphs Size{} = True+usedByGraphs Smoothing{} = True+usedByGraphs SortV{} = True+usedByGraphs Splines{} = True+usedByGraphs Start{} = True+usedByGraphs StyleSheet{} = True+usedByGraphs Target{} = True+usedByGraphs TrueColor{} = True+usedByGraphs ViewPort{} = True+usedByGraphs VoroMargin{} = True+usedByGraphs _ = False++usedByClusters :: Attribute -> Bool+usedByClusters K{} = True+usedByClusters URL{} = True+usedByClusters BgColor{} = True+usedByClusters ColorScheme{} = True+usedByClusters Color{} = True+usedByClusters FillColor{} = True+usedByClusters FontColor{} = True+usedByClusters FontName{} = True+usedByClusters FontSize{} = True+usedByClusters LabelJust{} = True+usedByClusters LabelLoc{} = True+usedByClusters Label{} = True+usedByClusters LPos{} = True+usedByClusters NoJustify{} = True+usedByClusters PenColor{} = True+usedByClusters PenWidth{} = True+usedByClusters Peripheries{} = True+usedByClusters Rank{} = True+usedByClusters SortV{} = True+usedByClusters Style{} = True+usedByClusters Target{} = True+usedByClusters Tooltip{} = True+usedByClusters _ = False++usedBySubGraphs :: Attribute -> Bool+usedBySubGraphs Rank{} = True+usedBySubGraphs _ = False++usedByNodes :: Attribute -> Bool+usedByNodes URL{} = True+usedByNodes ColorScheme{} = True+usedByNodes Color{} = True+usedByNodes Comment{} = True+usedByNodes Distortion{} = True+usedByNodes FillColor{} = True+usedByNodes FixedSize{} = True+usedByNodes FontColor{} = True+usedByNodes FontName{} = True+usedByNodes FontSize{} = True+usedByNodes Group{} = True+usedByNodes Height{} = True+usedByNodes ID{} = True+usedByNodes Image{} = True+usedByNodes ImageScale{} = True+usedByNodes LabelLoc{} = True+usedByNodes Label{} = True+usedByNodes Layer{} = True+usedByNodes Margin{} = True+usedByNodes NoJustify{} = True+usedByNodes Orientation{} = True+usedByNodes PenWidth{} = True+usedByNodes Peripheries{} = True+usedByNodes Pin{} = True+usedByNodes Pos{} = True+usedByNodes Rects{} = True+usedByNodes Regular{} = True+usedByNodes Root{} = True+usedByNodes SamplePoints{} = True+usedByNodes ShapeFile{} = True+usedByNodes Shape{} = True+usedByNodes ShowBoxes{} = True+usedByNodes Sides{} = True+usedByNodes Skew{} = True+usedByNodes SortV{} = True+usedByNodes Style{} = True+usedByNodes Target{} = True+usedByNodes Tooltip{} = True+usedByNodes Vertices{} = True+usedByNodes Width{} = True+usedByNodes Z{} = True+usedByNodes _ = False++usedByEdges :: Attribute -> Bool+usedByEdges URL{} = True+usedByEdges ArrowHead{} = True+usedByEdges ArrowSize{} = True+usedByEdges ArrowTail{} = True+usedByEdges ColorScheme{} = True+usedByEdges Color{} = True+usedByEdges Comment{} = True+usedByEdges Constraint{} = True+usedByEdges Decorate{} = True+usedByEdges Dir{} = True+usedByEdges EdgeURL{} = True+usedByEdges EdgeTarget{} = True+usedByEdges EdgeTooltip{} = True+usedByEdges FontColor{} = True+usedByEdges FontName{} = True+usedByEdges FontSize{} = True+usedByEdges HeadURL{} = True+usedByEdges HeadClip{} = True+usedByEdges HeadLabel{} = True+usedByEdges HeadPort{} = True+usedByEdges HeadTarget{} = True+usedByEdges HeadTooltip{} = True+usedByEdges ID{} = True+usedByEdges LabelURL{} = True+usedByEdges LabelAngle{} = True+usedByEdges LabelDistance{} = True+usedByEdges LabelFloat{} = True+usedByEdges LabelFontColor{} = True+usedByEdges LabelFontName{} = True+usedByEdges LabelFontSize{} = True+usedByEdges LabelTarget{} = True+usedByEdges LabelTooltip{} = True+usedByEdges Label{} = True+usedByEdges Layer{} = True+usedByEdges Len{} = True+usedByEdges LHead{} = True+usedByEdges LPos{} = True+usedByEdges LTail{} = True+usedByEdges MinLen{} = True+usedByEdges NoJustify{} = True+usedByEdges PenWidth{} = True+usedByEdges Pos{} = True+usedByEdges SameHead{} = True+usedByEdges SameTail{} = True+usedByEdges ShowBoxes{} = True+usedByEdges Style{} = True+usedByEdges TailURL{} = True+usedByEdges TailClip{} = True+usedByEdges TailLabel{} = True+usedByEdges TailPort{} = True+usedByEdges TailTarget{} = True+usedByEdges TailTooltip{} = True+usedByEdges Target{} = True+usedByEdges Tooltip{} = True+usedByEdges Weight{} = True+usedByEdges _ = False++type EscString = String++newtype URL = UStr{urlString :: EscString}+                deriving (Eq, Ord, Show, Read)++instance PrintDot URL where+        unqtDot = wrap (char '<') (char '>') . text . urlString++instance ParseDot URL where+        parseUnqt+          = liftM UStr $+              bracket (character open) (character close)+                (many1 $ satisfy ((/=) close))+          where open = '<'+                close = '>'+        parse = parseUnqt++newtype ArrowType = AType [(ArrowModifier, ArrowShape)]+                      deriving (Eq, Ord, Show, Read)++box, crow, diamond, dotArrow, inv, noArrow, normal, tee, vee ::+     ArrowType++oDot, invDot, invODot, oBox, oDiamond :: ArrowType++eDiamond, openArr, halfOpen, emptyArr, invEmpty :: ArrowType+normal = AType [(noMods, Normal)]+inv = AType [(noMods, Inv)]+dotArrow = AType [(noMods, DotArrow)]+invDot = AType [(noMods, Inv), (noMods, DotArrow)]+oDot = AType [(ArrMod OpenArrow BothSides, DotArrow)]+invODot = AType [(noMods, Inv), (openMod, DotArrow)]+noArrow = AType [(noMods, NoArrow)]+tee = AType [(noMods, Tee)]+emptyArr = AType [(openMod, Normal)]+invEmpty = AType [(noMods, Inv), (openMod, Normal)]+diamond = AType [(noMods, Diamond)]+oDiamond = AType [(openMod, Diamond)]+eDiamond = oDiamond+crow = AType [(noMods, Crow)]+box = AType [(noMods, Box)]+oBox = AType [(openMod, Box)]+openArr = vee+halfOpen = AType [(ArrMod FilledArrow LeftSide, Vee)]+vee = AType [(noMods, Vee)]++instance PrintDot ArrowType where+        unqtDot (AType mas) = hcat $ map appMod mas+          where appMod (m, a) = unqtDot m <> unqtDot a++instance ParseDot ArrowType where+        parseUnqt+          = do mas <- many1 $+                        do m <- parseUnqt+                           a <- parseUnqt+                           return (m, a)+               return $ AType mas+              `onFail` specialArrowParse++specialArrowParse :: Parse ArrowType+specialArrowParse+  = oneOf+      [stringRep eDiamond "ediamond", stringRep openArr "open",+       stringRep halfOpen "halfopen", stringRep emptyArr "empty",+       stringRep invEmpty "invempty"]++data ArrowShape = Box+                | Crow+                | Diamond+                | DotArrow+                | Inv+                | NoArrow+                | Normal+                | Tee+                | Vee+                    deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowShape where+        unqtDot Box = unqtDot "box"+        unqtDot Crow = unqtDot "crow"+        unqtDot Diamond = unqtDot "diamond"+        unqtDot DotArrow = unqtDot "dot"+        unqtDot Inv = unqtDot "inv"+        unqtDot NoArrow = unqtDot "none"+        unqtDot Normal = unqtDot "normal"+        unqtDot Tee = unqtDot "tee"+        unqtDot Vee = unqtDot "vee"++instance ParseDot ArrowShape where+        parseUnqt+          = oneOf+              [stringRep Box "box", stringRep Crow "crow",+               stringRep Diamond "diamond", stringRep DotArrow "dot",+               stringRep Inv "inv", stringRep NoArrow "none",+               stringRep Normal "normal", stringRep Tee "tee",+               stringRep Vee "vee"]++data ArrowModifier = ArrMod{arrowFill :: ArrowFill,+                            arrowSide :: ArrowSide}+                       deriving (Eq, Ord, Show, Read)++noMods :: ArrowModifier+noMods = ArrMod FilledArrow BothSides++openMod :: ArrowModifier+openMod = ArrMod OpenArrow BothSides++instance PrintDot ArrowModifier where+        unqtDot (ArrMod f s) = unqtDot f <> unqtDot s++instance ParseDot ArrowModifier where+        parseUnqt+          = do f <- parseUnqt+               s <- parseUnqt+               return $ ArrMod f s++data ArrowFill = OpenArrow+               | FilledArrow+                   deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowFill where+        unqtDot OpenArrow = char 'o'+        unqtDot FilledArrow = empty++instance ParseDot ArrowFill where+        parseUnqt+          = liftM (bool FilledArrow OpenArrow . isJust) $+              optional (character 'o')+        parse = parseUnqt++data ArrowSide = LeftSide+               | RightSide+               | BothSides+                   deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowSide where+        unqtDot LeftSide = char 'l'+        unqtDot RightSide = char 'r'+        unqtDot BothSides = empty++instance ParseDot ArrowSide where+        parseUnqt+          = liftM getSideType $ optional (oneOf $ map character ['l', 'r'])+          where getSideType+                  = maybe BothSides (bool RightSide LeftSide . (==) 'l')+        parse = parseUnqt++data AspectType = RatioOnly Double+                | RatioPassCount Double Int+                    deriving (Eq, Ord, Show, Read)++instance PrintDot AspectType where+        unqtDot (RatioOnly r) = unqtDot r+        unqtDot (RatioPassCount r p) = commaDel r p+        toDot at@RatioOnly{} = unqtDot at+        toDot at@RatioPassCount{} = doubleQuotes $ unqtDot at++instance ParseDot AspectType where+        parseUnqt+          = liftM (uncurry RatioPassCount) commaSepUnqt `onFail`+              liftM RatioOnly parseUnqt+        parse+          = quotedParse (liftM (uncurry RatioPassCount) commaSepUnqt)+              `onFail` liftM RatioOnly parse++data Rect = Rect Point Point+              deriving (Eq, Ord, Show, Read)++instance PrintDot Rect where+        unqtDot (Rect p1 p2) = commaDel p1 p2+        toDot = doubleQuotes . unqtDot++instance ParseDot Rect where+        parseUnqt = liftM (uncurry Rect) commaSepUnqt+        parse = quotedParse parseUnqt++data ClusterMode = Local+                 | Global+                 | NoCluster+                     deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ClusterMode where+        unqtDot Local = unqtDot "local"+        unqtDot Global = unqtDot "global"+        unqtDot NoCluster = unqtDot "none"++instance ParseDot ClusterMode where+        parseUnqt+          = oneOf+              [stringRep Local "local", stringRep Global "global",+               stringRep NoCluster "none"]++data DirType = Forward+             | Back+             | Both+             | NoDir+                 deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot DirType where+        unqtDot Forward = unqtDot "forward"+        unqtDot Back = unqtDot "back"+        unqtDot Both = unqtDot "both"+        unqtDot NoDir = unqtDot "none"++instance ParseDot DirType where+        parseUnqt+          = oneOf+              [stringRep Forward "forward", stringRep Back "back",+               stringRep Both "both", stringRep NoDir "none"]++data DEConstraints = EdgeConstraints+                   | NoConstraints+                   | HierConstraints+                       deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot DEConstraints where+        unqtDot EdgeConstraints = unqtDot True+        unqtDot NoConstraints = unqtDot False+        unqtDot HierConstraints = text "hier"++instance ParseDot DEConstraints where+        parseUnqt+          = liftM (bool NoConstraints EdgeConstraints) parse `onFail`+              stringRep HierConstraints "hier"++data DPoint = DVal Double+            | PVal Point+                deriving (Eq, Ord, Show, Read)++instance PrintDot DPoint where+        unqtDot (DVal d) = unqtDot d+        unqtDot (PVal p) = unqtDot p+        toDot (DVal d) = toDot d+        toDot (PVal p) = toDot p++instance ParseDot DPoint where+        parseUnqt = liftM PVal parseUnqt `onFail` liftM DVal parseUnqt+        parse = liftM PVal parse `onFail` liftM DVal parse++data ModeType = Major+              | KK+              | Hier+              | IpSep+                  deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ModeType where+        unqtDot Major = text "major"+        unqtDot KK = text "KK"+        unqtDot Hier = text "hier"+        unqtDot IpSep = text "ipsep"++instance ParseDot ModeType where+        parseUnqt+          = oneOf+              [stringRep Major "major", stringRep KK "KK", stringRep Hier "hier",+               stringRep IpSep "ipsep"]++data Model = ShortPath+           | SubSet+           | Circuit+               deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Model where+        unqtDot ShortPath = text "shortpath"+        unqtDot SubSet = text "subset"+        unqtDot Circuit = text "circuit"++instance ParseDot Model where+        parseUnqt+          = oneOf+              [stringRep ShortPath "shortpath", stringRep SubSet "subset",+               stringRep Circuit "circuit"]++data Label = StrLabel EscString+           | URLLabel URL+               deriving (Eq, Ord, Show, Read)++instance PrintDot Label where+        unqtDot (StrLabel s) = unqtDot s+        unqtDot (URLLabel u) = unqtDot u+        toDot (StrLabel s) = toDot s+        toDot (URLLabel u) = toDot u++instance ParseDot Label where+        parseUnqt+          = liftM StrLabel parseUnqt `onFail` liftM URLLabel parseUnqt+        parse = liftM StrLabel parse `onFail` liftM URLLabel parse++data Point = Point Int Int+           | PointD Double Double+               deriving (Eq, Ord, Show, Read)++instance PrintDot Point where+        unqtDot (Point x y) = commaDel x y+        unqtDot (PointD x y) = commaDel x y+        toDot = doubleQuotes . unqtDot+        unqtListToDot = hsep . map unqtDot+        listToDot = doubleQuotes . unqtListToDot++instance ParseDot Point where+        parseUnqt+          = intDblPoint `onFail` liftM (uncurry Point) commaSepUnqt `onFail`+              liftM (uncurry PointD) commaSepUnqt+          where intDblPoint+                  = liftM (uncurry PointD . first fI) $+                      commaSep' parseUnqt parseStrictFloat+                +                fI :: Int -> Double+                fI = fromIntegral+        parse = quotedParse parseUnqt+        parseUnqtList = sepBy1 parseUnqt whitespace++data Overlap = KeepOverlaps+             | RemoveOverlaps+             | ScaleOverlaps+             | ScaleXYOverlaps+             | PrismOverlap (Maybe Int)+             | CompressOverlap+             | VpscOverlap+             | IpsepOverlap+                 deriving (Eq, Ord, Show, Read)++instance PrintDot Overlap where+        unqtDot KeepOverlaps = unqtDot True+        unqtDot RemoveOverlaps = unqtDot False+        unqtDot ScaleOverlaps = text "scale"+        unqtDot ScaleXYOverlaps = text "scalexy"+        unqtDot (PrismOverlap i)+          = maybe id (flip (<>) . unqtDot) i $ text "prism"+        unqtDot CompressOverlap = text "compress"+        unqtDot VpscOverlap = text "vpsc"+        unqtDot IpsepOverlap = text "ipsep"++instance ParseDot Overlap where+        parseUnqt+          = oneOf+              [stringRep KeepOverlaps "true", stringRep RemoveOverlaps "false",+               stringRep ScaleXYOverlaps "scalexy",+               stringRep ScaleOverlaps "scale",+               string "prism" >> liftM PrismOverlap (optional parse),+               stringRep CompressOverlap "compress", stringRep VpscOverlap "vpsc",+               stringRep IpsepOverlap "ipsep"]++data LayerRange = LRID LayerID+                | LRS LayerID String LayerID+                    deriving (Eq, Ord, Show, Read)++instance PrintDot LayerRange where+        unqtDot (LRID lid) = unqtDot lid+        unqtDot (LRS id1 s id2) = unqtDot id1 <> unqtDot s <> unqtDot id2+        toDot (LRID lid) = toDot lid+        toDot lrs = doubleQuotes $ unqtDot lrs++instance ParseDot LayerRange where+        parseUnqt+          = do id1 <- parseUnqt+               s <- parseLayerSep+               id2 <- parseUnqt+               return $ LRS id1 s id2+              `onFail` liftM LRID parseUnqt+        parse+          = quotedParse+              (do id1 <- parseUnqt+                  s <- parseLayerSep+                  id2 <- parseUnqt+                  return $ LRS id1 s id2)+              `onFail` liftM LRID parse++parseLayerSep :: Parse String+parseLayerSep = many1 . oneOf $ map character defLayerSep++defLayerSep :: [Char]+defLayerSep = [' ', ':', '\t']++parseLayerName :: Parse String+parseLayerName+  = many1 . orQuote $+      satisfy (liftM2 (&&) notLayerSep ((/=) quoteChar))++parseLayerName' :: Parse String+parseLayerName' = stringBlock `onFail` quotedParse parseLayerName++notLayerSep :: Char -> Bool+notLayerSep = flip notElem defLayerSep++data LayerID = AllLayers+             | LRInt Int+             | LRName String+                 deriving (Eq, Ord, Show, Read)++instance PrintDot LayerID where+        unqtDot AllLayers = text "all"+        unqtDot (LRInt n) = unqtDot n+        unqtDot (LRName nm) = unqtDot nm+        toDot (LRName nm) = toDot nm+        toDot li = unqtDot li++instance ParseDot LayerID where+        parseUnqt = liftM checkLayerName parseLayerName+        parse+          = oneOf [liftM checkLayerName parseLayerName', liftM LRInt parse]++checkLayerName :: String -> LayerID+checkLayerName str = maybe checkAll LRInt $ stringToInt str+  where checkAll+          = if map toLower str == "all" then AllLayers else LRName str++data LayerList = LL String [(String, String)]+                   deriving (Eq, Ord, Show, Read)++instance PrintDot LayerList where+        unqtDot (LL l1 ols) = unqtDot l1 <> hcat (map subLL ols)+          where subLL (s, l) = unqtDot s <> unqtDot l+        toDot (LL l1 []) = toDot l1+        toDot ll = doubleQuotes $ unqtDot ll++instance ParseDot LayerList where+        parseUnqt+          = do l1 <- parseLayerName+               ols <- many $+                        do s <- parseLayerSep+                           lnm <- parseLayerName+                           return (s, lnm)+               return $ LL l1 ols+        parse+          = quotedParse parseUnqt `onFail`+              liftM (flip LL []) (parseLayerName' `onFail` numString)++data OutputMode = BreadthFirst+                | NodesFirst+                | EdgesFirst+                    deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot OutputMode where+        unqtDot BreadthFirst = text "breadthfirst"+        unqtDot NodesFirst = text "nodesfirst"+        unqtDot EdgesFirst = text "edgesfirst"++instance ParseDot OutputMode where+        parseUnqt+          = oneOf+              [stringRep BreadthFirst "breadthfirst",+               stringRep NodesFirst "nodesfirst",+               stringRep EdgesFirst "edgesfirst"]++data Pack = DoPack+          | DontPack+          | PackMargin Int+              deriving (Eq, Ord, Show, Read)++instance PrintDot Pack where+        unqtDot DoPack = unqtDot True+        unqtDot DontPack = unqtDot False+        unqtDot (PackMargin m) = unqtDot m++instance ParseDot Pack where+        parseUnqt+          = oneOf+              [liftM PackMargin parseUnqt, liftM (bool DontPack DoPack) onlyBool]++data PackMode = PackNode+              | PackClust+              | PackGraph+              | PackArray Bool Bool (Maybe Int)+                  deriving (Eq, Ord, Show, Read)++instance PrintDot PackMode where+        unqtDot PackNode = text "node"+        unqtDot PackClust = text "clust"+        unqtDot PackGraph = text "graph"+        unqtDot (PackArray c u mi)+          = addNum . isU . isC . isUnder $ text "array"+          where addNum = maybe id (flip (<>) . unqtDot) mi+                isUnder = if c || u then flip (<>) $ char '_' else id+                isC = if c then flip (<>) $ char 'c' else id+                isU = if u then flip (<>) $ char 'u' else id++instance ParseDot PackMode where+        parseUnqt+          = oneOf+              [stringRep PackNode "node", stringRep PackClust "clust",+               stringRep PackGraph "graph",+               do string "array"+                  mcu <- optional $+                           do character '_'+                              many1 $ satisfy isCU+                  let c = hasCharacter mcu 'c'+                      u = hasCharacter mcu 'u'+                  mi <- optional parseUnqt+                  return $ PackArray c u mi]+          where hasCharacter ms c = maybe False (elem c) ms+                isCU = flip elem ['c', 'u']++data Pos = PointPos Point+         | SplinePos [Spline]+             deriving (Eq, Ord, Show, Read)++instance PrintDot Pos where+        unqtDot (PointPos p) = unqtDot p+        unqtDot (SplinePos ss) = unqtDot ss+        toDot (PointPos p) = toDot p+        toDot (SplinePos ss) = toDot ss++instance ParseDot Pos where+        parseUnqt+          = do splns <- parseUnqt+               case splns of+                   [Spline Nothing Nothing [p]] -> return $ PointPos p+                   _ -> return $ SplinePos splns+        parse = quotedParse parseUnqt++data EdgeType = SplineEdges+              | LineEdges+              | NoEdges+              | PolyLine+              | CompoundEdge+                  deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot EdgeType where+        unqtDot SplineEdges = toDot True+        unqtDot LineEdges = toDot False+        unqtDot NoEdges = empty+        unqtDot PolyLine = text "polyline"+        unqtDot CompoundEdge = text "compound"+        toDot NoEdges = doubleQuotes empty+        toDot et = unqtDot et++instance ParseDot EdgeType where+        parseUnqt+          = oneOf+              [liftM (bool LineEdges SplineEdges) parse,+               stringRep SplineEdges "spline", stringRep LineEdges "line",+               stringRep PolyLine "polyline", stringRep CompoundEdge "compound"]+        parse = stringRep NoEdges "\"\"" `onFail` optionalQuoted parseUnqt++data PageDir = Bl+             | Br+             | Tl+             | Tr+             | Rb+             | Rt+             | Lb+             | Lt+                 deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot PageDir where+        unqtDot Bl = text "BL"+        unqtDot Br = text "BR"+        unqtDot Tl = text "TL"+        unqtDot Tr = text "TR"+        unqtDot Rb = text "RB"+        unqtDot Rt = text "RT"+        unqtDot Lb = text "LB"+        unqtDot Lt = text "LT"++instance ParseDot PageDir where+        parseUnqt+          = oneOf+              [stringRep Bl "BL", stringRep Br "BR", stringRep Tl "TL",+               stringRep Tr "TR", stringRep Rb "RB", stringRep Rt "RT",+               stringRep Lb "LB", stringRep Lt "LT"]++data Spline = Spline (Maybe Point) (Maybe Point) [Point]+                deriving (Eq, Ord, Show, Read)++instance PrintDot Spline where+        unqtDot (Spline ms me ps) = addS . addE . hsep $ map unqtDot ps+          where addP t = maybe id ((<+>) . commaDel t)+                addS = addP 's' ms+                addE = addP 'e' me+        toDot = doubleQuotes . unqtDot+        unqtListToDot = hcat . punctuate semi . map unqtDot+        listToDot = doubleQuotes . unqtListToDot++instance ParseDot Spline where+        parseUnqt+          = do ms <- parseP 's'+               me <- parseP 'e'+               ps <- sepBy1 parseUnqt whitespace+               return $ Spline ms me ps+          where parseP t+                  = optional $+                      do character t+                         parseComma+                         parseUnqt `discard` whitespace+        parse = quotedParse parseUnqt+        parseUnqtList = sepBy1 parseUnqt (character ';')++data QuadType = NormalQT+              | FastQT+              | NoQT+                  deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot QuadType where+        unqtDot NormalQT = text "normal"+        unqtDot FastQT = text "fast"+        unqtDot NoQT = text "none"++instance ParseDot QuadType where+        parseUnqt+          = oneOf+              [stringRep NormalQT "normal", stringRep FastQT "fast",+               stringRep NoQT "none", character '2' >> return FastQT,+               liftM (bool NoQT NormalQT) parse]++data Root = IsCentral+          | NotCentral+          | NodeName String+              deriving (Eq, Ord, Show, Read)++instance PrintDot Root where+        unqtDot IsCentral = unqtDot True+        unqtDot NotCentral = unqtDot False+        unqtDot (NodeName n) = unqtDot n+        toDot (NodeName n) = toDot n+        toDot r = unqtDot r++instance ParseDot Root where+        parseUnqt+          = liftM (bool NotCentral IsCentral) onlyBool `onFail`+              liftM NodeName parseUnqt+        parse+          = optionalQuoted (liftM (bool NotCentral IsCentral) onlyBool)+              `onFail` liftM NodeName parse++data RankType = SameRank+              | MinRank+              | SourceRank+              | MaxRank+              | SinkRank+                  deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot RankType where+        unqtDot SameRank = text "same"+        unqtDot MinRank = text "min"+        unqtDot SourceRank = text "source"+        unqtDot MaxRank = text "max"+        unqtDot SinkRank = text "sink"++instance ParseDot RankType where+        parseUnqt+          = oneOf+              [stringRep SameRank "same", stringRep MinRank "min",+               stringRep SourceRank "source", stringRep MaxRank "max",+               stringRep SinkRank "sink"]++data RankDir = FromTop+             | FromLeft+             | FromBottom+             | FromRight+                 deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot RankDir where+        unqtDot FromTop = text "TB"+        unqtDot FromLeft = text "LR"+        unqtDot FromBottom = text "BT"+        unqtDot FromRight = text "RL"++instance ParseDot RankDir where+        parseUnqt+          = oneOf+              [stringRep FromTop "TB", stringRep FromLeft "LR",+               stringRep FromBottom "BT", stringRep FromRight "RL"]++data Shape = BoxShape+           | Polygon+           | Ellipse+           | Circle+           | PointShape+           | Egg+           | Triangle+           | PlainText+           | DiamondShape+           | Trapezium+           | Parallelogram+           | House+           | Pentagon+           | Hexagon+           | Septagon+           | Octagon+           | DoubleCircle+           | DoubleOctagon+           | TripleOctagon+           | InvTriangle+           | InvTrapezium+           | InvHouse+           | MDiamond+           | MSquare+           | MCircle+           | Note+           | Tab+           | Folder+           | Box3D+           | Component+               deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Shape where+        unqtDot BoxShape = text "box"+        unqtDot Polygon = text "polygon"+        unqtDot Ellipse = text "ellipse"+        unqtDot Circle = text "circle"+        unqtDot PointShape = text "point"+        unqtDot Egg = text "egg"+        unqtDot Triangle = text "triangle"+        unqtDot PlainText = text "plaintext"+        unqtDot DiamondShape = text "diamond"+        unqtDot Trapezium = text "trapezium"+        unqtDot Parallelogram = text "parallelogram"+        unqtDot House = text "house"+        unqtDot Pentagon = text "pentagon"+        unqtDot Hexagon = text "hexagon"+        unqtDot Septagon = text "septagon"+        unqtDot Octagon = text "octagon"+        unqtDot DoubleCircle = text "doublecircle"+        unqtDot DoubleOctagon = text "doubleoctagon"+        unqtDot TripleOctagon = text "tripleoctagon"+        unqtDot InvTriangle = text "invtriangle"+        unqtDot InvTrapezium = text "invtrapezium"+        unqtDot InvHouse = text "invhouse"+        unqtDot MDiamond = text "Mdiamond"+        unqtDot MSquare = text "Msquare"+        unqtDot MCircle = text "Mcircle"+        unqtDot Note = text "note"+        unqtDot Tab = text "tab"+        unqtDot Folder = text "folder"+        unqtDot Box3D = text "box3d"+        unqtDot Component = text "component"++instance ParseDot Shape where+        parseUnqt+          = oneOf+              [stringRep Box3D "box3d",+               stringReps BoxShape ["box", "rectangle", "rect"],+               stringRep Polygon "polygon", stringRep Ellipse "ellipse",+               stringRep Circle "circle", stringRep PointShape "point",+               stringRep Egg "egg", stringRep Triangle "triangle",+               stringReps PlainText ["plaintext", "none"],+               stringRep DiamondShape "diamond", stringRep Trapezium "trapezium",+               stringRep Parallelogram "parallelogram", stringRep House "house",+               stringRep Pentagon "pentagon", stringRep Hexagon "hexagon",+               stringRep Septagon "septagon", stringRep Octagon "octagon",+               stringRep DoubleCircle "doublecircle",+               stringRep DoubleOctagon "doubleoctagon",+               stringRep TripleOctagon "tripleoctagon",+               stringRep InvTriangle "invtriangle",+               stringRep InvTrapezium "invtrapezium",+               stringRep InvHouse "invhouse", stringRep MDiamond "Mdiamond",+               stringRep MSquare "Msquare", stringRep MCircle "Mcircle",+               stringRep Note "note", stringRep Tab "tab",+               stringRep Folder "folder", stringRep Component "component"]++data SmoothType = NoSmooth+                | AvgDist+                | GraphDist+                | PowerDist+                | RNG+                | Spring+                | TriangleSmooth+                    deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot SmoothType where+        unqtDot NoSmooth = text "none"+        unqtDot AvgDist = text "avg_dist"+        unqtDot GraphDist = text "graph_dist"+        unqtDot PowerDist = text "power_dist"+        unqtDot RNG = text "rng"+        unqtDot Spring = text "spring"+        unqtDot TriangleSmooth = text "triangle"++instance ParseDot SmoothType where+        parseUnqt+          = oneOf+              [stringRep NoSmooth "none", stringRep AvgDist "avg_dist",+               stringRep GraphDist "graph_dist", stringRep PowerDist "power_dist",+               stringRep RNG "rng", stringRep Spring "spring",+               stringRep TriangleSmooth "triangle"]++data StartType = StartStyle STStyle+               | StartSeed Int+               | StartStyleSeed STStyle Int+                   deriving (Eq, Ord, Show, Read)++instance PrintDot StartType where+        unqtDot (StartStyle ss) = unqtDot ss+        unqtDot (StartSeed s) = unqtDot s+        unqtDot (StartStyleSeed ss s) = unqtDot ss <> unqtDot s++instance ParseDot StartType where+        parseUnqt+          = oneOf+              [do ss <- parseUnqt+                  s <- parseUnqt+                  return $ StartStyleSeed ss s,+               liftM StartStyle parseUnqt, liftM StartSeed parseUnqt]++data STStyle = RegularStyle+             | SelfStyle+             | RandomStyle+                 deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot STStyle where+        unqtDot RegularStyle = text "regular"+        unqtDot SelfStyle = text "self"+        unqtDot RandomStyle = text "random"++instance ParseDot STStyle where+        parseUnqt+          = oneOf+              [stringRep RegularStyle "regular", stringRep SelfStyle "self",+               stringRep RandomStyle "random"]++data StyleItem = SItem StyleName [String]+                   deriving (Eq, Ord, Show, Read)++instance PrintDot StyleItem where+        unqtDot (SItem nm args)+          | null args = dnm+          | otherwise = dnm <> parens args'+          where dnm = unqtDot nm+                args' = hcat . punctuate comma $ map unqtDot args+        toDot si@(SItem nm args)+          | null args = toDot nm+          | otherwise = doubleQuotes $ unqtDot si+        unqtListToDot = hcat . punctuate comma . map unqtDot+        listToDot [SItem nm []] = toDot nm+        listToDot sis = doubleQuotes $ unqtListToDot sis++instance ParseDot StyleItem where+        parseUnqt+          = do nm <- parseUnqt+               args <- tryParseList' parseArgs+               return $ SItem nm args+        parse+          = quotedParse (liftM2 SItem parseUnqt parseArgs) `onFail`+              liftM (flip SItem []) parse+        parseUnqtList = sepBy1 parseUnqt parseComma+        parseList = quotedParse parseUnqtList `onFail` liftM return parse++parseArgs :: Parse [String]+parseArgs+  = bracketSep (character '(') parseComma (character ')')+      parseStyleName++data StyleName = Dashed+               | Dotted+               | Solid+               | Bold+               | Invisible+               | Filled+               | Diagonals+               | Rounded+               | DD String+                   deriving (Eq, Ord, Show, Read)++instance PrintDot StyleName where+        unqtDot Dashed = text "dashed"+        unqtDot Dotted = text "dotted"+        unqtDot Solid = text "solid"+        unqtDot Bold = text "bold"+        unqtDot Invisible = text "invis"+        unqtDot Filled = text "filled"+        unqtDot Diagonals = text "diagonals"+        unqtDot Rounded = text "rounded"+        unqtDot (DD nm) = unqtDot nm+        toDot (DD nm) = toDot nm+        toDot sn = unqtDot sn++instance ParseDot StyleName where+        parseUnqt = liftM checkDD parseStyleName+        parse+          = liftM checkDD $+              quotedParse parseStyleName `onFail`+                do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ', ']']+                   r <- many (orQuote $ noneOf [quoteChar, '(', ')', ',', ']'])+                   return $ f : r++checkDD :: String -> StyleName+checkDD str+  = case map toLower str of+        "dashed" -> Dashed+        "dotted" -> Dotted+        "solid" -> Solid+        "bold" -> Bold+        "invis" -> Invisible+        "filled" -> Filled+        "diagonals" -> Diagonals+        "rounded" -> Rounded+        _ -> DD str++parseStyleName :: Parse String+parseStyleName+  = do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ']+       r <- many (orQuote $ noneOf [quoteChar, '(', ')', ','])+       return $ f : r++newtype PortPos = PP CompassPoint+                    deriving (Eq, Ord, Show, Read)++instance PrintDot PortPos where+        unqtDot (PP cp) = unqtDot cp+        toDot (PP cp) = toDot cp++instance ParseDot PortPos where+        parseUnqt = liftM PP parseUnqt++data CompassPoint = North+                  | NorthEast+                  | East+                  | SouthEast+                  | South+                  | SouthWest+                  | West+                  | NorthWest+                  | CenterPoint+                  | NoCP+                      deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot CompassPoint where+        unqtDot NorthEast = text "ne"+        unqtDot NorthWest = text "nw"+        unqtDot North = text "n"+        unqtDot East = text "e"+        unqtDot SouthEast = text "se"+        unqtDot SouthWest = text "sw"+        unqtDot South = text "s"+        unqtDot West = text "w"+        unqtDot CenterPoint = text "c"+        unqtDot NoCP = text "_"++instance ParseDot CompassPoint where+        parseUnqt+          = oneOf+              [stringRep NorthEast "ne", stringRep NorthWest "nw",+               stringRep North "n", stringRep SouthEast "se",+               stringRep SouthWest "sw", stringRep South "s", stringRep East "e",+               stringRep West "w", stringRep CenterPoint "c", stringRep NoCP "_"]++data ViewPort = VP{wVal :: Double, hVal :: Double, zVal :: Double,+                   focus :: Maybe FocusType}+                  deriving (Eq, Ord, Show, Read)++instance PrintDot ViewPort where+        unqtDot vp = maybe vs ((<>) (vs <> comma) . unqtDot) $ focus vp+          where vs+                  = hcat . punctuate comma $+                      map (unqtDot . flip ($) vp) [wVal, hVal, zVal]+        toDot = doubleQuotes . unqtDot++instance ParseDot ViewPort where+        parseUnqt+          = do wv <- parseUnqt+               parseComma+               hv <- parseUnqt+               parseComma+               zv <- parseUnqt+               mf <- optional $ parseComma >> parseUnqt+               return $ VP wv hv zv mf+        parse = quotedParse parseUnqt++data FocusType = XY Point+               | NodeFocus String+                   deriving (Eq, Ord, Show, Read)++instance PrintDot FocusType where+        unqtDot (XY p) = unqtDot p+        unqtDot (NodeFocus nm) = unqtDot nm+        toDot (XY p) = toDot p+        toDot (NodeFocus nm) = toDot nm++instance ParseDot FocusType where+        parseUnqt = liftM XY parseUnqt `onFail` liftM NodeFocus parseUnqt+        parse = liftM XY parse `onFail` liftM NodeFocus parse++data VerticalPlacement = VTop+                       | VCenter+                       | VBottom+                           deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot VerticalPlacement where+        unqtDot VTop = char 't'+        unqtDot VCenter = char 'c'+        unqtDot VBottom = char 'b'++instance ParseDot VerticalPlacement where+        parseUnqt+          = oneOf+              [stringRep VTop "t", stringRep VCenter "c", stringRep VBottom "b"]++data ScaleType = UniformScale+               | NoScale+               | FillWidth+               | FillHeight+               | FillBoth+                   deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ScaleType where+        unqtDot UniformScale = unqtDot True+        unqtDot NoScale = unqtDot False+        unqtDot FillWidth = text "width"+        unqtDot FillHeight = text "height"+        unqtDot FillBoth = text "both"++instance ParseDot ScaleType where+        parseUnqt+          = oneOf+              [stringRep UniformScale "true", stringRep NoScale "false",+               stringRep FillWidth "width", stringRep FillHeight "height",+               stringRep FillBoth "both"]++data Justification = JLeft+                   | JRight+                   | JCenter+                       deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Justification where+        unqtDot JLeft = char 'l'+        unqtDot JRight = char 'r'+        unqtDot JCenter = char 'c'++instance ParseDot Justification where+        parseUnqt+          = oneOf+              [stringRep JLeft "l", stringRep JRight "r", stringRep JCenter "c"]++data Ratios = AspectRatio Double+            | FillRatio+            | CompressRatio+            | ExpandRatio+            | AutoRatio+                deriving (Eq, Ord, Show, Read)++instance PrintDot Ratios where+        unqtDot (AspectRatio r) = unqtDot r+        unqtDot FillRatio = text "fill"+        unqtDot CompressRatio = text "compress"+        unqtDot ExpandRatio = text "expand"+        unqtDot AutoRatio = text "auto"++instance ParseDot Ratios where+        parseUnqt+          = oneOf+              [liftM AspectRatio parseUnqt, stringRep FillRatio "fill",+               stringRep CompressRatio "compress", stringRep ExpandRatio "expand",+               stringRep AutoRatio "auto"]
+ tests/examples/BadStringLineBreak.hs view
@@ -0,0 +1,5 @@+module BadStringLineBreak where++main = print $ "hello" ++ "world+-- any random junk that goes here gets added onto the character count+-- and the quote ends it with some garbage "
+ tests/examples/BadStringLineBreak.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BadStringLineBreak.hs" 3 27) "Improperly terminated string"
+ tests/examples/BadStringLineBreak.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/BadStringLineBreak.hs" 3 27)+  "Improperly terminated string"
+ tests/examples/BadStringLineBreak.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BadStringLineBreak.hs" 3 27) "Improperly terminated string"
+ tests/examples/BadStringLineBreak.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BadStringLineBreak.hs" 3 27) "Improperly terminated string"
+ tests/examples/BangPatterns.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE BangPatterns #-}+module BangPatterns where++firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int+firstnonspace !ptr !n !m+    | n >= m    = return n+    | otherwise = do w <- peekElemOff ptr n+                     if isSpaceWord8 w then firstnonspace ptr (n+1) m else return n
+ tests/examples/BangPatterns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BangPatterns.hs.parser.golden view
@@ -0,0 +1,768 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/BangPatterns.hs" 1 1 1 1+            , SrcSpan "tests/examples/BangPatterns.hs" 2 1 2 1+            , SrcSpan "tests/examples/BangPatterns.hs" 2 1 2 1+            , SrcSpan "tests/examples/BangPatterns.hs" 4 1 4 1+            , SrcSpan "tests/examples/BangPatterns.hs" 5 1 5 1+            , SrcSpan "tests/examples/BangPatterns.hs" 9 1 9 1+            , SrcSpan "tests/examples/BangPatterns.hs" 9 1 9 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 2 1 2 26+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/BangPatterns.hs" 2 1 2 7+                  , SrcSpan "tests/examples/BangPatterns.hs" 2 21 2 26+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 2 8 2 20+                 , srcInfoPoints = []+                 }+               "BangPatterns")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/BangPatterns.hs" 1 1 1 13+                , SrcSpan "tests/examples/BangPatterns.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "BangPatterns"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 1 4 51+            , srcInfoPoints =+                [ SrcSpan "tests/examples/BangPatterns.hs" 4 15 4 17 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 1 4 14+                , srcInfoPoints = []+                }+              "firstnonspace"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 51+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/BangPatterns.hs" 4 28 4 30 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 27+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 21+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 21+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 21+                           , srcInfoPoints = []+                           }+                         "Ptr")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 22 4 27+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 22 4 27+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 22 4 27+                           , srcInfoPoints = []+                           }+                         "Word8"))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 31 4 51+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/BangPatterns.hs" 4 35 4 37 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 31 4 34+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 31 4 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 31 4 34+                           , srcInfoPoints = []+                           }+                         "Int")))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 38 4 51+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/BangPatterns.hs" 4 42 4 44 ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 38 4 41+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 38 4 41+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 38 4 41+                              , srcInfoPoints = []+                              }+                            "Int")))+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 45 4 51+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 45 4 47+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 45 4 47+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 45 4 47+                                 , srcInfoPoints = []+                                 }+                               "IO")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 48 4 51+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 48 4 51+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 48 4 51+                                 , srcInfoPoints = []+                                 }+                               "Int")))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 1 8 84+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 1 8 84+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 1 5 14+                   , srcInfoPoints = []+                   }+                 "firstnonspace")+              [ PBangPat+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 15 5 19+                    , srcInfoPoints = []+                    }+                  (PVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 16 5 19+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 16 5 19+                          , srcInfoPoints = []+                          }+                        "ptr"))+              , PBangPat+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 20 5 22+                    , srcInfoPoints = []+                    }+                  (PVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 21 5 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 21 5 22+                          , srcInfoPoints = []+                          }+                        "n"))+              , PBangPat+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 23 5 25+                    , srcInfoPoints = []+                    }+                  (PVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 24 5 25+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 24 5 25+                          , srcInfoPoints = []+                          }+                        "m"))+              ]+              (GuardedRhss+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 5 8 84+                   , srcInfoPoints = []+                   }+                 [ GuardedRhs+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 5 6 27+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/BangPatterns.hs" 6 5 6 6+                           , SrcSpan "tests/examples/BangPatterns.hs" 6 17 6 18+                           ]+                       }+                     [ Qualifier+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 13+                           , srcInfoPoints = []+                           }+                         (InfixApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 13+                              , srcInfoPoints = []+                              }+                            (Var+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 8+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 8+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 8+                                       , srcInfoPoints = []+                                       }+                                     "n")))+                            (QVarOp+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 9 6 11+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BangPatterns.hs" 6 9 6 11+                                    , srcInfoPoints = []+                                    }+                                  (Symbol+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 6 9 6 11+                                       , srcInfoPoints = []+                                       }+                                     ">=")))+                            (Var+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 12 6 13+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BangPatterns.hs" 6 12 6 13+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 6 12 6 13+                                       , srcInfoPoints = []+                                       }+                                     "m"))))+                     ]+                     (App+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 19 6 27+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 19 6 25+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 19 6 25+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BangPatterns.hs" 6 19 6 25+                                   , srcInfoPoints = []+                                   }+                                 "return")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 26 6 27+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 26 6 27+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BangPatterns.hs" 6 26 6 27+                                   , srcInfoPoints = []+                                   }+                                 "n"))))+                 , GuardedRhs+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 5 8 84+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/BangPatterns.hs" 7 5 7 6+                           , SrcSpan "tests/examples/BangPatterns.hs" 7 17 7 18+                           ]+                       }+                     [ Qualifier+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 7 7 16+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 7 7 16+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 7 7 16+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BangPatterns.hs" 7 7 7 16+                                    , srcInfoPoints = []+                                    }+                                  "otherwise")))+                     ]+                     (Do+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 19 8 84+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/BangPatterns.hs" 7 19 7 21+                              , SrcSpan "tests/examples/BangPatterns.hs" 7 22 7 22+                              , SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 22+                              , SrcSpan "tests/examples/BangPatterns.hs" 9 1 9 0+                              ]+                          }+                        [ Generator+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 22 7 44+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/BangPatterns.hs" 7 24 7 26 ]+                              }+                            (PVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 22 7 23+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BangPatterns.hs" 7 22 7 23+                                    , srcInfoPoints = []+                                    }+                                  "w"))+                            (App+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 44+                                 , srcInfoPoints = []+                                 }+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 42+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 38+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 38+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 38+                                             , srcInfoPoints = []+                                             }+                                           "peekElemOff")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 7 39 7 42+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 7 39 7 42+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 7 39 7 42+                                             , srcInfoPoints = []+                                             }+                                           "ptr"))))+                               (Var+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BangPatterns.hs" 7 43 7 44+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 7 43 7 44+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 7 43 7 44+                                          , srcInfoPoints = []+                                          }+                                        "n"))))+                        , Qualifier+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 84+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 24+                                  , SrcSpan "tests/examples/BangPatterns.hs" 8 40 8 44+                                  , SrcSpan "tests/examples/BangPatterns.hs" 8 71 8 75+                                  ]+                              }+                            (If+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 84+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 24+                                     , SrcSpan "tests/examples/BangPatterns.hs" 8 40 8 44+                                     , SrcSpan "tests/examples/BangPatterns.hs" 8 71 8 75+                                     ]+                                 }+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BangPatterns.hs" 8 25 8 39+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 8 25 8 37+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 8 25 8 37+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 8 25 8 37+                                             , srcInfoPoints = []+                                             }+                                           "isSpaceWord8")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 8 38 8 39+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 8 38 8 39+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 8 38 8 39+                                             , srcInfoPoints = []+                                             }+                                           "w"))))+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BangPatterns.hs" 8 45 8 70+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 8 45 8 68+                                       , srcInfoPoints = []+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 8 45 8 62+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 8 45 8 58+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/BangPatterns.hs" 8 45 8 58+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/BangPatterns.hs" 8 45 8 58+                                                   , srcInfoPoints = []+                                                   }+                                                 "firstnonspace")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 8 59 8 62+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/BangPatterns.hs" 8 59 8 62+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/BangPatterns.hs" 8 59 8 62+                                                   , srcInfoPoints = []+                                                   }+                                                 "ptr"))))+                                     (Paren+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 8 63 8 68+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/BangPatterns.hs" 8 63 8 64+                                              , SrcSpan "tests/examples/BangPatterns.hs" 8 67 8 68+                                              ]+                                          }+                                        (InfixApp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 8 64 8 67+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/BangPatterns.hs" 8 64 8 65+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/BangPatterns.hs" 8 64 8 65+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/BangPatterns.hs"+                                                            8+                                                            64+                                                            8+                                                            65+                                                      , srcInfoPoints = []+                                                      }+                                                    "n")))+                                           (QVarOp+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/BangPatterns.hs" 8 65 8 66+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/BangPatterns.hs" 8 65 8 66+                                                   , srcInfoPoints = []+                                                   }+                                                 (Symbol+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/BangPatterns.hs"+                                                            8+                                                            65+                                                            8+                                                            66+                                                      , srcInfoPoints = []+                                                      }+                                                    "+")))+                                           (Lit+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/BangPatterns.hs" 8 66 8 67+                                                , srcInfoPoints = []+                                                }+                                              (Int+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/BangPatterns.hs" 8 66 8 67+                                                   , srcInfoPoints = []+                                                   }+                                                 1+                                                 "1")))))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 8 69 8 70+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 8 69 8 70+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 8 69 8 70+                                             , srcInfoPoints = []+                                             }+                                           "m"))))+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BangPatterns.hs" 8 76 8 84+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 8 76 8 82+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 8 76 8 82+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 8 76 8 82+                                             , srcInfoPoints = []+                                             }+                                           "return")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BangPatterns.hs" 8 83 8 84+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/BangPatterns.hs" 8 83 8 84+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/BangPatterns.hs" 8 83 8 84+                                             , srcInfoPoints = []+                                             }+                                           "n")))))+                        ])+                 ])+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/BangPatterns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BangPatterns.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE BangPatterns #-}+module BangPatterns where++firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int+firstnonspace !ptr !n !m+  | n >= m = return n+  | otherwise =+    do w <- peekElemOff ptr n+       if isSpaceWord8 w then firstnonspace ptr (n + 1) m else return n
+ tests/examples/BangViewPat.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE BangPatterns, ViewPatterns #-}+someFun (id -> !arg) = undefined
+ tests/examples/BangViewPat.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BangViewPat.hs.parser.golden view
@@ -0,0 +1,129 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/BangViewPat.hs" 1 1 1 1+            , SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 1+            , SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 1+            , SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 1+            , SrcSpan "tests/examples/BangViewPat.hs" 3 1 3 1+            , SrcSpan "tests/examples/BangViewPat.hs" 3 1 3 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 1 1 1 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/BangViewPat.hs" 1 1 1 13+                , SrcSpan "tests/examples/BangViewPat.hs" 1 26 1 27+                , SrcSpan "tests/examples/BangViewPat.hs" 1 41 1 44+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "BangPatterns"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 1 28 1 40+                , srcInfoPoints = []+                }+              "ViewPatterns"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 33+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 33+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 8+                   , srcInfoPoints = []+                   }+                 "someFun")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 9 2 21+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/BangViewPat.hs" 2 9 2 10+                        , SrcSpan "tests/examples/BangViewPat.hs" 2 20 2 21+                        ]+                    }+                  (PViewPat+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 10 2 20+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/BangViewPat.hs" 2 13 2 15 ]+                       }+                     (Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 10 2 12+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 10 2 12+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 10 2 12+                                , srcInfoPoints = []+                                }+                              "id")))+                     (PBangPat+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 16 2 20+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/BangViewPat.hs" 2 16 2 17 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 17 2 20+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 17 2 20+                                , srcInfoPoints = []+                                }+                              "arg"))))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 22 2 33+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/BangViewPat.hs" 2 22 2 23 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 24 2 33+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 24 2 33+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 24 2 33+                            , srcInfoPoints = []+                            }+                          "undefined"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/BangViewPat.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BangViewPat.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE BangPatterns, ViewPatterns #-}+someFun (id -> !arg) = undefined
+ tests/examples/BinaryLiteralsBad.hs view
@@ -0,0 +1,4 @@+-- Missing binary literals extension. Should fail.+f :: Int -> ()+f 0b0 = ()+f _   = ()
+ tests/examples/BinaryLiteralsBad.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BinaryLiteralsBad.hs" 3 1) "arity mismatch for 'f'"
+ tests/examples/BinaryLiteralsBad.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/BinaryLiteralsBad.hs" 3 1)+  "arity mismatch for 'f'"
+ tests/examples/BinaryLiteralsBad.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BinaryLiteralsBad.hs" 3 1) "arity mismatch for 'f'"
+ tests/examples/BinaryLiteralsBad.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BinaryLiteralsBad.hs" 3 1) "arity mismatch for 'f'"
+ tests/examples/BinaryLiteralsGood.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE BinaryLiterals #-}+{-# LANGUAGE MagicHash #-}++import GHC.Types++main = do+    print [ I# 0b0#, I# -0b0#, I# 0b1#, I# -0b1#+          , I# 0b00000000000000000000000000000000000000000000000000000000000000000000000000001#+          , I# -0b00000000000000000000000000000000000000000000000000000000000000000000000000001#+          , I# -0b11001001#, I# -0b11001001#+          , I# -0b11111111#, I# -0b11111111#+          ]+    print [ W# 0b0##, W# 0b1##, W# 0b11001001##, W# 0b11##, W# 0b11111111##+          , W# 0b00000000000000000000000000000000000000000000000000000000000000000000000000001##+          ]++    print [ 0b0, 0b1, 0b10, 0b11, 0b100, 0b101, 0b110, 0b111 :: Integer+          , -0b0, -0b1, -0b10, -0b11, -0b100, -0b101, -0b110, -0b111+          , 0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111+          , -0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111+          ]++    print [ I8# -0B10000000#, I8# 0B1111111# ]
+ tests/examples/BinaryLiteralsGood.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BinaryLiteralsGood.hs.parser.golden view
@@ -0,0 +1,1539 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 1 24 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 1 1 1+            , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 1 2 1+            , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 1+            , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 1+            , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 1+            , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 1 6 1+            , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 24 1 24 1+            , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 24 1 24 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 1 1 13+                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "BinaryLiterals"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 1 2 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 1 2 13+                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 24 2 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 14 2 23+                , srcInfoPoints = []+                }+              "MagicHash"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 8 4 17+                  , srcInfoPoints = []+                  }+                "GHC.Types"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 1 23 47+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 1 6 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 1 6 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 6 23 47+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 6 6 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 8 23 47+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 8 6 10+                      , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 7 5+                      , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 13 5+                      , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 17 5+                      , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 5+                      , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 24 1 24 0+                      ]+                  }+                [ Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 12 12+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 12 12+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 7 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 7 10+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 7 10+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (List+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 11 12 12+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 11 7 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 20 7 21+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 30 7 31+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 39 7 40+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 11 8 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 11 9 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 11 10 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 28 10 29+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 11 11 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 28 11 29+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 12 11 12 12+                                ]+                            }+                          [ App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 13 7 20+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 13 7 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 13 7 15+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 7 13 7 15+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 16 7 20+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 16 7 20+                                      , srcInfoPoints = []+                                      }+                                    0+                                    "0b0"))+                          , InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 22 7 30+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 22 7 24+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 22 7 24+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 7 22 7 24+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 25 7 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 25 7 26+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 7 25 7 26+                                         , srcInfoPoints = []+                                         }+                                       "-")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 26 7 30+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 26 7 30+                                      , srcInfoPoints = []+                                      }+                                    0+                                    "0b0"))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 32 7 39+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 32 7 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 32 7 34+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 7 32 7 34+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 35 7 39+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 35 7 39+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "0b1"))+                          , InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 41 7 49+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 41 7 43+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 41 7 43+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 7 41 7 43+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 44 7 45+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 44 7 45+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 7 44 7 45+                                         , srcInfoPoints = []+                                         }+                                       "-")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 45 7 49+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 45 7 49+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "0b1"))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 13 8 96+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 13 8 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 13 8 15+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 8 13 8 15+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 16 8 96+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 16 8 96+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "0b00000000000000000000000000000000000000000000000000000000000000000000000000001"))+                          , InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 13 9 97+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 13 9 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 13 9 15+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 9 13 9 15+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 16 9 17+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 16 9 17+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 9 16 9 17+                                         , srcInfoPoints = []+                                         }+                                       "-")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 17 9 97+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 17 9 97+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "0b00000000000000000000000000000000000000000000000000000000000000000000000000001"))+                          , InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 13 10 28+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 13 10 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 13 10 15+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 10 13 10 15+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 16 10 17+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 16 10 17+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 10 16 10 17+                                         , srcInfoPoints = []+                                         }+                                       "-")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 17 10 28+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 17 10 28+                                      , srcInfoPoints = []+                                      }+                                    201+                                    "0b11001001"))+                          , InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 30 10 45+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 30 10 32+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 30 10 32+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 10 30 10 32+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 33 10 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 33 10 34+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 10 33 10 34+                                         , srcInfoPoints = []+                                         }+                                       "-")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 34 10 45+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 34 10 45+                                      , srcInfoPoints = []+                                      }+                                    201+                                    "0b11001001"))+                          , InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 13 11 28+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 13 11 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 13 11 15+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 11 13 11 15+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 16 11 17+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 16 11 17+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 11 16 11 17+                                         , srcInfoPoints = []+                                         }+                                       "-")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 17 11 28+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 17 11 28+                                      , srcInfoPoints = []+                                      }+                                    255+                                    "0b11111111"))+                          , InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 30 11 45+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 30 11 32+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 30 11 32+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 11 30 11 32+                                         , srcInfoPoints = []+                                         }+                                       "I#")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 33 11 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 33 11 34+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 11 33 11 34+                                         , srcInfoPoints = []+                                         }+                                       "-")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 34 11 45+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 34 11 45+                                      , srcInfoPoints = []+                                      }+                                    255+                                    "0b11111111"))+                          ]))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 15 12+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 15 12+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 13 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 13 10+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 13 10+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (List+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 11 15 12+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 11 13 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 21 13 22+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 31 13 32+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 48 13 49+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 59 13 60+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 11 14 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 15 11 15 12+                                ]+                            }+                          [ App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 13 13 21+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 13 13 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 13 13 15+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 13 13 13 15+                                         , srcInfoPoints = []+                                         }+                                       "W#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 16 13 21+                                   , srcInfoPoints = []+                                   }+                                 (PrimWord+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 16 13 21+                                      , srcInfoPoints = []+                                      }+                                    0+                                    "0b0"))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 23 13 31+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 23 13 25+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 23 13 25+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 13 23 13 25+                                         , srcInfoPoints = []+                                         }+                                       "W#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 26 13 31+                                   , srcInfoPoints = []+                                   }+                                 (PrimWord+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 26 13 31+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "0b1"))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 33 13 48+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 33 13 35+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 33 13 35+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 13 33 13 35+                                         , srcInfoPoints = []+                                         }+                                       "W#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 36 13 48+                                   , srcInfoPoints = []+                                   }+                                 (PrimWord+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 36 13 48+                                      , srcInfoPoints = []+                                      }+                                    201+                                    "0b11001001"))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 50 13 59+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 50 13 52+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 50 13 52+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 13 50 13 52+                                         , srcInfoPoints = []+                                         }+                                       "W#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 53 13 59+                                   , srcInfoPoints = []+                                   }+                                 (PrimWord+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 53 13 59+                                      , srcInfoPoints = []+                                      }+                                    3+                                    "0b11"))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 61 13 76+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 61 13 63+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 61 13 63+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 13 61 13 63+                                         , srcInfoPoints = []+                                         }+                                       "W#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 64 13 76+                                   , srcInfoPoints = []+                                   }+                                 (PrimWord+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 64 13 76+                                      , srcInfoPoints = []+                                      }+                                    255+                                    "0b11111111"))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 13 14 97+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 13 14 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 13 14 15+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 14 13 14 15+                                         , srcInfoPoints = []+                                         }+                                       "W#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 16 14 97+                                   , srcInfoPoints = []+                                   }+                                 (PrimWord+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 16 14 97+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "0b00000000000000000000000000000000000000000000000000000000000000000000000000001"))+                          ]))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 21 12+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 21 12+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 17 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 17 10+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 17 10+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (List+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 11 21 12+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 11 17 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 16 17 17+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 21 17 22+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 27 17 28+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 33 17 34+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 40 17 41+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 47 17 48+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 54 17 55+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 11 18 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 17 18 18+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 23 18 24+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 30 18 31+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 37 18 38+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 45 18 46+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 53 18 54+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 61 18 62+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 19 11 19 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 20 11 20 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 21 11 21 12+                                ]+                            }+                          [ Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 13 17 16+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 13 17 16+                                   , srcInfoPoints = []+                                   }+                                 0+                                 "0b0")+                          , Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 18 17 21+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 18 17 21+                                   , srcInfoPoints = []+                                   }+                                 1+                                 "0b1")+                          , Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 23 17 27+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 23 17 27+                                   , srcInfoPoints = []+                                   }+                                 2+                                 "0b10")+                          , Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 29 17 33+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 29 17 33+                                   , srcInfoPoints = []+                                   }+                                 3+                                 "0b11")+                          , Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 35 17 40+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 35 17 40+                                   , srcInfoPoints = []+                                   }+                                 4+                                 "0b100")+                          , Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 42 17 47+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 42 17 47+                                   , srcInfoPoints = []+                                   }+                                 5+                                 "0b101")+                          , Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 49 17 54+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 49 17 54+                                   , srcInfoPoints = []+                                   }+                                 6+                                 "0b110")+                          , ExpTypeSig+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 56 17 72+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 62 17 64 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 56 17 61+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 56 17 61+                                      , srcInfoPoints = []+                                      }+                                    7+                                    "0b111"))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 65 17 72+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 65 17 72+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 17 65 17 72+                                         , srcInfoPoints = []+                                         }+                                       "Integer")))+                          , NegApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 13 18 17+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 13 18 14 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 14 18 17+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 14 18 17+                                      , srcInfoPoints = []+                                      }+                                    0+                                    "0b0"))+                          , NegApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 19 18 23+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 19 18 20 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 20 18 23+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 20 18 23+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "0b1"))+                          , NegApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 25 18 30+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 25 18 26 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 26 18 30+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 26 18 30+                                      , srcInfoPoints = []+                                      }+                                    2+                                    "0b10"))+                          , NegApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 32 18 37+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 32 18 33 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 33 18 37+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 33 18 37+                                      , srcInfoPoints = []+                                      }+                                    3+                                    "0b11"))+                          , NegApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 39 18 45+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 39 18 40 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 40 18 45+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 40 18 45+                                      , srcInfoPoints = []+                                      }+                                    4+                                    "0b100"))+                          , NegApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 47 18 53+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 47 18 48 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 48 18 53+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 48 18 53+                                      , srcInfoPoints = []+                                      }+                                    5+                                    "0b101"))+                          , NegApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 55 18 61+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 55 18 56 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 56 18 61+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 56 18 61+                                      , srcInfoPoints = []+                                      }+                                    6+                                    "0b110"))+                          , NegApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 63 18 69+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 63 18 64 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 64 18 69+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 64 18 69+                                      , srcInfoPoints = []+                                      }+                                    7+                                    "0b111"))+                          , Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 19 13 19 143+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 19 13 19 143+                                   , srcInfoPoints = []+                                   }+                                 340282366920938463463374607431768211455+                                 "0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111")+                          , NegApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 20 13 20 144+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 20 13 20 14 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 20 14 20 144+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/BinaryLiteralsGood.hs" 20 14 20 144+                                      , srcInfoPoints = []+                                      }+                                    340282366920938463463374607431768211455+                                    "0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"))+                          ]))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 47+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 47+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 10+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 10+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (List+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 11 23 47+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 11 23 12+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 29 23 30+                                , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 46 23 47+                                ]+                            }+                          [ InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 13 23 29+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 13 23 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 13 23 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 23 13 23 16+                                         , srcInfoPoints = []+                                         }+                                       "I8#")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 17 23 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 17 23 18+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 23 17 23 18+                                         , srcInfoPoints = []+                                         }+                                       "-")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 18 23 29+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 18 23 29+                                      , srcInfoPoints = []+                                      }+                                    128+                                    "0B10000000"))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 31 23 45+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 31 23 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 31 23 34+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/BinaryLiteralsGood.hs" 23 31 23 34+                                         , srcInfoPoints = []+                                         }+                                       "I8#")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 35 23 45+                                   , srcInfoPoints = []+                                   }+                                 (PrimInt+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 35 23 45+                                      , srcInfoPoints = []+                                      }+                                    127+                                    "0B1111111"))+                          ]))+                ]))+          Nothing+      ]+  , []+  )
+ tests/examples/BinaryLiteralsGood.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () Nothing [LanguagePragma () [Ident () "BinaryLiterals"],LanguagePragma () [Ident () "MagicHash"]] [ImportDecl {importAnn = (), importModule = ModuleName () "GHC.Types", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing}] [PatBind () (PVar () (Ident () "main")) (UnGuardedRhs () (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 0 "0b0")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 0 "0b0")),App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 1 "0b1")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 1 "0b1")),App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 1 "0b00000000000000000000000000000000000000000000000000000000000000000000000000001")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 1 "0b00000000000000000000000000000000000000000000000000000000000000000000000000001")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 201 "0b11001001")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 201 "0b11001001")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 255 "0b11111111")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 255 "0b11111111"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 0 "0b0")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 1 "0b1")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 201 "0b11001001")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 3 "0b11")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 255 "0b11111111")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 1 "0b00000000000000000000000000000000000000000000000000000000000000000000000000001"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [Lit () (Int () 0 "0b0"),Lit () (Int () 1 "0b1"),Lit () (Int () 2 "0b10"),Lit () (Int () 3 "0b11"),Lit () (Int () 4 "0b100"),Lit () (Int () 5 "0b101"),Lit () (Int () 6 "0b110"),ExpTypeSig () (Lit () (Int () 7 "0b111")) (TyCon () (UnQual () (Ident () "Integer"))),NegApp () (Lit () (Int () 0 "0b0")),NegApp () (Lit () (Int () 1 "0b1")),NegApp () (Lit () (Int () 2 "0b10")),NegApp () (Lit () (Int () 3 "0b11")),NegApp () (Lit () (Int () 4 "0b100")),NegApp () (Lit () (Int () 5 "0b101")),NegApp () (Lit () (Int () 6 "0b110")),NegApp () (Lit () (Int () 7 "0b111")),Lit () (Int () 340282366920938463463374607431768211455 "0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"),NegApp () (Lit () (Int () 340282366920938463463374607431768211455 "0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [InfixApp () (Con () (UnQual () (Ident () "I8#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 128 "0B10000000")),App () (Con () (UnQual () (Ident () "I8#"))) (Lit () (PrimInt () 127 "0B1111111"))]))])) Nothing]++AST 2:++Module () Nothing [LanguagePragma () [Ident () "BinaryLiterals"],LanguagePragma () [Ident () "MagicHash"]] [ImportDecl {importAnn = (), importModule = ModuleName () "GHC.Types", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing}] [PatBind () (PVar () (Ident () "main")) (UnGuardedRhs () (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 0 "0")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 0 "0")),App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 1 "1")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 1 "1")),App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 1 "1")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 1 "1")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 201 "201")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 201 "201")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 255 "255")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 255 "255"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 0 "0")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 1 "1")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 201 "201")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 3 "3")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 255 "255")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 1 "1"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [Lit () (Int () 0 "0"),Lit () (Int () 1 "1"),Lit () (Int () 2 "2"),Lit () (Int () 3 "3"),Lit () (Int () 4 "4"),Lit () (Int () 5 "5"),Lit () (Int () 6 "6"),ExpTypeSig () (Lit () (Int () 7 "7")) (TyCon () (UnQual () (Ident () "Integer"))),NegApp () (Lit () (Int () 0 "0")),NegApp () (Lit () (Int () 1 "1")),NegApp () (Lit () (Int () 2 "2")),NegApp () (Lit () (Int () 3 "3")),NegApp () (Lit () (Int () 4 "4")),NegApp () (Lit () (Int () 5 "5")),NegApp () (Lit () (Int () 6 "6")),NegApp () (Lit () (Int () 7 "7")),Lit () (Int () 340282366920938463463374607431768211455 "340282366920938463463374607431768211455"),NegApp () (Lit () (Int () 340282366920938463463374607431768211455 "340282366920938463463374607431768211455"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [InfixApp () (Con () (UnQual () (Ident () "I8#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 128 "128")),App () (Con () (UnQual () (Ident () "I8#"))) (Lit () (PrimInt () 127 "127"))]))])) Nothing]+
+ tests/examples/BinaryLiteralsGood.hs.prettyprinter.golden view
@@ -0,0 +1,13 @@+{-# LANGUAGE BinaryLiterals #-}+{-# LANGUAGE MagicHash #-}+import GHC.Types+main+  = do print+         [I# 0#, I# - 0#, I# 1#, I# - 1#, I# 1#, I# - 1#, I# - 201#,+          I# - 201#, I# - 255#, I# - 255#]+       print [W# 0##, W# 1##, W# 201##, W# 3##, W# 255##, W# 1##]+       print+         [0, 1, 2, 3, 4, 5, 6, 7 :: Integer, -0, -1, -2, -3, -4, -5, -6, -7,+          340282366920938463463374607431768211455,+          -340282366920938463463374607431768211455]+       print [I8# - 128#, I8# 127#]
+ tests/examples/BlockArguments.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE BlockArguments #-}+module BlockArguments where++foo = when (x > 0) do+  print x+  exitFailure++bar = withForeignPtr fptr \ptr -> c_memcpy buf ptr size++baz arg1 arg2 arg3 arg4 = initialValue+  &   someFunction arg1 arg2+  >>= traverse \(x, y) -> do+        a <- f x+        b <- g y+        h a b+  >>= anotherFunction arg3 arg4
+ tests/examples/BlockArguments.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BlockArguments.hs.parser.golden view
@@ -0,0 +1,1099 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 1 1 17 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 1+            , SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 1+            , SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 1+            , SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 1+            , SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 1+            , SrcSpan "tests/examples/BlockArguments.hs" 10 1 10 1+            , SrcSpan "tests/examples/BlockArguments.hs" 17 1 17 1+            , SrcSpan "tests/examples/BlockArguments.hs" 17 1 17 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 28+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 7+                  , SrcSpan "tests/examples/BlockArguments.hs" 2 23 2 28+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 2 8 2 22+                 , srcInfoPoints = []+                 }+               "BlockArguments")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 13+                , SrcSpan "tests/examples/BlockArguments.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/BlockArguments.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "BlockArguments"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 6 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 5 6 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/BlockArguments.hs" 4 5 4 6 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 6 14+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 19+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11+                              , srcInfoPoints = []+                              }+                            "when")))+                   (Paren+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/BlockArguments.hs" 4 12 4 19+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/BlockArguments.hs" 4 12 4 13+                            , SrcSpan "tests/examples/BlockArguments.hs" 4 18 4 19+                            ]+                        }+                      (InfixApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 18+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14+                                    , srcInfoPoints = []+                                    }+                                  "x")))+                         (QVarOp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16+                                 , srcInfoPoints = []+                                 }+                               (Symbol+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16+                                    , srcInfoPoints = []+                                    }+                                  ">")))+                         (Lit+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BlockArguments.hs" 4 17 4 18+                              , srcInfoPoints = []+                              }+                            (Int+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/BlockArguments.hs" 4 17 4 18+                                 , srcInfoPoints = []+                                 }+                               0+                               "0")))))+                (Do+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/BlockArguments.hs" 4 20 6 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/BlockArguments.hs" 4 20 4 22+                         , SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 3+                         , SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 3+                         , SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 0+                         ]+                     }+                   [ Qualifier+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 10+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 10+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8+                                     , srcInfoPoints = []+                                     }+                                   "print")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10+                                     , srcInfoPoints = []+                                     }+                                   "x"))))+                   , Qualifier+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+                                  , srcInfoPoints = []+                                  }+                                "exitFailure")))+                   ])))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 56+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 4+                  , srcInfoPoints = []+                  }+                "bar"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 5 8 56+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/BlockArguments.hs" 8 5 8 6 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 56+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 26+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21+                              , srcInfoPoints = []+                              }+                            "withForeignPtr")))+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26+                              , srcInfoPoints = []+                              }+                            "fptr"))))+                (Lambda+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/BlockArguments.hs" 8 27 8 56+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/BlockArguments.hs" 8 27 8 28+                         , SrcSpan "tests/examples/BlockArguments.hs" 8 32 8 34+                         ]+                     }+                   [ PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/BlockArguments.hs" 8 28 8 31+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BlockArguments.hs" 8 28 8 31+                            , srcInfoPoints = []+                            }+                          "ptr")+                   ]+                   (App+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 56+                        , srcInfoPoints = []+                        }+                      (App+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 51+                           , srcInfoPoints = []+                           }+                         (App+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 47+                              , srcInfoPoints = []+                              }+                            (Var+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43+                                       , srcInfoPoints = []+                                       }+                                     "c_memcpy")))+                            (Var+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47+                                       , srcInfoPoints = []+                                       }+                                     "buf"))))+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51+                                    , srcInfoPoints = []+                                    }+                                  "ptr"))))+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56+                                 , srcInfoPoints = []+                                 }+                               "size")))))))+          Nothing+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/BlockArguments.hs" 10 1 16 32+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/BlockArguments.hs" 10 1 16 32+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/BlockArguments.hs" 10 1 10 4+                   , srcInfoPoints = []+                   }+                 "baz")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/BlockArguments.hs" 10 5 10 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/BlockArguments.hs" 10 5 10 9+                       , srcInfoPoints = []+                       }+                     "arg1")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/BlockArguments.hs" 10 10 10 14+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/BlockArguments.hs" 10 10 10 14+                       , srcInfoPoints = []+                       }+                     "arg2")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/BlockArguments.hs" 10 15 10 19+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/BlockArguments.hs" 10 15 10 19+                       , srcInfoPoints = []+                       }+                     "arg3")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/BlockArguments.hs" 10 20 10 24+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/BlockArguments.hs" 10 20 10 24+                       , srcInfoPoints = []+                       }+                     "arg4")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/BlockArguments.hs" 10 25 16 32+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/BlockArguments.hs" 10 25 10 26 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/BlockArguments.hs" 10 27 16 32+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/BlockArguments.hs" 10 27 11 29+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39+                                  , srcInfoPoints = []+                                  }+                                "initialValue")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4+                                  , srcInfoPoints = []+                                  }+                                "&")))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 29+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 24+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19+                                        , srcInfoPoints = []+                                        }+                                      "someFunction")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24+                                        , srcInfoPoints = []+                                        }+                                      "arg1"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29+                                     , srcInfoPoints = []+                                     }+                                   "arg2")))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6+                               , srcInfoPoints = []+                               }+                             ">>=")))+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/BlockArguments.hs" 12 7 16 32+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15+                                  , srcInfoPoints = []+                                  }+                                "traverse")))+                       (Lambda+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/BlockArguments.hs" 12 16 16 32+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/BlockArguments.hs" 12 16 12 17+                                , SrcSpan "tests/examples/BlockArguments.hs" 12 24 12 26+                                ]+                            }+                          [ PTuple+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/BlockArguments.hs" 12 17 12 23+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/BlockArguments.hs" 12 17 12 18+                                    , SrcSpan "tests/examples/BlockArguments.hs" 12 19 12 20+                                    , SrcSpan "tests/examples/BlockArguments.hs" 12 22 12 23+                                    ]+                                }+                              Boxed+                              [ PVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BlockArguments.hs" 12 18 12 19+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BlockArguments.hs" 12 18 12 19+                                       , srcInfoPoints = []+                                       }+                                     "x")+                              , PVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BlockArguments.hs" 12 21 12 22+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BlockArguments.hs" 12 21 12 22+                                       , srcInfoPoints = []+                                       }+                                     "y")+                              ]+                          ]+                          (InfixApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/BlockArguments.hs" 12 27 16 32+                               , srcInfoPoints = []+                               }+                             (Do+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 12 27 15 14+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/BlockArguments.hs" 12 27 12 29+                                      , SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 9+                                      , SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 9+                                      , SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 9+                                      , SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 0+                                      ]+                                  }+                                [ Generator+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 17+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/BlockArguments.hs" 13 11 13 13 ]+                                      }+                                    (PVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 10+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/BlockArguments.hs" 13 9 13 10+                                            , srcInfoPoints = []+                                            }+                                          "a"))+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/BlockArguments.hs" 13 14 13 17+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/BlockArguments.hs" 13 14 13 15+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/BlockArguments.hs" 13 14 13 15+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/BlockArguments.hs"+                                                        13+                                                        14+                                                        13+                                                        15+                                                  , srcInfoPoints = []+                                                  }+                                                "f")))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/BlockArguments.hs" 13 16 13 17+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/BlockArguments.hs" 13 16 13 17+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/BlockArguments.hs"+                                                        13+                                                        16+                                                        13+                                                        17+                                                  , srcInfoPoints = []+                                                  }+                                                "x"))))+                                , Generator+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 17+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/BlockArguments.hs" 14 11 14 13 ]+                                      }+                                    (PVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 10+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/BlockArguments.hs" 14 9 14 10+                                            , srcInfoPoints = []+                                            }+                                          "b"))+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/BlockArguments.hs" 14 14 14 17+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/BlockArguments.hs" 14 14 14 15+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/BlockArguments.hs" 14 14 14 15+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/BlockArguments.hs"+                                                        14+                                                        14+                                                        14+                                                        15+                                                  , srcInfoPoints = []+                                                  }+                                                "g")))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/BlockArguments.hs" 14 16 14 17+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/BlockArguments.hs" 14 16 14 17+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/BlockArguments.hs"+                                                        14+                                                        16+                                                        14+                                                        17+                                                  , srcInfoPoints = []+                                                  }+                                                "y"))))+                                , Qualifier+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 14+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 14+                                         , srcInfoPoints = []+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/BlockArguments.hs" 15 9 15 12+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/BlockArguments.hs" 15 9 15 10+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/BlockArguments.hs"+                                                        15+                                                        9+                                                        15+                                                        10+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/BlockArguments.hs"+                                                           15+                                                           9+                                                           15+                                                           10+                                                     , srcInfoPoints = []+                                                     }+                                                   "h")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/BlockArguments.hs" 15 11 15 12+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/BlockArguments.hs"+                                                        15+                                                        11+                                                        15+                                                        12+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/BlockArguments.hs"+                                                           15+                                                           11+                                                           15+                                                           12+                                                     , srcInfoPoints = []+                                                     }+                                                   "a"))))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/BlockArguments.hs" 15 13 15 14+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/BlockArguments.hs" 15 13 15 14+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/BlockArguments.hs"+                                                        15+                                                        13+                                                        15+                                                        14+                                                  , srcInfoPoints = []+                                                  }+                                                "b"))))+                                ])+                             (QVarOp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6+                                     , srcInfoPoints = []+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6+                                        , srcInfoPoints = []+                                        }+                                      ">>=")))+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 32+                                  , srcInfoPoints = []+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 27+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 22+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 22+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/BlockArguments.hs" 16 7 16 22+                                              , srcInfoPoints = []+                                              }+                                            "anotherFunction")))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/BlockArguments.hs" 16 23 16 27+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/BlockArguments.hs" 16 23 16 27+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/BlockArguments.hs" 16 23 16 27+                                              , srcInfoPoints = []+                                              }+                                            "arg3"))))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/BlockArguments.hs" 16 28 16 32+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/BlockArguments.hs" 16 28 16 32+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/BlockArguments.hs" 16 28 16 32+                                           , srcInfoPoints = []+                                           }+                                         "arg4")))))))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/BlockArguments.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () (Just (ModuleHead () (ModuleName () "BlockArguments") Nothing Nothing)) [LanguagePragma () [Ident () "BlockArguments"]] [] [PatBind () (PVar () (Ident () "foo")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "x"))) (QVarOp () (UnQual () (Symbol () ">"))) (Lit () (Int () 0 "0"))))) (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (Var () (UnQual () (Ident () "x")))),Qualifier () (Var () (UnQual () (Ident () "exitFailure")))]))) Nothing,PatBind () (PVar () (Ident () "bar")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fptr")))) (Lambda () [PVar () (Ident () "ptr")] (App () (App () (App () (Var () (UnQual () (Ident () "c_memcpy"))) (Var () (UnQual () (Ident () "buf")))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "size"))))))) Nothing,FunBind () [Match () (Ident () "baz") [PVar () (Ident () "arg1"),PVar () (Ident () "arg2"),PVar () (Ident () "arg3"),PVar () (Ident () "arg4")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "initialValue"))) (QVarOp () (UnQual () (Symbol () "&"))) (App () (App () (Var () (UnQual () (Ident () "someFunction"))) (Var () (UnQual () (Ident () "arg1")))) (Var () (UnQual () (Ident () "arg2"))))) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (Var () (UnQual () (Ident () "traverse"))) (Lambda () [PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "y")]] (InfixApp () (Do () [Generator () (PVar () (Ident () "a")) (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "x")))),Generator () (PVar () (Ident () "b")) (App () (Var () (UnQual () (Ident () "g"))) (Var () (UnQual () (Ident () "y")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "h"))) (Var () (UnQual () (Ident () "a")))) (Var () (UnQual () (Ident () "b"))))]) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (App () (Var () (UnQual () (Ident () "anotherFunction"))) (Var () (UnQual () (Ident () "arg3")))) (Var () (UnQual () (Ident () "arg4"))))))))) Nothing]]++AST 2:++Module () (Just (ModuleHead () (ModuleName () "BlockArguments") Nothing Nothing)) [LanguagePragma () [Ident () "BlockArguments"]] [] [PatBind () (PVar () (Ident () "foo")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "x"))) (QVarOp () (UnQual () (Symbol () ">"))) (Lit () (Int () 0 "0"))))) (Paren () (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (Var () (UnQual () (Ident () "x")))),Qualifier () (Var () (UnQual () (Ident () "exitFailure")))])))) Nothing,PatBind () (PVar () (Ident () "bar")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fptr")))) (Paren () (Lambda () [PVar () (Ident () "ptr")] (App () (App () (App () (Var () (UnQual () (Ident () "c_memcpy"))) (Var () (UnQual () (Ident () "buf")))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "size")))))))) Nothing,FunBind () [Match () (Ident () "baz") [PVar () (Ident () "arg1"),PVar () (Ident () "arg2"),PVar () (Ident () "arg3"),PVar () (Ident () "arg4")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "initialValue"))) (QVarOp () (UnQual () (Symbol () "&"))) (App () (App () (Var () (UnQual () (Ident () "someFunction"))) (Var () (UnQual () (Ident () "arg1")))) (Var () (UnQual () (Ident () "arg2"))))) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (Var () (UnQual () (Ident () "traverse"))) (Paren () (Lambda () [PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "y")]] (InfixApp () (Do () [Generator () (PVar () (Ident () "a")) (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "x")))),Generator () (PVar () (Ident () "b")) (App () (Var () (UnQual () (Ident () "g"))) (Var () (UnQual () (Ident () "y")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "h"))) (Var () (UnQual () (Ident () "a")))) (Var () (UnQual () (Ident () "b"))))]) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (App () (Var () (UnQual () (Ident () "anotherFunction"))) (Var () (UnQual () (Ident () "arg3")))) (Var () (UnQual () (Ident () "arg4")))))))))) Nothing]]+
+ tests/examples/BlockArguments.hs.prettyprinter.golden view
@@ -0,0 +1,15 @@+{-# LANGUAGE BlockArguments #-}+module BlockArguments where+foo+  = when (x > 0)+      (do print x+          exitFailure)+bar = withForeignPtr fptr (\ ptr -> c_memcpy buf ptr size)+baz arg1 arg2 arg3 arg4+  = initialValue & someFunction arg1 arg2 >>=+      traverse+        (\ (x, y) ->+           do a <- f x+              b <- g y+              h a b+             >>= anotherFunction arg3 arg4)
+ tests/examples/BracketInstanceHead.hs view
@@ -0,0 +1,1 @@+instance (Bounded a => Bounded [a]) where
+ tests/examples/BracketInstanceHead.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BracketInstanceHead.hs.parser.golden view
@@ -0,0 +1,151 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 2 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 1 1+            , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 1 1+            , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 1 1+            , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 1 2 1+            , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 1 2 1+            ]+        }+      Nothing+      []+      []+      [ InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 2 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 1 9+                , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 37 1 42+                , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 1 2 1+                , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 1 2 1+                , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 0 2 0+                ]+            }+          Nothing+          (IParen+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/BracketInstanceHead.hs" 1 10 1 36+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 10 1 11+                   , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 35 1 36+                   ]+               }+             (IRule+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 35+                  , srcInfoPoints = []+                  }+                Nothing+                (Just+                   (CxSingle+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]+                        }+                      (TypeA+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18+                                       , srcInfoPoints = []+                                       }+                                     "Bounded")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20+                                    , srcInfoPoints = []+                                    }+                                  "a"))))))+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/BracketInstanceHead.hs" 1 24 1 35+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/BracketInstanceHead.hs" 1 24 1 31+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/BracketInstanceHead.hs" 1 24 1 31+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BracketInstanceHead.hs" 1 24 1 31+                              , srcInfoPoints = []+                              }+                            "Bounded")))+                   (TyList+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/BracketInstanceHead.hs" 1 32 1 35+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 32 1 33+                            , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 34 1 35+                            ]+                        }+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/BracketInstanceHead.hs" 1 33 1 34+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/BracketInstanceHead.hs" 1 33 1 34+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just [])+      ]+  , []+  )
+ tests/examples/BracketInstanceHead.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BracketInstanceHead.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+instance (Bounded a => Bounded [a]) where
+ tests/examples/Bug.hs view
@@ -0,0 +1,2 @@+import Test.QuickCheck+-- prop_susShortest = 2 > 1 ==> 1 /= 2
+ tests/examples/Bug.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Bug.hs.parser.golden view
@@ -0,0 +1,42 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Bug.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Bug.hs" 1 1 1 1+            , SrcSpan "tests/examples/Bug.hs" 1 1 1 1+            , SrcSpan "tests/examples/Bug.hs" 1 1 1 1+            , SrcSpan "tests/examples/Bug.hs" 3 1 3 1+            , SrcSpan "tests/examples/Bug.hs" 3 1 3 1+            ]+        }+      Nothing+      []+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Bug.hs" 1 1 1 23+                , srcInfoPoints = [ SrcSpan "tests/examples/Bug.hs" 1 1 1 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Bug.hs" 1 8 1 23+                  , srcInfoPoints = []+                  }+                "Test.QuickCheck"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      []+  , [ Comment+        False+        (SrcSpan "tests/examples/Bug.hs" 2 1 2 39)+        " prop_susShortest = 2 > 1 ==> 1 /= 2"+    ]+  )
+ tests/examples/Bug.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Bug.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+import Test.QuickCheck
+ tests/examples/Bundles.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE PatternSynonyms #-}+module Bundles(Foo(..), Baz(..,Q), Qux(F,..), Tux(Q,..,F)) where++main = main
+ tests/examples/Bundles.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Bundles.hs.parser.golden view
@@ -0,0 +1,252 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Bundles.hs" 1 1 1 1+            , SrcSpan "tests/examples/Bundles.hs" 2 1 2 1+            , SrcSpan "tests/examples/Bundles.hs" 2 1 2 1+            , SrcSpan "tests/examples/Bundles.hs" 4 1 4 1+            , SrcSpan "tests/examples/Bundles.hs" 5 1 5 1+            , SrcSpan "tests/examples/Bundles.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 1 2 65+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/Bundles.hs" 2 1 2 7+                  , SrcSpan "tests/examples/Bundles.hs" 2 60 2 65+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 8 2 15+                 , srcInfoPoints = []+                 }+               "Bundles")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 15 2 59+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Bundles.hs" 2 15 2 16+                        , SrcSpan "tests/examples/Bundles.hs" 2 23 2 24+                        , SrcSpan "tests/examples/Bundles.hs" 2 34 2 35+                        , SrcSpan "tests/examples/Bundles.hs" 2 45 2 46+                        , SrcSpan "tests/examples/Bundles.hs" 2 58 2 59+                        ]+                    }+                  [ EThingWith+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 16 2 23+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Bundles.hs" 2 19 2 20+                            , SrcSpan "tests/examples/Bundles.hs" 2 22 2 23+                            ]+                        }+                      (EWildcard+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 20 2 22+                           , srcInfoPoints = []+                           }+                         0)+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 16 2 19+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 16 2 19+                              , srcInfoPoints = []+                              }+                            "Foo"))+                      []+                  , EThingWith+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 25 2 34+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Bundles.hs" 2 28 2 29+                            , SrcSpan "tests/examples/Bundles.hs" 2 31 2 32+                            , SrcSpan "tests/examples/Bundles.hs" 2 33 2 34+                            ]+                        }+                      (EWildcard+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 29 2 31+                           , srcInfoPoints = []+                           }+                         0)+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 25 2 28+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 25 2 28+                              , srcInfoPoints = []+                              }+                            "Baz"))+                      [ ConName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 32 2 33+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 32 2 33+                               , srcInfoPoints = []+                               }+                             "Q")+                      ]+                  , EThingWith+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 36 2 45+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Bundles.hs" 2 39 2 40+                            , SrcSpan "tests/examples/Bundles.hs" 2 41 2 42+                            , SrcSpan "tests/examples/Bundles.hs" 2 44 2 45+                            ]+                        }+                      (EWildcard+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 42 2 44+                           , srcInfoPoints = []+                           }+                         1)+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 36 2 39+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 36 2 39+                              , srcInfoPoints = []+                              }+                            "Qux"))+                      [ ConName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 40 2 41+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 40 2 41+                               , srcInfoPoints = []+                               }+                             "F")+                      ]+                  , EThingWith+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 47 2 58+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Bundles.hs" 2 50 2 51+                            , SrcSpan "tests/examples/Bundles.hs" 2 52 2 53+                            , SrcSpan "tests/examples/Bundles.hs" 2 55 2 56+                            , SrcSpan "tests/examples/Bundles.hs" 2 57 2 58+                            ]+                        }+                      (EWildcard+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 53 2 55+                           , srcInfoPoints = []+                           }+                         1)+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 47 2 50+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 47 2 50+                              , srcInfoPoints = []+                              }+                            "Tux"))+                      [ ConName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 51 2 52+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 51 2 52+                               , srcInfoPoints = []+                               }+                             "Q")+                      , ConName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 56 2 57+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 56 2 57+                               , srcInfoPoints = []+                               }+                             "F")+                      ]+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Bundles.hs" 1 1 1 13+                , SrcSpan "tests/examples/Bundles.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 1 4 12+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 1 4 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 1 4 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 6 4 12+               , srcInfoPoints = [ SrcSpan "tests/examples/Bundles.hs" 4 6 4 7 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 8 4 12+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 8 4 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 8 4 12+                        , srcInfoPoints = []+                        }+                      "main"))))+          Nothing+      ]+  , []+  )
+ tests/examples/Bundles.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Bundles.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE PatternSynonyms #-}+module Bundles (Foo(..), Baz(.., Q), Qux(F, ..), Tux(Q, .., F))+       where+main = main
+ tests/examples/ByteStringUtils.hs view
@@ -0,0 +1,541 @@+{-# LANGUAGE BangPatterns, ForeignFunctionInterface, CPP #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  ByteStringUtils+-- Copyright   :  (c) The University of Glasgow 2001,+--                    David Roundy 2003-2005+-- License : GPL (I'm happy to also license this file BSD style but don't+--           want to bother distributing two license files with darcs.+--+-- Maintainer  :  droundy@abridgegame.org+-- Stability   :  experimental+-- Portability :  portable+--+-- GZIp and MMap IO for ByteStrings, and miscellaneous functions for Data.ByteString+--++module ByteStringUtils (++        unsafeWithInternals,+        unpackPSfromUTF8,++        -- IO with mmap or gzip+        gzReadFilePS,+        mmapFilePS,+        gzWriteFilePS,+        gzWriteFilePSs,++        -- list utilities+        ifHeadThenTail,+        dropSpace,+        breakSpace,+        linesPS,+        unlinesPS,+        hashPS,+        breakFirstPS,+        breakLastPS,+        substrPS,+        readIntPS,+        is_funky,+        fromHex2PS,+        fromPS2Hex,+        betweenLinesPS,+        break_after_nth_newline,+        break_before_nth_newline,+        intercalate+    ) where++import Prelude hiding ( catch )+import qualified Data.ByteString            as B+import qualified Data.ByteString.Char8      as BC+import qualified Data.ByteString.Internal   as BI+import Data.ByteString (intercalate, uncons)+import Data.ByteString.Internal (fromForeignPtr)++-- #if defined (HAVE_MMAP) || ! defined (HAVE_HASKELL_ZLIB)+import Control.Exception        ( catch )+-- #endif+import System.IO+import System.IO.Unsafe         ( unsafePerformIO )++import Foreign.Storable         ( peekElemOff, peek )+import Foreign.Marshal.Alloc    ( free )+import Foreign.Marshal.Array    ( mallocArray, peekArray, advancePtr )+import Foreign.C.Types          ( CInt )++import Data.Bits                ( rotateL )+import Data.Char                ( chr, ord, isSpace )+import Data.Word                ( Word8 )+import Data.Int                 ( Int32 )+import Control.Monad            ( when )++-- #ifndef HAVE_HASKELL_ZLIB+import Foreign.Ptr              ( nullPtr )+import Foreign.ForeignPtr       ( ForeignPtr )+-- #endif+import Foreign.Ptr              ( plusPtr, Ptr )+import Foreign.ForeignPtr       ( withForeignPtr )++-- #ifdef DEBUG_PS+import Foreign.ForeignPtr       ( addForeignPtrFinalizer )+import Foreign.Ptr              ( FunPtr )+-- #endif++-- #if HAVE_HASKELL_ZLIB+import qualified Data.ByteString.Lazy as BL+import qualified Codec.Compression.GZip as GZ+-- #else+import Foreign.C.String ( CString, withCString )+-- #endif++-- #ifdef HAVE_MMAP+import System.IO.MMap( mmapFileByteString )+import System.Mem( performGC )+import System.Posix.Files( fileSize, getSymbolicLinkStatus )+-- #endif++-- -----------------------------------------------------------------------------+-- obsolete debugging code++-- # ifndef HAVE_HASKELL_ZLIB+debugForeignPtr :: ForeignPtr a -> String -> IO ()+-- #ifdef DEBUG_PS+foreign import ccall unsafe "static fpstring.h debug_alloc" debug_alloc+    :: Ptr a -> CString -> IO ()+foreign import ccall unsafe "static fpstring.h & debug_free" debug_free+    :: FunPtr (Ptr a -> IO ())+debugForeignPtr fp n =+    withCString n $ \cname-> withForeignPtr fp $ \p->+    do debug_alloc p cname+       addForeignPtrFinalizer debug_free fp+-- #else+debugForeignPtr _ _ = return ()+-- #endif+-- #endif++-- -----------------------------------------------------------------------------+-- unsafeWithInternals++-- | Do something with the internals of a PackedString. Beware of+-- altering the contents!+unsafeWithInternals :: B.ByteString -> (Ptr Word8 -> Int -> IO a) -> IO a+unsafeWithInternals ps f+ = case BI.toForeignPtr ps of+   (fp,s,l) -> withForeignPtr fp $ \p -> f (p `plusPtr` s) l++-- | readIntPS skips any whitespace at the beginning of its argument, and+-- reads an Int from the beginning of the PackedString.  If there is no+-- integer at the beginning of the string, it returns Nothing, otherwise it+-- just returns the int read, along with a B.ByteString containing the+-- remainder of its input.++readIntPS :: B.ByteString -> Maybe (Int, B.ByteString)+readIntPS = BC.readInt . BC.dropWhile isSpace++-- -----------------------------------------------------------------------------+-- Destructor functions (taking PackedStrings apart)++unpackPSfromUTF8 :: B.ByteString -> String+unpackPSfromUTF8 ps =+ case BI.toForeignPtr ps of+   (_,_, 0) -> ""+   (x,s,l)  ->+    unsafePerformIO $ withForeignPtr x $ \p->+    do outbuf <- mallocArray l+       lout <- fromIntegral `fmap`+               utf8_to_ints outbuf (p `plusPtr` s) (fromIntegral l)+       when (lout < 0) $ error "Bad UTF8!"+       str <- (map (chr . fromIntegral)) `fmap` peekArray lout outbuf+       free outbuf+       return str++foreign import ccall unsafe "static fpstring.h utf8_to_ints" utf8_to_ints+    :: Ptr Int -> Ptr Word8 -> CInt -> IO CInt++-- -----------------------------------------------------------------------------+-- List-mimicking functions for PackedStrings++{-# INLINE ifHeadThenTail #-}+ifHeadThenTail :: Word8 -> B.ByteString -> Maybe B.ByteString+ifHeadThenTail c s = case uncons s of+    Just (w, t) | w == c    -> Just t+    _                       -> Nothing++------------------------------------------------------------------------+-- A reimplementation of Data.ByteString.Char8.dropSpace, but+-- specialised to darcs' need for a 4 way isspace.+--+-- TODO: if it is safe to use the expanded definition of isSpaceWord8+-- provided by Data.ByteString.Char8, then all this can go.++-- A locale-independent isspace(3) so patches are interpreted the same everywhere.+-- ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\r')+isSpaceWord8 :: Word8 -> Bool+isSpaceWord8 w =+    w == 0x20 ||    -- ' '+    w == 0x09 ||    -- '\t'+    w == 0x0A ||    -- '\n'+    w == 0x0D       -- '\r'+{-# INLINE isSpaceWord8 #-}++firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int+firstnonspace !ptr !n !m+    | n >= m    = return n+    | otherwise = do w <- peekElemOff ptr n+                     if isSpaceWord8 w then firstnonspace ptr (n+1) m else return n++firstspace :: Ptr Word8 -> Int -> Int -> IO Int+firstspace !ptr !n !m+    | n >= m    = return n+    | otherwise = do w <- peekElemOff ptr n+                     if (not . isSpaceWord8) w then firstspace ptr (n+1) m else return n++-- | 'dropSpace' efficiently returns the 'ByteString' argument with+-- white space Chars removed from the front. It is more efficient than+-- calling dropWhile for removing whitespace. I.e.+--+-- > dropWhile isSpace == dropSpace+--+dropSpace :: B.ByteString -> B.ByteString+dropSpace (BI.PS x s l) = BI.inlinePerformIO $ withForeignPtr x $ \p -> do+    i <- firstnonspace (p `plusPtr` s) 0 l+    return $! if i == l then B.empty else BI.PS x (s+i) (l-i)+{-# INLINE dropSpace #-}++-- | 'breakSpace' returns the pair of ByteStrings when the argument is+-- broken at the first whitespace byte. I.e.+--+-- > break isSpace == breakSpace+--+breakSpace :: B.ByteString -> (B.ByteString,B.ByteString)+breakSpace (BI.PS x s l) = BI.inlinePerformIO $ withForeignPtr x $ \p -> do+    i <- firstspace (p `plusPtr` s) 0 l+    return $! case () of {_+        | i == 0    -> (B.empty, BI.PS x s l)+        | i == l    -> (BI.PS x s l, B.empty)+        | otherwise -> (BI.PS x s i, BI.PS x (s+i) (l-i))+    }+{-# INLINE breakSpace #-}++------------------------------------------------------------------------++{-# INLINE is_funky #-}+is_funky :: B.ByteString -> Bool+is_funky ps = case BI.toForeignPtr ps of+   (x,s,l) ->+    unsafePerformIO $ withForeignPtr x $ \p->+    (/=0) `fmap` has_funky_char (p `plusPtr` s) (fromIntegral l)++foreign import ccall unsafe "fpstring.h has_funky_char" has_funky_char+    :: Ptr Word8 -> CInt -> IO CInt++------------------------------------------------------------------------++-- ByteString rewrites break (=='x') to breakByte 'x'+--  break ((==) x) = breakChar x+--  break (==x) = breakChar x+--++{-+{-# INLINE breakOnPS #-}+breakOnPS :: Char -> B.ByteString -> (B.ByteString, B.ByteString)+breakOnPS c p = case BC.elemIndex c p of+                Nothing -> (p, BC.empty)+                Just n  -> (B.take n p, B.drop n p)+-}++{-# INLINE hashPS #-}+hashPS :: B.ByteString -> Int32+hashPS ps =+   case BI.toForeignPtr ps of+   (x,s,l) ->+    unsafePerformIO $ withForeignPtr x $ \p->+    do hash (p `plusPtr` s) l++hash :: Ptr Word8 -> Int -> IO Int32+hash ptr len = f (0 :: Int32) ptr len+ where f h _ 0 = return h+       f h p n = do x <- peek p+                    let !h' =  (fromIntegral x) + (rotateL h 8)+                    f h' (p `advancePtr` 1) (n-1)++{-# INLINE substrPS #-}+substrPS :: B.ByteString -> B.ByteString -> Maybe Int+substrPS tok str+    | B.null tok = Just 0+    | B.length tok > B.length str = Nothing+    | otherwise = do n <- BC.elemIndex (BC.head tok) str+                     let ttok = B.tail tok+                         reststr = B.drop (n+1) str+                     if ttok == B.take (B.length ttok) reststr+                        then Just n+                        else ((n+1)+) `fmap` substrPS tok reststr++------------------------------------------------------------------------++-- TODO: replace breakFirstPS and breakLastPS with definitions based on+-- ByteString's break/breakEnd+{-# INLINE breakFirstPS #-}+breakFirstPS :: Char -> B.ByteString -> Maybe (B.ByteString,B.ByteString)+breakFirstPS c p = case BC.elemIndex c p of+                   Nothing -> Nothing+                   Just n -> Just (B.take n p, B.drop (n+1) p)++{-# INLINE breakLastPS #-}+breakLastPS :: Char -> B.ByteString -> Maybe (B.ByteString,B.ByteString)+breakLastPS c p = case BC.elemIndexEnd c p of+                  Nothing -> Nothing+                  Just n -> Just (B.take n p, B.drop (n+1) p)++-- TODO: rename+{-# INLINE linesPS #-}+linesPS :: B.ByteString -> [B.ByteString]+linesPS ps+     | B.null ps = [B.empty]+     | otherwise = BC.split '\n' ps++{- QuickCheck property:++import Test.QuickCheck+import qualified Data.ByteString.Char8 as BC+import Data.Char+instance Arbitrary BC.ByteString where+    arbitrary = fmap BC.pack arbitrary+instance Arbitrary Char where+  arbitrary = chr `fmap` choose (32,127)+deepCheck = check (defaultConfig { configMaxTest = 10000})+testLines =  deepCheck (\x -> (linesPS x == linesPSOld x))+linesPSOld ps = case  BC.elemIndex '\n' ps of+             Nothing -> [ps]+             Just n -> B.take n ps : linesPS (B.drop (n+1) ps) -}++{-| This function acts exactly like the "Prelude" unlines function, or like+"Data.ByteString.Char8" 'unlines', but with one important difference: it will+produce a string which may not end with a newline! That is:++> unlinesPS ["foo", "bar"]++evaluates to \"foo\\nbar\", not \"foo\\nbar\\n\"! This point should hold true for+'linesPS' as well.++TODO: rename this function. -}+unlinesPS :: [B.ByteString] -> B.ByteString+unlinesPS [] = BC.empty+unlinesPS x  = BC.init $ BC.unlines x+{-# INLINE unlinesPS #-}+{- QuickCheck property:++testUnlines = deepCheck (\x -> (unlinesPS x == unlinesPSOld x))+unlinesPSOld ss = BC.concat $ intersperse_newlines ss+    where intersperse_newlines (a:b:s) = a : newline : intersperse_newlines (b:s)+          intersperse_newlines s = s+          newline = BC.pack "\n" -}++-- -----------------------------------------------------------------------------+-- gzReadFilePS++-- | Read an entire file, which may or may not be gzip compressed, directly+-- into a 'B.ByteString'.++-- #ifndef HAVE_HASKELL_ZLIB+foreign import ccall unsafe "static zlib.h gzopen" c_gzopen+    :: CString -> CString -> IO (Ptr ())+foreign import ccall unsafe "static zlib.h gzclose" c_gzclose+    :: Ptr () -> IO ()+foreign import ccall unsafe "static zlib.h gzread" c_gzread+    :: Ptr () -> Ptr Word8 -> CInt -> IO CInt+foreign import ccall unsafe "static zlib.h gzwrite" c_gzwrite+    :: Ptr () -> Ptr Word8 -> CInt -> IO CInt+-- #endif++gzReadFilePS :: FilePath -> IO B.ByteString+gzReadFilePS f = do+    h <- openBinaryFile f ReadMode+    header <- B.hGet h 2+    if header /= BC.pack "\31\139"+       then do hClose h+               mmapFilePS f+       else do hSeek h SeekFromEnd (-4)+               len <- hGetLittleEndInt h+               hClose h+-- #ifdef HAVE_HASKELL_ZLIB+               -- Passing the length to GZ.decompressWith means+               -- that BL.toChunks only produces one chunk, which in turn+               -- means that B.concat won't need to copy data.+               -- If the length is wrong this will just affect efficiency, not correctness+               let decompress = GZ.decompressWith GZ.defaultDecompressParams {+                                  GZ.decompressBufferSize = len+                                }+               fmap (B.concat . BL.toChunks . decompress) $+-- #ifdef HAVE_OLD_BYTESTRING+                        -- bytestring < 0.9.1 had a bug where it did not know to close handles upon EOF+                        -- performance would be better with a newer bytestring and lazy+                        -- readFile below -- ratify readFile: comment+                        fmap (BL.fromChunks . (:[])) $+                        B.readFile f  -- ratify readFile: immediately consumed+-- #else+                        BL.readFile f -- ratify readFile: immediately consumed by the conversion to a strict bytestring+-- #endif+-- #else+               withCString f $ \fstr-> withCString "rb" $ \rb-> do+                 gzf <- c_gzopen fstr rb+                 when (gzf == nullPtr) $ fail $ "problem opening file "++f+                 fp <- BI.mallocByteString len+                 debugForeignPtr fp $ "gzReadFilePS "++f+                 lread <- withForeignPtr fp $ \p ->+                          c_gzread gzf p (fromIntegral len)+                 c_gzclose gzf+                 when (fromIntegral lread /= len) $+                      fail $ "problem gzreading file "++f+                 return $ fromForeignPtr fp 0 len+-- #endif++hGetLittleEndInt :: Handle -> IO Int+hGetLittleEndInt h = do+    b1 <- ord `fmap` hGetChar h+    b2 <- ord `fmap` hGetChar h+    b3 <- ord `fmap` hGetChar h+    b4 <- ord `fmap` hGetChar h+    return $ b1 + 256*b2 + 65536*b3 + 16777216*b4++gzWriteFilePS :: FilePath -> B.ByteString -> IO ()+gzWriteFilePS f ps = gzWriteFilePSs f [ps]++gzWriteFilePSs :: FilePath -> [B.ByteString] -> IO ()+gzWriteFilePSs f pss  =+-- #ifdef HAVE_HASKELL_ZLIB+    BL.writeFile f $ GZ.compress $ BL.fromChunks pss+-- #else+    withCString f $ \fstr -> withCString "wb" $ \wb -> do+    gzf <- c_gzopen fstr wb+    when (gzf == nullPtr) $ fail $ "problem gzopening file for write: "++f+    mapM_ (gzWriteToGzf gzf) pss `catch`+              \_ -> fail $ "problem gzwriting file: "++f+    c_gzclose gzf++gzWriteToGzf :: Ptr () -> B.ByteString -> IO ()+gzWriteToGzf gzf ps = case BI.toForeignPtr ps of+ (_,_,0) -> return () -- avoid calling gzwrite with 0 length this would+                      -- trouble on some versions of zlib, and is always+                      -- unnecessary.+ (x,s,l) -> do+    lw <- withForeignPtr x $ \p -> c_gzwrite gzf (p `plusPtr` s)+                                                 (fromIntegral l)+    when (fromIntegral lw /= l) $ fail $ "problem in gzWriteToGzf"+-- #endif++-- -----------------------------------------------------------------------------+-- mmapFilePS++-- | Like readFilePS, this reads an entire file directly into a+-- 'B.ByteString', but it is even more efficient.  It involves directly+-- mapping the file to memory.  This has the advantage that the contents of+-- the file never need to be copied.  Also, under memory pressure the page+-- may simply be discarded, wile in the case of readFilePS it would need to+-- be written to swap.  If you read many small files, mmapFilePS will be+-- less memory-efficient than readFilePS, since each mmapFilePS takes up a+-- separate page of memory.  Also, you can run into bus errors if the file+-- is modified.  NOTE: as with 'readFilePS', the string representation in+-- the file is assumed to be ISO-8859-1.++mmapFilePS :: FilePath -> IO B.ByteString+-- #ifdef HAVE_MMAP+mmapFilePS f = do+  x <- mmapFileByteString f Nothing+   `catch` (\_ -> do+                     size <- fileSize `fmap` getSymbolicLinkStatus f+                     if size == 0+                        then return B.empty+                        else performGC >> mmapFileByteString f Nothing)+  return x+-- #else+mmapFilePS = B.readFile+-- #endif++-- -------------------------------------------------------------------------+-- fromPS2Hex++foreign import ccall unsafe "static fpstring.h conv_to_hex" conv_to_hex+    :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()++fromPS2Hex :: B.ByteString -> B.ByteString+fromPS2Hex ps = case BI.toForeignPtr ps of+          (x,s,l) ->+           BI.unsafeCreate (2*l) $ \p -> withForeignPtr x $ \f ->+           conv_to_hex p (f `plusPtr` s) $ fromIntegral l++-- -------------------------------------------------------------------------+-- fromHex2PS++foreign import ccall unsafe "static fpstring.h conv_from_hex" conv_from_hex+    :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()++fromHex2PS :: B.ByteString -> B.ByteString+fromHex2PS ps = case BI.toForeignPtr ps of+          (x,s,l) ->+           BI.unsafeCreate (l `div` 2) $ \p -> withForeignPtr x $ \f ->+           conv_from_hex p (f `plusPtr` s) (fromIntegral $ l `div` 2)++-- -------------------------------------------------------------------------+-- betweenLinesPS++-- | betweenLinesPS returns the B.ByteString between the two lines given,+-- or Nothing if they do not appear.++betweenLinesPS :: B.ByteString -> B.ByteString -> B.ByteString+               -> Maybe (B.ByteString)+betweenLinesPS start end ps+ = case break (start ==) (linesPS ps) of+       (_, _:rest@(bs1:_)) ->+           case BI.toForeignPtr bs1 of+            (ps1,s1,_) ->+             case break (end ==) rest of+               (_, bs2:_) -> case BI.toForeignPtr bs2 of (_,s2,_) -> Just $ fromForeignPtr ps1 s1 (s2 - s1)+               _ -> Nothing+       _ -> Nothing++-- -------------------------------------------------------------------------+-- break_after_nth_newline++break_after_nth_newline :: Int -> B.ByteString+                        -> Maybe (B.ByteString, B.ByteString)+break_after_nth_newline 0 the_ps | B.null the_ps = Just (B.empty, B.empty)+break_after_nth_newline n the_ps =+  case BI.toForeignPtr the_ps of+  (fp,the_s,l) ->+   unsafePerformIO $ withForeignPtr fp $ \p ->+   do let findit 0 s | s == end = return $ Just (the_ps, B.empty)+          findit _ s | s == end = return Nothing+          findit 0 s = let left_l = s - the_s+                       in return $ Just (fromForeignPtr fp the_s left_l,+                                         fromForeignPtr fp s (l - left_l))+          findit i s = do w <- peekElemOff p s+                          if w == nl then findit (i-1) (s+1)+                                     else findit i (s+1)+          nl = BI.c2w '\n'+          end = the_s + l+      findit n the_s++-- -------------------------------------------------------------------------+-- break_before_nth_newline++break_before_nth_newline :: Int -> B.ByteString -> (B.ByteString, B.ByteString)+break_before_nth_newline 0 the_ps+ | B.null the_ps = (B.empty, B.empty)+break_before_nth_newline n the_ps =+ case BI.toForeignPtr the_ps of+ (fp,the_s,l) ->+   unsafePerformIO $ withForeignPtr fp $ \p ->+   do let findit _ s | s == end = return (the_ps, B.empty)+          findit i s = do w <- peekElemOff p s+                          if w == nl+                            then if i == 0+                                 then let left_l = s - the_s+                                      in return (fromForeignPtr fp the_s left_l,+                                                 fromForeignPtr fp s (l - left_l))+                                 else findit (i-1) (s+1)+                            else findit i (s+1)+          nl = BI.c2w '\n'+          end = the_s + l+      findit n the_s
+ tests/examples/ByteStringUtils.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ByteStringUtils.hs.parser.golden view

file too large to diff

+ tests/examples/ByteStringUtils.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () (Just (ModuleHead () (ModuleName () "ByteStringUtils") Nothing (Just (ExportSpecList () [EVar () (UnQual () (Ident () "unsafeWithInternals")),EVar () (UnQual () (Ident () "unpackPSfromUTF8")),EVar () (UnQual () (Ident () "gzReadFilePS")),EVar () (UnQual () (Ident () "mmapFilePS")),EVar () (UnQual () (Ident () "gzWriteFilePS")),EVar () (UnQual () (Ident () "gzWriteFilePSs")),EVar () (UnQual () (Ident () "ifHeadThenTail")),EVar () (UnQual () (Ident () "dropSpace")),EVar () (UnQual () (Ident () "breakSpace")),EVar () (UnQual () (Ident () "linesPS")),EVar () (UnQual () (Ident () "unlinesPS")),EVar () (UnQual () (Ident () "hashPS")),EVar () (UnQual () (Ident () "breakFirstPS")),EVar () (UnQual () (Ident () "breakLastPS")),EVar () (UnQual () (Ident () "substrPS")),EVar () (UnQual () (Ident () "readIntPS")),EVar () (UnQual () (Ident () "is_funky")),EVar () (UnQual () (Ident () "fromHex2PS")),EVar () (UnQual () (Ident () "fromPS2Hex")),EVar () (UnQual () (Ident () "betweenLinesPS")),EVar () (UnQual () (Ident () "break_after_nth_newline")),EVar () (UnQual () (Ident () "break_before_nth_newline")),EVar () (UnQual () (Ident () "intercalate"))])))) [LanguagePragma () [Ident () "BangPatterns",Ident () "ForeignFunctionInterface",Ident () "CPP"]] [ImportDecl {importAnn = (), importModule = ModuleName () "Prelude", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () True [IVar () (Ident () "catch")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "B"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Char8", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BC"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Internal", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BI"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "intercalate"),IVar () (Ident () "uncons")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Internal", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "fromForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Control.Exception", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "catch")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO.Unsafe", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "unsafePerformIO")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Storable", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "peekElemOff"),IVar () (Ident () "peek")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Marshal.Alloc", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "free")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Marshal.Array", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "mallocArray"),IVar () (Ident () "peekArray"),IVar () (Ident () "advancePtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.C.Types", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "CInt")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Bits", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "rotateL")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Char", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "chr"),IVar () (Ident () "ord"),IVar () (Ident () "isSpace")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Word", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "Word8")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Int", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "Int32")])},ImportDecl {importAnn = (), importModule = ModuleName () "Control.Monad", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "when")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "nullPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "ForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "plusPtr"),IAbs () (NoNamespace ()) (Ident () "Ptr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "withForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "addForeignPtrFinalizer")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "FunPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Lazy", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BL"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Codec.Compression.GZip", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "GZ"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.C.String", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "CString"),IVar () (Ident () "withCString")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO.MMap", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "mmapFileByteString")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.Mem", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "performGC")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.Posix.Files", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "fileSize"),IVar () (Ident () "getSymbolicLinkStatus")])}] [TypeSig () [Ident () "debugForeignPtr"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "ForeignPtr"))) (TyVar () (Ident () "a"))) (TyFun () (TyCon () (UnQual () (Ident () "String"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h debug_alloc") (Ident () "debug_alloc") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyVar () (Ident () "a"))) (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h & debug_free") (Ident () "debug_free") (TyApp () (TyCon () (UnQual () (Ident () "FunPtr"))) (TyParen () (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyVar () (Ident () "a"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),FunBind () [Match () (Ident () "debugForeignPtr") [PVar () (Ident () "fp"),PVar () (Ident () "n")] (UnGuardedRhs () (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Var () (UnQual () (Ident () "n")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "cname")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Qualifier () (App () (App () (Var () (UnQual () (Ident () "debug_alloc"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "cname")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "addForeignPtrFinalizer"))) (Var () (UnQual () (Ident () "debug_free")))) (Var () (UnQual () (Ident () "fp"))))])))))) Nothing,Match () (Ident () "debugForeignPtr") [PWildCard (),PWildCard ()] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Con () (Special () (UnitCon ()))))) Nothing],TypeSig () [Ident () "unsafeWithInternals"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyParen () (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyVar () (Ident () "a")))))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyVar () (Ident () "a"))))),FunBind () [Match () (Ident () "unsafeWithInternals") [PVar () (Ident () "ps"),PVar () (Ident () "f")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (Var () (UnQual () (Ident () "f"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Var () (UnQual () (Ident () "l"))))))) Nothing])) Nothing],TypeSig () [Ident () "readIntPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (UnQual () (Ident () "Int")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))]))),PatBind () (PVar () (Ident () "readIntPS")) (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BC") (Ident () "readInt"))) (QVarOp () (UnQual () (Symbol () "."))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "dropWhile"))) (Var () (UnQual () (Ident () "isSpace")))))) Nothing,TypeSig () [Ident () "unpackPSfromUTF8"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "String")))),FunBind () [Match () (Ident () "unpackPSfromUTF8") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PWildCard (),PWildCard (),PLit () (Signless ()) (Int () 0 "0")]) (UnGuardedRhs () (Lit () (String () "" ""))) Nothing,Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "outbuf")) (App () (Var () (UnQual () (Ident () "mallocArray"))) (Var () (UnQual () (Ident () "l")))),Generator () (PVar () (Ident () "lout")) (InfixApp () (Var () (UnQual () (Ident () "fromIntegral"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (App () (Var () (UnQual () (Ident () "utf8_to_ints"))) (Var () (UnQual () (Ident () "outbuf")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l"))))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "lout"))) (QVarOp () (UnQual () (Symbol () "<"))) (Lit () (Int () 0 "0"))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (UnQual () (Ident () "error"))) (Lit () (String () "Bad UTF8!" "Bad UTF8!")))),Generator () (PVar () (Ident () "str")) (InfixApp () (Paren () (App () (Var () (UnQual () (Ident () "map"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "chr"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "fromIntegral"))))))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "peekArray"))) (Var () (UnQual () (Ident () "lout")))) (Var () (UnQual () (Ident () "outbuf"))))),Qualifier () (App () (Var () (UnQual () (Ident () "free"))) (Var () (UnQual () (Ident () "outbuf")))),Qualifier () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "str"))))]))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h utf8_to_ints") (Ident () "utf8_to_ints") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Int")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),InlineSig () True Nothing (UnQual () (Ident () "ifHeadThenTail")),TypeSig () [Ident () "ifHeadThenTail"] (TyFun () (TyCon () (UnQual () (Ident () "Word8"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))))),FunBind () [Match () (Ident () "ifHeadThenTail") [PVar () (Ident () "c"),PVar () (Ident () "s")] (UnGuardedRhs () (Case () (App () (Var () (UnQual () (Ident () "uncons"))) (Var () (UnQual () (Ident () "s")))) [Alt () (PApp () (UnQual () (Ident () "Just")) [PTuple () Boxed [PVar () (Ident () "w"),PVar () (Ident () "t")]]) (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "c"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "t"))))]) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing],TypeSig () [Ident () "isSpaceWord8"] (TyFun () (TyCon () (UnQual () (Ident () "Word8"))) (TyCon () (UnQual () (Ident () "Bool")))),FunBind () [Match () (Ident () "isSpaceWord8") [PVar () (Ident () "w")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 32 "0x20"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 9 "0x09"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 10 "0x0A"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 13 "0x0D"))))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "isSpaceWord8")),TypeSig () [Ident () "firstnonspace"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))))),FunBind () [Match () (Ident () "firstnonspace") [PBangPat () (PVar () (Ident () "ptr")),PBangPat () (PVar () (Ident () "n")),PBangPat () (PVar () (Ident () "m"))] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () ">="))) (Var () (UnQual () (Ident () "m"))))] (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "n")))),Qualifier () (If () (App () (Var () (UnQual () (Ident () "isSpaceWord8"))) (Var () (UnQual () (Ident () "w")))) (App () (App () (App () (Var () (UnQual () (Ident () "firstnonspace"))) (Var () (UnQual () (Ident () "ptr")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "m")))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))))])]) Nothing],TypeSig () [Ident () "firstspace"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))))),FunBind () [Match () (Ident () "firstspace") [PBangPat () (PVar () (Ident () "ptr")),PBangPat () (PVar () (Ident () "n")),PBangPat () (PVar () (Ident () "m"))] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () ">="))) (Var () (UnQual () (Ident () "m"))))] (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "n")))),Qualifier () (If () (App () (Paren () (InfixApp () (Var () (UnQual () (Ident () "not"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "isSpaceWord8"))))) (Var () (UnQual () (Ident () "w")))) (App () (App () (App () (Var () (UnQual () (Ident () "firstspace"))) (Var () (UnQual () (Ident () "ptr")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "m")))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))))])]) Nothing],TypeSig () [Ident () "dropSpace"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "dropSpace") [PParen () (PApp () (Qual () (ModuleName () "BI") (Ident () "PS")) [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")])] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BI") (Ident () "inlinePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "i")) (App () (App () (App () (Var () (UnQual () (Ident () "firstnonspace"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "l")))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$!"))) (If () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "l")))) (Var () (Qual () (ModuleName () "B") (Ident () "empty"))) (App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "i")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "i"))))))))]))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "dropSpace")),TypeSig () [Ident () "breakSpace"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])),FunBind () [Match () (Ident () "breakSpace") [PParen () (PApp () (Qual () (ModuleName () "BI") (Ident () "PS")) [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")])] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BI") (Ident () "inlinePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "i")) (App () (App () (App () (Var () (UnQual () (Ident () "firstspace"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "l")))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$!"))) (Case () (Con () (Special () (UnitCon ()))) [Alt () (PWildCard ()) (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0")))] (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "l")))]),GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "l"))))] (Tuple () Boxed [App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "l"))),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Tuple () Boxed [App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "i"))),App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "i")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "i")))))])]) Nothing]))]))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakSpace")),InlineSig () True Nothing (UnQual () (Ident () "is_funky")),TypeSig () [Ident () "is_funky"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "Bool")))),FunBind () [Match () (Ident () "is_funky") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (RightSection () (QVarOp () (UnQual () (Symbol () "/="))) (Lit () (Int () 0 "0"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "has_funky_char"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l"))))))))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "fpstring.h has_funky_char") (Ident () "has_funky_char") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt")))))),InlineSig () True Nothing (UnQual () (Ident () "hashPS")),TypeSig () [Ident () "hashPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "Int32")))),FunBind () [Match () (Ident () "hashPS") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Qualifier () (App () (App () (Var () (UnQual () (Ident () "hash"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Var () (UnQual () (Ident () "l"))))]))))) Nothing])) Nothing],TypeSig () [Ident () "hash"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int32")))))),FunBind () [Match () (Ident () "hash") [PVar () (Ident () "ptr"),PVar () (Ident () "len")] (UnGuardedRhs () (App () (App () (App () (Var () (UnQual () (Ident () "f"))) (Paren () (ExpTypeSig () (Lit () (Int () 0 "0")) (TyCon () (UnQual () (Ident () "Int32")))))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "len"))))) (Just (BDecls () [FunBind () [Match () (Ident () "f") [PVar () (Ident () "h"),PWildCard (),PLit () (Signless ()) (Int () 0 "0")] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "h"))))) Nothing,Match () (Ident () "f") [PVar () (Ident () "h"),PVar () (Ident () "p"),PVar () (Ident () "n")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "x")) (App () (Var () (UnQual () (Ident () "peek"))) (Var () (UnQual () (Ident () "p")))),LetStmt () (BDecls () [PatBind () (PBangPat () (PVar () (Ident () "h'"))) (UnGuardedRhs () (InfixApp () (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "x"))))) (QVarOp () (UnQual () (Symbol () "+"))) (Paren () (App () (App () (Var () (UnQual () (Ident () "rotateL"))) (Var () (UnQual () (Ident () "h")))) (Lit () (Int () 8 "8")))))) Nothing]),Qualifier () (App () (App () (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "h'")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "advancePtr"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1")))))])) Nothing]]))],InlineSig () True Nothing (UnQual () (Ident () "substrPS")),TypeSig () [Ident () "substrPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyCon () (UnQual () (Ident () "Int")))))),FunBind () [Match () (Ident () "substrPS") [PVar () (Ident () "tok"),PVar () (Ident () "str")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "tok"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Lit () (Int () 0 "0"))),GuardedRhs () [Qualifier () (InfixApp () (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "tok")))) (QVarOp () (UnQual () (Symbol () ">"))) (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "str")))))] (Con () (UnQual () (Ident () "Nothing"))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "n")) (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndex"))) (Paren () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "head"))) (Var () (UnQual () (Ident () "tok")))))) (Var () (UnQual () (Ident () "str")))),LetStmt () (BDecls () [PatBind () (PVar () (Ident () "ttok")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "B") (Ident () "tail"))) (Var () (UnQual () (Ident () "tok"))))) Nothing,PatBind () (PVar () (Ident () "reststr")) (UnGuardedRhs () (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "str"))))) Nothing]),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "ttok"))) (QVarOp () (UnQual () (Symbol () "=="))) (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Paren () (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "ttok")))))) (Var () (UnQual () (Ident () "reststr"))))) (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "n")))) (InfixApp () (LeftSection () (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1")))) (QVarOp () (UnQual () (Symbol () "+")))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "substrPS"))) (Var () (UnQual () (Ident () "tok")))) (Var () (UnQual () (Ident () "reststr"))))))])]) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakFirstPS")),TypeSig () [Ident () "breakFirstPS"] (TyFun () (TyCon () (UnQual () (Ident () "Char"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "breakFirstPS") [PVar () (Ident () "c"),PVar () (Ident () "p")] (UnGuardedRhs () (Case () (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndex"))) (Var () (UnQual () (Ident () "c")))) (Var () (UnQual () (Ident () "p")))) [Alt () (PApp () (UnQual () (Ident () "Nothing")) []) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing,Alt () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "n")]) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "p"))),App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "p")))]))) Nothing])) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakLastPS")),TypeSig () [Ident () "breakLastPS"] (TyFun () (TyCon () (UnQual () (Ident () "Char"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "breakLastPS") [PVar () (Ident () "c"),PVar () (Ident () "p")] (UnGuardedRhs () (Case () (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndexEnd"))) (Var () (UnQual () (Ident () "c")))) (Var () (UnQual () (Ident () "p")))) [Alt () (PApp () (UnQual () (Ident () "Nothing")) []) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing,Alt () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "n")]) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "p"))),App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "p")))]))) Nothing])) Nothing],InlineSig () True Nothing (UnQual () (Ident () "linesPS")),TypeSig () [Ident () "linesPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "linesPS") [PVar () (Ident () "ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "ps"))))] (List () [Var () (Qual () (ModuleName () "B") (Ident () "empty"))]),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "split"))) (Lit () (Char () '\n' "\\n"))) (Var () (UnQual () (Ident () "ps"))))]) Nothing],TypeSig () [Ident () "unlinesPS"] (TyFun () (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "unlinesPS") [PList () []] (UnGuardedRhs () (Var () (Qual () (ModuleName () "BC") (Ident () "empty")))) Nothing,Match () (Ident () "unlinesPS") [PVar () (Ident () "x")] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BC") (Ident () "init"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "unlines"))) (Var () (UnQual () (Ident () "x")))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "unlinesPS")),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzopen") (Ident () "c_gzopen") (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyParen () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzclose") (Ident () "c_gzclose") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzread") (Ident () "c_gzread") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzwrite") (Ident () "c_gzwrite") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),TypeSig () [Ident () "gzReadFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "gzReadFilePS") [PVar () (Ident () "f")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "h")) (App () (App () (Var () (UnQual () (Ident () "openBinaryFile"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "ReadMode")))),Generator () (PVar () (Ident () "header")) (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "hGet"))) (Var () (UnQual () (Ident () "h")))) (Lit () (Int () 2 "2"))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "header"))) (QVarOp () (UnQual () (Symbol () "/="))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "pack"))) (Lit () (String () "\US\139" "\\31\\139")))) (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "hClose"))) (Var () (UnQual () (Ident () "h")))),Qualifier () (App () (Var () (UnQual () (Ident () "mmapFilePS"))) (Var () (UnQual () (Ident () "f"))))]) (Do () [Qualifier () (App () (App () (App () (Var () (UnQual () (Ident () "hSeek"))) (Var () (UnQual () (Ident () "h")))) (Con () (UnQual () (Ident () "SeekFromEnd")))) (Paren () (NegApp () (Lit () (Int () 4 "4"))))),Generator () (PVar () (Ident () "len")) (App () (Var () (UnQual () (Ident () "hGetLittleEndInt"))) (Var () (UnQual () (Ident () "h")))),Qualifier () (App () (Var () (UnQual () (Ident () "hClose"))) (Var () (UnQual () (Ident () "h")))),LetStmt () (BDecls () [PatBind () (PVar () (Ident () "decompress")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "GZ") (Ident () "decompressWith"))) (RecUpdate () (Var () (Qual () (ModuleName () "GZ") (Ident () "defaultDecompressParams"))) [FieldUpdate () (Qual () (ModuleName () "GZ") (Ident () "decompressBufferSize")) (Var () (UnQual () (Ident () "len")))]))) Nothing]),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "fmap"))) (Paren () (InfixApp () (Var () (Qual () (ModuleName () "B") (Ident () "concat"))) (QVarOp () (UnQual () (Symbol () "."))) (InfixApp () (Var () (Qual () (ModuleName () "BL") (Ident () "toChunks"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "decompress"))))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "fmap"))) (Paren () (InfixApp () (Var () (Qual () (ModuleName () "BL") (Ident () "fromChunks"))) (QVarOp () (UnQual () (Symbol () "."))) (RightSection () (QConOp () (Special () (Cons ()))) (List () []))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "readFile"))) (Var () (UnQual () (Ident () "f")))) (Var () (Qual () (ModuleName () "BL") (Ident () "readFile")))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "fstr")] (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Lit () (String () "rb" "rb"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "rb")] (Do () [Generator () (PVar () (Ident () "gzf")) (App () (App () (Var () (UnQual () (Ident () "c_gzopen"))) (Var () (UnQual () (Ident () "fstr")))) (Var () (UnQual () (Ident () "rb")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "gzf"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nullPtr")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem opening file " "problem opening file ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Generator () (PVar () (Ident () "fp")) (App () (Var () (Qual () (ModuleName () "BI") (Ident () "mallocByteString"))) (Var () (UnQual () (Ident () "len")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "debugForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "gzReadFilePS " "gzReadFilePS ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f"))))),Generator () (PVar () (Ident () "lread")) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (App () (Var () (UnQual () (Ident () "c_gzread"))) (Var () (UnQual () (Ident () "gzf")))) (Var () (UnQual () (Ident () "p")))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "len")))))))),Qualifier () (App () (Var () (UnQual () (Ident () "c_gzclose"))) (Var () (UnQual () (Ident () "gzf")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "lread")))) (QVarOp () (UnQual () (Symbol () "/="))) (Var () (UnQual () (Ident () "len")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzreading file " "problem gzreading file ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "len")))))])))))]))])) Nothing],TypeSig () [Ident () "hGetLittleEndInt"] (TyFun () (TyCon () (UnQual () (Ident () "Handle"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))),FunBind () [Match () (Ident () "hGetLittleEndInt") [PVar () (Ident () "h")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "b1")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b2")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b3")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b4")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "b1"))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 256 "256")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b2"))))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 65536 "65536")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b3"))))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 16777216 "16777216")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b4"))))))])) Nothing],TypeSig () [Ident () "gzWriteFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteFilePS") [PVar () (Ident () "f"),PVar () (Ident () "ps")] (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "gzWriteFilePSs"))) (Var () (UnQual () (Ident () "f")))) (List () [Var () (UnQual () (Ident () "ps"))]))) Nothing],TypeSig () [Ident () "gzWriteFilePSs"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyFun () (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteFilePSs") [PVar () (Ident () "f"),PVar () (Ident () "pss")] (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BL") (Ident () "writeFile"))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (Qual () (ModuleName () "GZ") (Ident () "compress"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (App () (App () (Var () (Qual () (ModuleName () "BL") (Ident () "fromChunks"))) (Var () (UnQual () (Ident () "pss")))) (Var () (UnQual () (Ident () "withCString")))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "fstr")] (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Lit () (String () "wb" "wb"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "wb")] (Do () [Generator () (PVar () (Ident () "gzf")) (App () (App () (Var () (UnQual () (Ident () "c_gzopen"))) (Var () (UnQual () (Ident () "fstr")))) (Var () (UnQual () (Ident () "wb")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "gzf"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nullPtr")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzopening file for write: " "problem gzopening file for write: ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (App () (App () (Var () (UnQual () (Ident () "mapM_"))) (Paren () (App () (Var () (UnQual () (Ident () "gzWriteToGzf"))) (Var () (UnQual () (Ident () "gzf")))))) (Var () (UnQual () (Ident () "pss")))) (QVarOp () (UnQual () (Ident () "catch"))) (Lambda () [PWildCard ()] (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzwriting file: " "problem gzwriting file: ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f"))))))),Qualifier () (App () (Var () (UnQual () (Ident () "c_gzclose"))) (Var () (UnQual () (Ident () "gzf"))))])))))))) Nothing],TypeSig () [Ident () "gzWriteToGzf"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteToGzf") [PVar () (Ident () "gzf"),PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PWildCard (),PWildCard (),PLit () (Signless ()) (Int () 0 "0")]) (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Con () (Special () (UnitCon ()))))) Nothing,Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "lw")) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (App () (Var () (UnQual () (Ident () "c_gzwrite"))) (Var () (UnQual () (Ident () "gzf")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l")))))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "lw")))) (QVarOp () (UnQual () (Symbol () "/="))) (Var () (UnQual () (Ident () "l")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lit () (String () "problem in gzWriteToGzf" "problem in gzWriteToGzf"))))])) Nothing])) Nothing],TypeSig () [Ident () "mmapFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "mmapFilePS") [PVar () (Ident () "f")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "x")) (InfixApp () (App () (App () (Var () (UnQual () (Ident () "mmapFileByteString"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "Nothing")))) (QVarOp () (UnQual () (Ident () "catch"))) (Paren () (Lambda () [PWildCard ()] (Do () [Generator () (PVar () (Ident () "size")) (InfixApp () (Var () (UnQual () (Ident () "fileSize"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "getSymbolicLinkStatus"))) (Var () (UnQual () (Ident () "f"))))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "size"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0"))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (Qual () (ModuleName () "B") (Ident () "empty")))) (InfixApp () (Var () (UnQual () (Ident () "performGC"))) (QVarOp () (UnQual () (Symbol () ">>"))) (App () (App () (Var () (UnQual () (Ident () "mmapFileByteString"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "Nothing"))))))])))),Qualifier () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "x"))))])) Nothing],PatBind () (PVar () (Ident () "mmapFilePS")) (UnGuardedRhs () (Var () (Qual () (ModuleName () "B") (Ident () "readFile")))) Nothing,ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h conv_to_hex") (Ident () "conv_to_hex") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),TypeSig () [Ident () "fromPS2Hex"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "fromPS2Hex") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "unsafeCreate"))) (Paren () (InfixApp () (Lit () (Int () 2 "2")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "l")))))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "f")] (InfixApp () (App () (App () (Var () (UnQual () (Ident () "conv_to_hex"))) (Var () (UnQual () (Ident () "p")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "f"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l")))))))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h conv_from_hex") (Ident () "conv_from_hex") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),TypeSig () [Ident () "fromHex2PS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "fromHex2PS") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "unsafeCreate"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Ident () "div"))) (Lit () (Int () 2 "2"))))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "f")] (App () (App () (App () (Var () (UnQual () (Ident () "conv_from_hex"))) (Var () (UnQual () (Ident () "p")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "f"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "fromIntegral"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Ident () "div"))) (Lit () (Int () 2 "2"))))))))))) Nothing])) Nothing],TypeSig () [Ident () "betweenLinesPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyParen () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))))))),FunBind () [Match () (Ident () "betweenLinesPS") [PVar () (Ident () "start"),PVar () (Ident () "end"),PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (App () (Var () (UnQual () (Ident () "break"))) (LeftSection () (Var () (UnQual () (Ident () "start"))) (QVarOp () (UnQual () (Symbol () "=="))))) (Paren () (App () (Var () (UnQual () (Ident () "linesPS"))) (Var () (UnQual () (Ident () "ps")))))) [Alt () (PTuple () Boxed [PWildCard (),PInfixApp () (PWildCard ()) (Special () (Cons ())) (PAsPat () (Ident () "rest") (PParen () (PInfixApp () (PVar () (Ident () "bs1")) (Special () (Cons ())) (PWildCard ()))))]) (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "bs1")))) [Alt () (PTuple () Boxed [PVar () (Ident () "ps1"),PVar () (Ident () "s1"),PWildCard ()]) (UnGuardedRhs () (Case () (App () (App () (Var () (UnQual () (Ident () "break"))) (LeftSection () (Var () (UnQual () (Ident () "end"))) (QVarOp () (UnQual () (Symbol () "=="))))) (Var () (UnQual () (Ident () "rest")))) [Alt () (PTuple () Boxed [PWildCard (),PInfixApp () (PVar () (Ident () "bs2")) (Special () (Cons ())) (PWildCard ())]) (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "bs2")))) [Alt () (PTuple () Boxed [PWildCard (),PVar () (Ident () "s2"),PWildCard ()]) (UnGuardedRhs () (InfixApp () (Con () (UnQual () (Ident () "Just"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "ps1")))) (Var () (UnQual () (Ident () "s1")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s2"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "s1")))))))) Nothing])) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing])) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing],TypeSig () [Ident () "break_after_nth_newline"] (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "break_after_nth_newline") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "the_ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "the_ps"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]))]) Nothing,Match () (Ident () "break_after_nth_newline") [PVar () (Ident () "n"),PVar () (Ident () "the_ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "the_ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "the_s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [LetStmt () (BDecls () [FunBind () [Match () (Ident () "findit") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [Var () (UnQual () (Ident () "the_ps")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))])))]) Nothing,Match () (Ident () "findit") [PWildCard (),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (App () (Var () (UnQual () (Ident () "return"))) (Con () (UnQual () (Ident () "Nothing"))))]) Nothing,Match () (Ident () "findit") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "s")] (UnGuardedRhs () (Let () (BDecls () [PatBind () (PVar () (Ident () "left_l")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "the_s"))))) Nothing]) (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "the_s")))) (Var () (UnQual () (Ident () "left_l"))),App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "s")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "left_l")))))]))))) Nothing,Match () (Ident () "findit") [PVar () (Ident () "i"),PVar () (Ident () "s")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "s")))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nl")))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "i")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))))])) Nothing],PatBind () (PVar () (Ident () "nl")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "c2w"))) (Lit () (Char () '\n' "\\n")))) Nothing,PatBind () (PVar () (Ident () "end")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "the_s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "l"))))) Nothing]),Qualifier () (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "the_s"))))]))))) Nothing])) Nothing],TypeSig () [Ident () "break_before_nth_newline"] (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))]))),FunBind () [Match () (Ident () "break_before_nth_newline") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "the_ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "the_ps"))))] (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))])]) Nothing,Match () (Ident () "break_before_nth_newline") [PVar () (Ident () "n"),PVar () (Ident () "the_ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "the_ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "the_s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [LetStmt () (BDecls () [FunBind () [Match () (Ident () "findit") [PWildCard (),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (App () (Var () (UnQual () (Ident () "return"))) (Tuple () Boxed [Var () (UnQual () (Ident () "the_ps")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]))]) Nothing,Match () (Ident () "findit") [PVar () (Ident () "i"),PVar () (Ident () "s")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "s")))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nl")))) (If () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0"))) (Let () (BDecls () [PatBind () (PVar () (Ident () "left_l")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "the_s"))))) Nothing]) (App () (Var () (UnQual () (Ident () "return"))) (Tuple () Boxed [App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "the_s")))) (Var () (UnQual () (Ident () "left_l"))),App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "s")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "left_l")))))]))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1")))))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "i")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))))])) Nothing],PatBind () (PVar () (Ident () "nl")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "c2w"))) (Lit () (Char () '\n' "\\n")))) Nothing,PatBind () (PVar () (Ident () "end")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "the_s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "l"))))) Nothing]),Qualifier () (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "the_s"))))]))))) Nothing])) Nothing]]++AST 2:++Module () (Just (ModuleHead () (ModuleName () "ByteStringUtils") Nothing (Just (ExportSpecList () [EVar () (UnQual () (Ident () "unsafeWithInternals")),EVar () (UnQual () (Ident () "unpackPSfromUTF8")),EVar () (UnQual () (Ident () "gzReadFilePS")),EVar () (UnQual () (Ident () "mmapFilePS")),EVar () (UnQual () (Ident () "gzWriteFilePS")),EVar () (UnQual () (Ident () "gzWriteFilePSs")),EVar () (UnQual () (Ident () "ifHeadThenTail")),EVar () (UnQual () (Ident () "dropSpace")),EVar () (UnQual () (Ident () "breakSpace")),EVar () (UnQual () (Ident () "linesPS")),EVar () (UnQual () (Ident () "unlinesPS")),EVar () (UnQual () (Ident () "hashPS")),EVar () (UnQual () (Ident () "breakFirstPS")),EVar () (UnQual () (Ident () "breakLastPS")),EVar () (UnQual () (Ident () "substrPS")),EVar () (UnQual () (Ident () "readIntPS")),EVar () (UnQual () (Ident () "is_funky")),EVar () (UnQual () (Ident () "fromHex2PS")),EVar () (UnQual () (Ident () "fromPS2Hex")),EVar () (UnQual () (Ident () "betweenLinesPS")),EVar () (UnQual () (Ident () "break_after_nth_newline")),EVar () (UnQual () (Ident () "break_before_nth_newline")),EVar () (UnQual () (Ident () "intercalate"))])))) [LanguagePragma () [Ident () "BangPatterns",Ident () "ForeignFunctionInterface",Ident () "CPP"]] [ImportDecl {importAnn = (), importModule = ModuleName () "Prelude", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () True [IVar () (Ident () "catch")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "B"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Char8", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BC"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Internal", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BI"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "intercalate"),IVar () (Ident () "uncons")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Internal", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "fromForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Control.Exception", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "catch")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO.Unsafe", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "unsafePerformIO")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Storable", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "peekElemOff"),IVar () (Ident () "peek")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Marshal.Alloc", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "free")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Marshal.Array", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "mallocArray"),IVar () (Ident () "peekArray"),IVar () (Ident () "advancePtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.C.Types", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "CInt")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Bits", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "rotateL")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Char", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "chr"),IVar () (Ident () "ord"),IVar () (Ident () "isSpace")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Word", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "Word8")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Int", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "Int32")])},ImportDecl {importAnn = (), importModule = ModuleName () "Control.Monad", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "when")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "nullPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "ForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "plusPtr"),IAbs () (NoNamespace ()) (Ident () "Ptr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "withForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "addForeignPtrFinalizer")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "FunPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Lazy", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BL"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Codec.Compression.GZip", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "GZ"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.C.String", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "CString"),IVar () (Ident () "withCString")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO.MMap", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "mmapFileByteString")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.Mem", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "performGC")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.Posix.Files", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "fileSize"),IVar () (Ident () "getSymbolicLinkStatus")])}] [TypeSig () [Ident () "debugForeignPtr"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "ForeignPtr"))) (TyVar () (Ident () "a"))) (TyFun () (TyCon () (UnQual () (Ident () "String"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h debug_alloc") (Ident () "debug_alloc") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyVar () (Ident () "a"))) (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h & debug_free") (Ident () "debug_free") (TyApp () (TyCon () (UnQual () (Ident () "FunPtr"))) (TyParen () (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyVar () (Ident () "a"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),FunBind () [Match () (Ident () "debugForeignPtr") [PVar () (Ident () "fp"),PVar () (Ident () "n")] (UnGuardedRhs () (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Var () (UnQual () (Ident () "n")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "cname")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Qualifier () (App () (App () (Var () (UnQual () (Ident () "debug_alloc"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "cname")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "addForeignPtrFinalizer"))) (Var () (UnQual () (Ident () "debug_free")))) (Var () (UnQual () (Ident () "fp"))))])))))) Nothing,Match () (Ident () "debugForeignPtr") [PWildCard (),PWildCard ()] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Con () (Special () (UnitCon ()))))) Nothing],TypeSig () [Ident () "unsafeWithInternals"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyParen () (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyVar () (Ident () "a")))))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyVar () (Ident () "a"))))),FunBind () [Match () (Ident () "unsafeWithInternals") [PVar () (Ident () "ps"),PVar () (Ident () "f")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (Var () (UnQual () (Ident () "f"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Var () (UnQual () (Ident () "l"))))))) Nothing])) Nothing],TypeSig () [Ident () "readIntPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (UnQual () (Ident () "Int")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))]))),PatBind () (PVar () (Ident () "readIntPS")) (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BC") (Ident () "readInt"))) (QVarOp () (UnQual () (Symbol () "."))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "dropWhile"))) (Var () (UnQual () (Ident () "isSpace")))))) Nothing,TypeSig () [Ident () "unpackPSfromUTF8"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "String")))),FunBind () [Match () (Ident () "unpackPSfromUTF8") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PWildCard (),PWildCard (),PLit () (Signless ()) (Int () 0 "0")]) (UnGuardedRhs () (Lit () (String () "" ""))) Nothing,Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "outbuf")) (App () (Var () (UnQual () (Ident () "mallocArray"))) (Var () (UnQual () (Ident () "l")))),Generator () (PVar () (Ident () "lout")) (InfixApp () (Var () (UnQual () (Ident () "fromIntegral"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (App () (Var () (UnQual () (Ident () "utf8_to_ints"))) (Var () (UnQual () (Ident () "outbuf")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l"))))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "lout"))) (QVarOp () (UnQual () (Symbol () "<"))) (Lit () (Int () 0 "0"))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (UnQual () (Ident () "error"))) (Lit () (String () "Bad UTF8!" "Bad UTF8!")))),Generator () (PVar () (Ident () "str")) (InfixApp () (Paren () (App () (Var () (UnQual () (Ident () "map"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "chr"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "fromIntegral"))))))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "peekArray"))) (Var () (UnQual () (Ident () "lout")))) (Var () (UnQual () (Ident () "outbuf"))))),Qualifier () (App () (Var () (UnQual () (Ident () "free"))) (Var () (UnQual () (Ident () "outbuf")))),Qualifier () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "str"))))]))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h utf8_to_ints") (Ident () "utf8_to_ints") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Int")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),InlineSig () True Nothing (UnQual () (Ident () "ifHeadThenTail")),TypeSig () [Ident () "ifHeadThenTail"] (TyFun () (TyCon () (UnQual () (Ident () "Word8"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))))),FunBind () [Match () (Ident () "ifHeadThenTail") [PVar () (Ident () "c"),PVar () (Ident () "s")] (UnGuardedRhs () (Case () (App () (Var () (UnQual () (Ident () "uncons"))) (Var () (UnQual () (Ident () "s")))) [Alt () (PApp () (UnQual () (Ident () "Just")) [PTuple () Boxed [PVar () (Ident () "w"),PVar () (Ident () "t")]]) (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "c"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "t"))))]) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing],TypeSig () [Ident () "isSpaceWord8"] (TyFun () (TyCon () (UnQual () (Ident () "Word8"))) (TyCon () (UnQual () (Ident () "Bool")))),FunBind () [Match () (Ident () "isSpaceWord8") [PVar () (Ident () "w")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 32 "32"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 9 "9"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 10 "10"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 13 "13"))))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "isSpaceWord8")),TypeSig () [Ident () "firstnonspace"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))))),FunBind () [Match () (Ident () "firstnonspace") [PBangPat () (PVar () (Ident () "ptr")),PBangPat () (PVar () (Ident () "n")),PBangPat () (PVar () (Ident () "m"))] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () ">="))) (Var () (UnQual () (Ident () "m"))))] (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "n")))),Qualifier () (If () (App () (Var () (UnQual () (Ident () "isSpaceWord8"))) (Var () (UnQual () (Ident () "w")))) (App () (App () (App () (Var () (UnQual () (Ident () "firstnonspace"))) (Var () (UnQual () (Ident () "ptr")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "m")))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))))])]) Nothing],TypeSig () [Ident () "firstspace"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))))),FunBind () [Match () (Ident () "firstspace") [PBangPat () (PVar () (Ident () "ptr")),PBangPat () (PVar () (Ident () "n")),PBangPat () (PVar () (Ident () "m"))] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () ">="))) (Var () (UnQual () (Ident () "m"))))] (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "n")))),Qualifier () (If () (App () (Paren () (InfixApp () (Var () (UnQual () (Ident () "not"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "isSpaceWord8"))))) (Var () (UnQual () (Ident () "w")))) (App () (App () (App () (Var () (UnQual () (Ident () "firstspace"))) (Var () (UnQual () (Ident () "ptr")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "m")))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))))])]) Nothing],TypeSig () [Ident () "dropSpace"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "dropSpace") [PParen () (PApp () (Qual () (ModuleName () "BI") (Ident () "PS")) [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")])] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BI") (Ident () "inlinePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "i")) (App () (App () (App () (Var () (UnQual () (Ident () "firstnonspace"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "l")))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$!"))) (If () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "l")))) (Var () (Qual () (ModuleName () "B") (Ident () "empty"))) (App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "i")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "i"))))))))]))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "dropSpace")),TypeSig () [Ident () "breakSpace"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])),FunBind () [Match () (Ident () "breakSpace") [PParen () (PApp () (Qual () (ModuleName () "BI") (Ident () "PS")) [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")])] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BI") (Ident () "inlinePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "i")) (App () (App () (App () (Var () (UnQual () (Ident () "firstspace"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "l")))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$!"))) (Case () (Con () (Special () (UnitCon ()))) [Alt () (PWildCard ()) (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0")))] (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "l")))]),GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "l"))))] (Tuple () Boxed [App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "l"))),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Tuple () Boxed [App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "i"))),App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "i")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "i")))))])]) Nothing]))]))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakSpace")),InlineSig () True Nothing (UnQual () (Ident () "is_funky")),TypeSig () [Ident () "is_funky"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "Bool")))),FunBind () [Match () (Ident () "is_funky") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (RightSection () (QVarOp () (UnQual () (Symbol () "/="))) (Lit () (Int () 0 "0"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "has_funky_char"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l"))))))))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "fpstring.h has_funky_char") (Ident () "has_funky_char") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt")))))),InlineSig () True Nothing (UnQual () (Ident () "hashPS")),TypeSig () [Ident () "hashPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "Int32")))),FunBind () [Match () (Ident () "hashPS") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Qualifier () (App () (App () (Var () (UnQual () (Ident () "hash"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Var () (UnQual () (Ident () "l"))))]))))) Nothing])) Nothing],TypeSig () [Ident () "hash"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int32")))))),FunBind () [Match () (Ident () "hash") [PVar () (Ident () "ptr"),PVar () (Ident () "len")] (UnGuardedRhs () (App () (App () (App () (Var () (UnQual () (Ident () "f"))) (Paren () (ExpTypeSig () (Lit () (Int () 0 "0")) (TyCon () (UnQual () (Ident () "Int32")))))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "len"))))) (Just (BDecls () [FunBind () [Match () (Ident () "f") [PVar () (Ident () "h"),PWildCard (),PLit () (Signless ()) (Int () 0 "0")] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "h"))))) Nothing,Match () (Ident () "f") [PVar () (Ident () "h"),PVar () (Ident () "p"),PVar () (Ident () "n")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "x")) (App () (Var () (UnQual () (Ident () "peek"))) (Var () (UnQual () (Ident () "p")))),LetStmt () (BDecls () [PatBind () (PBangPat () (PVar () (Ident () "h'"))) (UnGuardedRhs () (InfixApp () (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "x"))))) (QVarOp () (UnQual () (Symbol () "+"))) (Paren () (App () (App () (Var () (UnQual () (Ident () "rotateL"))) (Var () (UnQual () (Ident () "h")))) (Lit () (Int () 8 "8")))))) Nothing]),Qualifier () (App () (App () (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "h'")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "advancePtr"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1")))))])) Nothing]]))],InlineSig () True Nothing (UnQual () (Ident () "substrPS")),TypeSig () [Ident () "substrPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyCon () (UnQual () (Ident () "Int")))))),FunBind () [Match () (Ident () "substrPS") [PVar () (Ident () "tok"),PVar () (Ident () "str")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "tok"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Lit () (Int () 0 "0"))),GuardedRhs () [Qualifier () (InfixApp () (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "tok")))) (QVarOp () (UnQual () (Symbol () ">"))) (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "str")))))] (Con () (UnQual () (Ident () "Nothing"))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "n")) (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndex"))) (Paren () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "head"))) (Var () (UnQual () (Ident () "tok")))))) (Var () (UnQual () (Ident () "str")))),LetStmt () (BDecls () [PatBind () (PVar () (Ident () "ttok")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "B") (Ident () "tail"))) (Var () (UnQual () (Ident () "tok"))))) Nothing,PatBind () (PVar () (Ident () "reststr")) (UnGuardedRhs () (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "str"))))) Nothing]),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "ttok"))) (QVarOp () (UnQual () (Symbol () "=="))) (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Paren () (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "ttok")))))) (Var () (UnQual () (Ident () "reststr"))))) (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "n")))) (InfixApp () (LeftSection () (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1")))) (QVarOp () (UnQual () (Symbol () "+")))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "substrPS"))) (Var () (UnQual () (Ident () "tok")))) (Var () (UnQual () (Ident () "reststr"))))))])]) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakFirstPS")),TypeSig () [Ident () "breakFirstPS"] (TyFun () (TyCon () (UnQual () (Ident () "Char"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "breakFirstPS") [PVar () (Ident () "c"),PVar () (Ident () "p")] (UnGuardedRhs () (Case () (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndex"))) (Var () (UnQual () (Ident () "c")))) (Var () (UnQual () (Ident () "p")))) [Alt () (PApp () (UnQual () (Ident () "Nothing")) []) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing,Alt () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "n")]) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "p"))),App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "p")))]))) Nothing])) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakLastPS")),TypeSig () [Ident () "breakLastPS"] (TyFun () (TyCon () (UnQual () (Ident () "Char"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "breakLastPS") [PVar () (Ident () "c"),PVar () (Ident () "p")] (UnGuardedRhs () (Case () (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndexEnd"))) (Var () (UnQual () (Ident () "c")))) (Var () (UnQual () (Ident () "p")))) [Alt () (PApp () (UnQual () (Ident () "Nothing")) []) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing,Alt () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "n")]) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "p"))),App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "p")))]))) Nothing])) Nothing],InlineSig () True Nothing (UnQual () (Ident () "linesPS")),TypeSig () [Ident () "linesPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "linesPS") [PVar () (Ident () "ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "ps"))))] (List () [Var () (Qual () (ModuleName () "B") (Ident () "empty"))]),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "split"))) (Lit () (Char () '\n' "\\n"))) (Var () (UnQual () (Ident () "ps"))))]) Nothing],TypeSig () [Ident () "unlinesPS"] (TyFun () (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "unlinesPS") [PList () []] (UnGuardedRhs () (Var () (Qual () (ModuleName () "BC") (Ident () "empty")))) Nothing,Match () (Ident () "unlinesPS") [PVar () (Ident () "x")] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BC") (Ident () "init"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "unlines"))) (Var () (UnQual () (Ident () "x")))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "unlinesPS")),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzopen") (Ident () "c_gzopen") (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyParen () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzclose") (Ident () "c_gzclose") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzread") (Ident () "c_gzread") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzwrite") (Ident () "c_gzwrite") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),TypeSig () [Ident () "gzReadFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "gzReadFilePS") [PVar () (Ident () "f")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "h")) (App () (App () (Var () (UnQual () (Ident () "openBinaryFile"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "ReadMode")))),Generator () (PVar () (Ident () "header")) (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "hGet"))) (Var () (UnQual () (Ident () "h")))) (Lit () (Int () 2 "2"))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "header"))) (QVarOp () (UnQual () (Symbol () "/="))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "pack"))) (Lit () (String () "\US\139" "\\US\\139")))) (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "hClose"))) (Var () (UnQual () (Ident () "h")))),Qualifier () (App () (Var () (UnQual () (Ident () "mmapFilePS"))) (Var () (UnQual () (Ident () "f"))))]) (Do () [Qualifier () (App () (App () (App () (Var () (UnQual () (Ident () "hSeek"))) (Var () (UnQual () (Ident () "h")))) (Con () (UnQual () (Ident () "SeekFromEnd")))) (Paren () (NegApp () (Lit () (Int () 4 "4"))))),Generator () (PVar () (Ident () "len")) (App () (Var () (UnQual () (Ident () "hGetLittleEndInt"))) (Var () (UnQual () (Ident () "h")))),Qualifier () (App () (Var () (UnQual () (Ident () "hClose"))) (Var () (UnQual () (Ident () "h")))),LetStmt () (BDecls () [PatBind () (PVar () (Ident () "decompress")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "GZ") (Ident () "decompressWith"))) (RecUpdate () (Var () (Qual () (ModuleName () "GZ") (Ident () "defaultDecompressParams"))) [FieldUpdate () (Qual () (ModuleName () "GZ") (Ident () "decompressBufferSize")) (Var () (UnQual () (Ident () "len")))]))) Nothing]),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "fmap"))) (Paren () (InfixApp () (Var () (Qual () (ModuleName () "B") (Ident () "concat"))) (QVarOp () (UnQual () (Symbol () "."))) (InfixApp () (Var () (Qual () (ModuleName () "BL") (Ident () "toChunks"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "decompress"))))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "fmap"))) (Paren () (InfixApp () (Var () (Qual () (ModuleName () "BL") (Ident () "fromChunks"))) (QVarOp () (UnQual () (Symbol () "."))) (RightSection () (QConOp () (Special () (Cons ()))) (List () []))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "readFile"))) (Var () (UnQual () (Ident () "f")))) (Var () (Qual () (ModuleName () "BL") (Ident () "readFile")))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "fstr")] (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Lit () (String () "rb" "rb"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "rb")] (Do () [Generator () (PVar () (Ident () "gzf")) (App () (App () (Var () (UnQual () (Ident () "c_gzopen"))) (Var () (UnQual () (Ident () "fstr")))) (Var () (UnQual () (Ident () "rb")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "gzf"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nullPtr")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem opening file " "problem opening file ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Generator () (PVar () (Ident () "fp")) (App () (Var () (Qual () (ModuleName () "BI") (Ident () "mallocByteString"))) (Var () (UnQual () (Ident () "len")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "debugForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "gzReadFilePS " "gzReadFilePS ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f"))))),Generator () (PVar () (Ident () "lread")) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (App () (Var () (UnQual () (Ident () "c_gzread"))) (Var () (UnQual () (Ident () "gzf")))) (Var () (UnQual () (Ident () "p")))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "len")))))))),Qualifier () (App () (Var () (UnQual () (Ident () "c_gzclose"))) (Var () (UnQual () (Ident () "gzf")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "lread")))) (QVarOp () (UnQual () (Symbol () "/="))) (Var () (UnQual () (Ident () "len")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzreading file " "problem gzreading file ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "len")))))])))))]))])) Nothing],TypeSig () [Ident () "hGetLittleEndInt"] (TyFun () (TyCon () (UnQual () (Ident () "Handle"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))),FunBind () [Match () (Ident () "hGetLittleEndInt") [PVar () (Ident () "h")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "b1")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b2")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b3")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b4")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "b1"))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 256 "256")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b2"))))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 65536 "65536")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b3"))))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 16777216 "16777216")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b4"))))))])) Nothing],TypeSig () [Ident () "gzWriteFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteFilePS") [PVar () (Ident () "f"),PVar () (Ident () "ps")] (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "gzWriteFilePSs"))) (Var () (UnQual () (Ident () "f")))) (List () [Var () (UnQual () (Ident () "ps"))]))) Nothing],TypeSig () [Ident () "gzWriteFilePSs"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyFun () (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteFilePSs") [PVar () (Ident () "f"),PVar () (Ident () "pss")] (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BL") (Ident () "writeFile"))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (Qual () (ModuleName () "GZ") (Ident () "compress"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (App () (App () (Var () (Qual () (ModuleName () "BL") (Ident () "fromChunks"))) (Var () (UnQual () (Ident () "pss")))) (Var () (UnQual () (Ident () "withCString")))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "fstr")] (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Lit () (String () "wb" "wb"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "wb")] (Do () [Generator () (PVar () (Ident () "gzf")) (App () (App () (Var () (UnQual () (Ident () "c_gzopen"))) (Var () (UnQual () (Ident () "fstr")))) (Var () (UnQual () (Ident () "wb")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "gzf"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nullPtr")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzopening file for write: " "problem gzopening file for write: ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (App () (App () (Var () (UnQual () (Ident () "mapM_"))) (Paren () (App () (Var () (UnQual () (Ident () "gzWriteToGzf"))) (Var () (UnQual () (Ident () "gzf")))))) (Var () (UnQual () (Ident () "pss")))) (QVarOp () (UnQual () (Ident () "catch"))) (Lambda () [PWildCard ()] (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzwriting file: " "problem gzwriting file: ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f"))))))),Qualifier () (App () (Var () (UnQual () (Ident () "c_gzclose"))) (Var () (UnQual () (Ident () "gzf"))))])))))))) Nothing],TypeSig () [Ident () "gzWriteToGzf"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteToGzf") [PVar () (Ident () "gzf"),PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PWildCard (),PWildCard (),PLit () (Signless ()) (Int () 0 "0")]) (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Con () (Special () (UnitCon ()))))) Nothing,Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "lw")) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (App () (Var () (UnQual () (Ident () "c_gzwrite"))) (Var () (UnQual () (Ident () "gzf")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l")))))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "lw")))) (QVarOp () (UnQual () (Symbol () "/="))) (Var () (UnQual () (Ident () "l")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lit () (String () "problem in gzWriteToGzf" "problem in gzWriteToGzf"))))])) Nothing])) Nothing],TypeSig () [Ident () "mmapFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "mmapFilePS") [PVar () (Ident () "f")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "x")) (InfixApp () (App () (App () (Var () (UnQual () (Ident () "mmapFileByteString"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "Nothing")))) (QVarOp () (UnQual () (Ident () "catch"))) (Paren () (Lambda () [PWildCard ()] (Do () [Generator () (PVar () (Ident () "size")) (InfixApp () (Var () (UnQual () (Ident () "fileSize"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "getSymbolicLinkStatus"))) (Var () (UnQual () (Ident () "f"))))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "size"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0"))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (Qual () (ModuleName () "B") (Ident () "empty")))) (InfixApp () (Var () (UnQual () (Ident () "performGC"))) (QVarOp () (UnQual () (Symbol () ">>"))) (App () (App () (Var () (UnQual () (Ident () "mmapFileByteString"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "Nothing"))))))])))),Qualifier () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "x"))))])) Nothing],PatBind () (PVar () (Ident () "mmapFilePS")) (UnGuardedRhs () (Var () (Qual () (ModuleName () "B") (Ident () "readFile")))) Nothing,ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h conv_to_hex") (Ident () "conv_to_hex") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),TypeSig () [Ident () "fromPS2Hex"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "fromPS2Hex") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "unsafeCreate"))) (Paren () (InfixApp () (Lit () (Int () 2 "2")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "l")))))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "f")] (InfixApp () (App () (App () (Var () (UnQual () (Ident () "conv_to_hex"))) (Var () (UnQual () (Ident () "p")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "f"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l")))))))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h conv_from_hex") (Ident () "conv_from_hex") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),TypeSig () [Ident () "fromHex2PS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "fromHex2PS") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "unsafeCreate"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Ident () "div"))) (Lit () (Int () 2 "2"))))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "f")] (App () (App () (App () (Var () (UnQual () (Ident () "conv_from_hex"))) (Var () (UnQual () (Ident () "p")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "f"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "fromIntegral"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Ident () "div"))) (Lit () (Int () 2 "2"))))))))))) Nothing])) Nothing],TypeSig () [Ident () "betweenLinesPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyParen () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))))))),FunBind () [Match () (Ident () "betweenLinesPS") [PVar () (Ident () "start"),PVar () (Ident () "end"),PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (App () (Var () (UnQual () (Ident () "break"))) (LeftSection () (Var () (UnQual () (Ident () "start"))) (QVarOp () (UnQual () (Symbol () "=="))))) (Paren () (App () (Var () (UnQual () (Ident () "linesPS"))) (Var () (UnQual () (Ident () "ps")))))) [Alt () (PTuple () Boxed [PWildCard (),PInfixApp () (PWildCard ()) (Special () (Cons ())) (PAsPat () (Ident () "rest") (PParen () (PInfixApp () (PVar () (Ident () "bs1")) (Special () (Cons ())) (PWildCard ()))))]) (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "bs1")))) [Alt () (PTuple () Boxed [PVar () (Ident () "ps1"),PVar () (Ident () "s1"),PWildCard ()]) (UnGuardedRhs () (Case () (App () (App () (Var () (UnQual () (Ident () "break"))) (LeftSection () (Var () (UnQual () (Ident () "end"))) (QVarOp () (UnQual () (Symbol () "=="))))) (Var () (UnQual () (Ident () "rest")))) [Alt () (PTuple () Boxed [PWildCard (),PInfixApp () (PVar () (Ident () "bs2")) (Special () (Cons ())) (PWildCard ())]) (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "bs2")))) [Alt () (PTuple () Boxed [PWildCard (),PVar () (Ident () "s2"),PWildCard ()]) (UnGuardedRhs () (InfixApp () (Con () (UnQual () (Ident () "Just"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "ps1")))) (Var () (UnQual () (Ident () "s1")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s2"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "s1")))))))) Nothing])) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing])) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing],TypeSig () [Ident () "break_after_nth_newline"] (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "break_after_nth_newline") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "the_ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "the_ps"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]))]) Nothing,Match () (Ident () "break_after_nth_newline") [PVar () (Ident () "n"),PVar () (Ident () "the_ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "the_ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "the_s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [LetStmt () (BDecls () [FunBind () [Match () (Ident () "findit") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [Var () (UnQual () (Ident () "the_ps")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))])))]) Nothing,Match () (Ident () "findit") [PWildCard (),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (App () (Var () (UnQual () (Ident () "return"))) (Con () (UnQual () (Ident () "Nothing"))))]) Nothing,Match () (Ident () "findit") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "s")] (UnGuardedRhs () (Let () (BDecls () [PatBind () (PVar () (Ident () "left_l")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "the_s"))))) Nothing]) (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "the_s")))) (Var () (UnQual () (Ident () "left_l"))),App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "s")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "left_l")))))]))))) Nothing,Match () (Ident () "findit") [PVar () (Ident () "i"),PVar () (Ident () "s")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "s")))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nl")))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "i")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))))])) Nothing],PatBind () (PVar () (Ident () "nl")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "c2w"))) (Lit () (Char () '\n' "\\n")))) Nothing,PatBind () (PVar () (Ident () "end")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "the_s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "l"))))) Nothing]),Qualifier () (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "the_s"))))]))))) Nothing])) Nothing],TypeSig () [Ident () "break_before_nth_newline"] (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))]))),FunBind () [Match () (Ident () "break_before_nth_newline") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "the_ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "the_ps"))))] (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))])]) Nothing,Match () (Ident () "break_before_nth_newline") [PVar () (Ident () "n"),PVar () (Ident () "the_ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "the_ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "the_s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [LetStmt () (BDecls () [FunBind () [Match () (Ident () "findit") [PWildCard (),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (App () (Var () (UnQual () (Ident () "return"))) (Tuple () Boxed [Var () (UnQual () (Ident () "the_ps")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]))]) Nothing,Match () (Ident () "findit") [PVar () (Ident () "i"),PVar () (Ident () "s")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "s")))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nl")))) (If () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0"))) (Let () (BDecls () [PatBind () (PVar () (Ident () "left_l")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "the_s"))))) Nothing]) (App () (Var () (UnQual () (Ident () "return"))) (Tuple () Boxed [App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "the_s")))) (Var () (UnQual () (Ident () "left_l"))),App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "s")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "left_l")))))]))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1")))))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "i")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))))])) Nothing],PatBind () (PVar () (Ident () "nl")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "c2w"))) (Lit () (Char () '\n' "\\n")))) Nothing,PatBind () (PVar () (Ident () "end")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "the_s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "l"))))) Nothing]),Qualifier () (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "the_s"))))]))))) Nothing])) Nothing]]+
+ tests/examples/ByteStringUtils.hs.prettyprinter.golden view
@@ -0,0 +1,384 @@+{-# LANGUAGE BangPatterns, ForeignFunctionInterface, CPP #-}+module ByteStringUtils+       (unsafeWithInternals, unpackPSfromUTF8, gzReadFilePS, mmapFilePS,+        gzWriteFilePS, gzWriteFilePSs, ifHeadThenTail, dropSpace,+        breakSpace, linesPS, unlinesPS, hashPS, breakFirstPS, breakLastPS,+        substrPS, readIntPS, is_funky, fromHex2PS, fromPS2Hex,+        betweenLinesPS, break_after_nth_newline, break_before_nth_newline,+        intercalate)+       where+import Prelude hiding (catch)+import qualified Data.ByteString as B+import qualified Data.ByteString.Char8 as BC+import qualified Data.ByteString.Internal as BI+import Data.ByteString (intercalate, uncons)+import Data.ByteString.Internal (fromForeignPtr)+import Control.Exception (catch)+import System.IO+import System.IO.Unsafe (unsafePerformIO)+import Foreign.Storable (peekElemOff, peek)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Array (mallocArray, peekArray, advancePtr)+import Foreign.C.Types (CInt)+import Data.Bits (rotateL)+import Data.Char (chr, ord, isSpace)+import Data.Word (Word8)+import Data.Int (Int32)+import Control.Monad (when)+import Foreign.Ptr (nullPtr)+import Foreign.ForeignPtr (ForeignPtr)+import Foreign.Ptr (plusPtr, Ptr)+import Foreign.ForeignPtr (withForeignPtr)+import Foreign.ForeignPtr (addForeignPtrFinalizer)+import Foreign.Ptr (FunPtr)+import qualified Data.ByteString.Lazy as BL+import qualified Codec.Compression.GZip as GZ+import Foreign.C.String (CString, withCString)+import System.IO.MMap (mmapFileByteString)+import System.Mem (performGC)+import System.Posix.Files (fileSize, getSymbolicLinkStatus)++debugForeignPtr :: ForeignPtr a -> String -> IO ()++foreign import ccall unsafe "static fpstring.h debug_alloc"+               debug_alloc :: Ptr a -> CString -> IO ()++foreign import ccall unsafe "static fpstring.h & debug_free"+               debug_free :: FunPtr (Ptr a -> IO ())+debugForeignPtr fp n+  = withCString n $+      \ cname ->+        withForeignPtr fp $+          \ p ->+            do debug_alloc p cname+               addForeignPtrFinalizer debug_free fp+debugForeignPtr _ _ = return ()++unsafeWithInternals ::+                    B.ByteString -> (Ptr Word8 -> Int -> IO a) -> IO a+unsafeWithInternals ps f+  = case BI.toForeignPtr ps of+        (fp, s, l) -> withForeignPtr fp $ \ p -> f (p `plusPtr` s) l++readIntPS :: B.ByteString -> Maybe (Int, B.ByteString)+readIntPS = BC.readInt . BC.dropWhile isSpace++unpackPSfromUTF8 :: B.ByteString -> String+unpackPSfromUTF8 ps+  = case BI.toForeignPtr ps of+        (_, _, 0) -> ""+        (x, s, l) -> unsafePerformIO $+                       withForeignPtr x $+                         \ p ->+                           do outbuf <- mallocArray l+                              lout <- fromIntegral `fmap`+                                        utf8_to_ints outbuf (p `plusPtr` s) (fromIntegral l)+                              when (lout < 0) $ error "Bad UTF8!"+                              str <- (map (chr . fromIntegral)) `fmap` peekArray lout outbuf+                              free outbuf+                              return str++foreign import ccall unsafe "static fpstring.h utf8_to_ints"+               utf8_to_ints :: Ptr Int -> Ptr Word8 -> CInt -> IO CInt++{-# INLINE ifHeadThenTail #-}++ifHeadThenTail :: Word8 -> B.ByteString -> Maybe B.ByteString+ifHeadThenTail c s+  = case uncons s of+        Just (w, t) | w == c -> Just t+        _ -> Nothing++isSpaceWord8 :: Word8 -> Bool+isSpaceWord8 w = w == 32 || w == 9 || w == 10 || w == 13++{-# INLINE isSpaceWord8 #-}++firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int+firstnonspace !ptr !n !m+  | n >= m = return n+  | otherwise =+    do w <- peekElemOff ptr n+       if isSpaceWord8 w then firstnonspace ptr (n + 1) m else return n++firstspace :: Ptr Word8 -> Int -> Int -> IO Int+firstspace !ptr !n !m+  | n >= m = return n+  | otherwise =+    do w <- peekElemOff ptr n+       if (not . isSpaceWord8) w then firstspace ptr (n + 1) m else+         return n++dropSpace :: B.ByteString -> B.ByteString+dropSpace (BI.PS x s l)+  = BI.inlinePerformIO $+      withForeignPtr x $+        \ p ->+          do i <- firstnonspace (p `plusPtr` s) 0 l+             return $! if i == l then B.empty else BI.PS x (s + i) (l - i)++{-# INLINE dropSpace #-}++breakSpace :: B.ByteString -> (B.ByteString, B.ByteString)+breakSpace (BI.PS x s l)+  = BI.inlinePerformIO $+      withForeignPtr x $+        \ p ->+          do i <- firstspace (p `plusPtr` s) 0 l+             return $!+               case () of+                   _ | i == 0 -> (B.empty, BI.PS x s l)+                     | i == l -> (BI.PS x s l, B.empty)+                     | otherwise -> (BI.PS x s i, BI.PS x (s + i) (l - i))++{-# INLINE breakSpace #-}++{-# INLINE is_funky #-}++is_funky :: B.ByteString -> Bool+is_funky ps+  = case BI.toForeignPtr ps of+        (x, s, l) -> unsafePerformIO $+                       withForeignPtr x $+                         \ p ->+                           (/= 0) `fmap` has_funky_char (p `plusPtr` s) (fromIntegral l)++foreign import ccall unsafe "fpstring.h has_funky_char"+               has_funky_char :: Ptr Word8 -> CInt -> IO CInt++{-# INLINE hashPS #-}++hashPS :: B.ByteString -> Int32+hashPS ps+  = case BI.toForeignPtr ps of+        (x, s, l) -> unsafePerformIO $+                       withForeignPtr x $ \ p -> do hash (p `plusPtr` s) l++hash :: Ptr Word8 -> Int -> IO Int32+hash ptr len = f (0 :: Int32) ptr len+  where f h _ 0 = return h+        f h p n+          = do x <- peek p+               let !h' = (fromIntegral x) + (rotateL h 8)+               f h' (p `advancePtr` 1) (n - 1)++{-# INLINE substrPS #-}++substrPS :: B.ByteString -> B.ByteString -> Maybe Int+substrPS tok str+  | B.null tok = Just 0+  | B.length tok > B.length str = Nothing+  | otherwise =+    do n <- BC.elemIndex (BC.head tok) str+       let ttok = B.tail tok+           reststr = B.drop (n + 1) str+       if ttok == B.take (B.length ttok) reststr then Just n else+         ((n + 1) +) `fmap` substrPS tok reststr++{-# INLINE breakFirstPS #-}++breakFirstPS ::+             Char -> B.ByteString -> Maybe (B.ByteString, B.ByteString)+breakFirstPS c p+  = case BC.elemIndex c p of+        Nothing -> Nothing+        Just n -> Just (B.take n p, B.drop (n + 1) p)++{-# INLINE breakLastPS #-}++breakLastPS ::+            Char -> B.ByteString -> Maybe (B.ByteString, B.ByteString)+breakLastPS c p+  = case BC.elemIndexEnd c p of+        Nothing -> Nothing+        Just n -> Just (B.take n p, B.drop (n + 1) p)++{-# INLINE linesPS #-}++linesPS :: B.ByteString -> [B.ByteString]+linesPS ps+  | B.null ps = [B.empty]+  | otherwise = BC.split '\n' ps++unlinesPS :: [B.ByteString] -> B.ByteString+unlinesPS [] = BC.empty+unlinesPS x = BC.init $ BC.unlines x++{-# INLINE unlinesPS #-}++foreign import ccall unsafe "static zlib.h gzopen" c_gzopen ::+               CString -> CString -> IO (Ptr ())++foreign import ccall unsafe "static zlib.h gzclose" c_gzclose ::+               Ptr () -> IO ()++foreign import ccall unsafe "static zlib.h gzread" c_gzread ::+               Ptr () -> Ptr Word8 -> CInt -> IO CInt++foreign import ccall unsafe "static zlib.h gzwrite" c_gzwrite ::+               Ptr () -> Ptr Word8 -> CInt -> IO CInt++gzReadFilePS :: FilePath -> IO B.ByteString+gzReadFilePS f+  = do h <- openBinaryFile f ReadMode+       header <- B.hGet h 2+       if header /= BC.pack "\US\139" then+         do hClose h+            mmapFilePS f+         else+         do hSeek h SeekFromEnd (-4)+            len <- hGetLittleEndInt h+            hClose h+            let decompress+                  = GZ.decompressWith+                      GZ.defaultDecompressParams{GZ.decompressBufferSize = len}+            fmap (B.concat . BL.toChunks . decompress) $+              fmap (BL.fromChunks . (: [])) $ B.readFile f BL.readFile f+            withCString f $+              \ fstr ->+                withCString "rb" $+                  \ rb ->+                    do gzf <- c_gzopen fstr rb+                       when (gzf == nullPtr) $ fail $ "problem opening file " ++ f+                       fp <- BI.mallocByteString len+                       debugForeignPtr fp $ "gzReadFilePS " ++ f+                       lread <- withForeignPtr fp $+                                  \ p -> c_gzread gzf p (fromIntegral len)+                       c_gzclose gzf+                       when (fromIntegral lread /= len) $+                         fail $ "problem gzreading file " ++ f+                       return $ fromForeignPtr fp 0 len++hGetLittleEndInt :: Handle -> IO Int+hGetLittleEndInt h+  = do b1 <- ord `fmap` hGetChar h+       b2 <- ord `fmap` hGetChar h+       b3 <- ord `fmap` hGetChar h+       b4 <- ord `fmap` hGetChar h+       return $ b1 + 256 * b2 + 65536 * b3 + 16777216 * b4++gzWriteFilePS :: FilePath -> B.ByteString -> IO ()+gzWriteFilePS f ps = gzWriteFilePSs f [ps]++gzWriteFilePSs :: FilePath -> [B.ByteString] -> IO ()+gzWriteFilePSs f pss+  = BL.writeFile f $+      GZ.compress $+        BL.fromChunks pss withCString f $+          \ fstr ->+            withCString "wb" $+              \ wb ->+                do gzf <- c_gzopen fstr wb+                   when (gzf == nullPtr) $+                     fail $ "problem gzopening file for write: " ++ f+                   mapM_ (gzWriteToGzf gzf) pss `catch`+                     \ _ -> fail $ "problem gzwriting file: " ++ f+                   c_gzclose gzf++gzWriteToGzf :: Ptr () -> B.ByteString -> IO ()+gzWriteToGzf gzf ps+  = case BI.toForeignPtr ps of+        (_, _, 0) -> return ()+        (x, s, l) -> do lw <- withForeignPtr x $+                                \ p -> c_gzwrite gzf (p `plusPtr` s) (fromIntegral l)+                        when (fromIntegral lw /= l) $ fail $ "problem in gzWriteToGzf"++mmapFilePS :: FilePath -> IO B.ByteString+mmapFilePS f+  = do x <- mmapFileByteString f Nothing `catch`+              (\ _ ->+                 do size <- fileSize `fmap` getSymbolicLinkStatus f+                    if size == 0 then return B.empty else+                      performGC >> mmapFileByteString f Nothing)+       return x+mmapFilePS = B.readFile++foreign import ccall unsafe "static fpstring.h conv_to_hex"+               conv_to_hex :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()++fromPS2Hex :: B.ByteString -> B.ByteString+fromPS2Hex ps+  = case BI.toForeignPtr ps of+        (x, s, l) -> BI.unsafeCreate (2 * l) $+                       \ p ->+                         withForeignPtr x $+                           \ f -> conv_to_hex p (f `plusPtr` s) $ fromIntegral l++foreign import ccall unsafe "static fpstring.h conv_from_hex"+               conv_from_hex :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()++fromHex2PS :: B.ByteString -> B.ByteString+fromHex2PS ps+  = case BI.toForeignPtr ps of+        (x, s, l) -> BI.unsafeCreate (l `div` 2) $+                       \ p ->+                         withForeignPtr x $+                           \ f -> conv_from_hex p (f `plusPtr` s) (fromIntegral $ l `div` 2)++betweenLinesPS ::+               B.ByteString ->+                 B.ByteString -> B.ByteString -> Maybe (B.ByteString)+betweenLinesPS start end ps+  = case break (start ==) (linesPS ps) of+        (_, _ : rest@(bs1 : _)) -> case BI.toForeignPtr bs1 of+                                       (ps1, s1, _) -> case break (end ==) rest of+                                                           (_, bs2 : _) -> case BI.toForeignPtr bs2+                                                                             of+                                                                               (_, s2, _) -> Just $+                                                                                               fromForeignPtr+                                                                                                 ps1+                                                                                                 s1+                                                                                                 (s2+                                                                                                    -+                                                                                                    s1)+                                                           _ -> Nothing+        _ -> Nothing++break_after_nth_newline ::+                        Int -> B.ByteString -> Maybe (B.ByteString, B.ByteString)+break_after_nth_newline 0 the_ps+  | B.null the_ps = Just (B.empty, B.empty)+break_after_nth_newline n the_ps+  = case BI.toForeignPtr the_ps of+        (fp, the_s, l) -> unsafePerformIO $+                            withForeignPtr fp $+                              \ p ->+                                do let findit 0 s | s == end = return $ Just (the_ps, B.empty)+                                       findit _ s | s == end = return Nothing+                                       findit 0 s+                                         = let left_l = s - the_s in+                                             return $+                                               Just+                                                 (fromForeignPtr fp the_s left_l,+                                                  fromForeignPtr fp s (l - left_l))+                                       findit i s+                                         = do w <- peekElemOff p s+                                              if w == nl then findit (i - 1) (s + 1) else+                                                findit i (s + 1)+                                       nl = BI.c2w '\n'+                                       end = the_s + l+                                   findit n the_s++break_before_nth_newline ::+                         Int -> B.ByteString -> (B.ByteString, B.ByteString)+break_before_nth_newline 0 the_ps+  | B.null the_ps = (B.empty, B.empty)+break_before_nth_newline n the_ps+  = case BI.toForeignPtr the_ps of+        (fp, the_s, l) -> unsafePerformIO $+                            withForeignPtr fp $+                              \ p ->+                                do let findit _ s | s == end = return (the_ps, B.empty)+                                       findit i s+                                         = do w <- peekElemOff p s+                                              if w == nl then+                                                if i == 0 then+                                                  let left_l = s - the_s in+                                                    return+                                                      (fromForeignPtr fp the_s left_l,+                                                       fromForeignPtr fp s (l - left_l))+                                                  else findit (i - 1) (s + 1)+                                                else findit i (s + 1)+                                       nl = BI.c2w '\n'+                                       end = the_s + l+                                   findit n the_s
+ tests/examples/CApiFFI.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE CApiFFI #-}+foo = capi+
+ tests/examples/CApiFFI.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/CApiFFI.hs.parser.golden view
@@ -0,0 +1,72 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/CApiFFI.hs" 1 1 1 1+            , SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 1+            , SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 1+            , SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 1+            , SrcSpan "tests/examples/CApiFFI.hs" 4 1 4 1+            , SrcSpan "tests/examples/CApiFFI.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 1 1 1 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/CApiFFI.hs" 1 1 1 13+                , SrcSpan "tests/examples/CApiFFI.hs" 1 22 1 25+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 1 14 1 21+                , srcInfoPoints = []+                }+              "CApiFFI"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 11+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 5 2 11+               , srcInfoPoints = [ SrcSpan "tests/examples/CApiFFI.hs" 2 5 2 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 7 2 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 7 2 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 7 2 11+                        , srcInfoPoints = []+                        }+                      "capi"))))+          Nothing+      ]+  , []+  )
+ tests/examples/CApiFFI.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/CApiFFI.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE CApiFFI #-}+foo = capi
+ tests/examples/CStyleLinePragmas.hs view
@@ -0,0 +1,2 @@+#line 1 "Main.hs"+#line 2 "Main.hs"
+ tests/examples/CStyleLinePragmas.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/CStyleLinePragmas.hs" 1 1) "Parse error: #"
+ tests/examples/CStyleLinePragmas.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+  (SrcLoc "tests/examples/CStyleLinePragmas.hs" 1 1) "Parse error: #"
+ tests/examples/CStyleLinePragmas.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/CStyleLinePragmas.hs" 1 1) "Parse error: #"
+ tests/examples/CStyleLinePragmas.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/CStyleLinePragmas.hs" 1 1) "Parse error: #"
+ tests/examples/ClassContext.hs view
@@ -0,0 +1,2 @@+f :: Ord (i Int) => i Int -> i Int+f = undefined
+ tests/examples/ClassContext.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassContext.hs.parser.golden view
@@ -0,0 +1,228 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ClassContext.hs" 1 1 1 1+            , SrcSpan "tests/examples/ClassContext.hs" 1 1 1 1+            , SrcSpan "tests/examples/ClassContext.hs" 1 1 1 1+            , SrcSpan "tests/examples/ClassContext.hs" 2 1 2 1+            , SrcSpan "tests/examples/ClassContext.hs" 3 1 3 1+            , SrcSpan "tests/examples/ClassContext.hs" 3 1 3 1+            ]+        }+      Nothing+      []+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 1 1 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ClassContext.hs" 1 3 1 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 1 1 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 35+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9+                                    , srcInfoPoints = []+                                    }+                                  "Ord")))+                         (TyParen+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 10 1 17+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/ClassContext.hs" 1 10 1 11+                                  , SrcSpan "tests/examples/ClassContext.hs" 1 16 1 17+                                  ]+                              }+                            (TyApp+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 11 1 16+                                 , srcInfoPoints = []+                                 }+                               (TyVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12+                                       , srcInfoPoints = []+                                       }+                                     "i"))+                               (TyCon+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16+                                          , srcInfoPoints = []+                                          }+                                        "Int")))))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ClassContext.hs" 1 27 1 29 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 26+                     , srcInfoPoints = []+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 22+                           , srcInfoPoints = []+                           }+                         "i"))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 23 1 26+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 23 1 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 23 1 26+                              , srcInfoPoints = []+                              }+                            "Int"))))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 30 1 35+                     , srcInfoPoints = []+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 30 1 31+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 30 1 31+                           , srcInfoPoints = []+                           }+                         "i"))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 32 1 35+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 32 1 35+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 32 1 35+                              , srcInfoPoints = []+                              }+                            "Int"))))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 1 2 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 1 2 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 1 2 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 3 2 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ClassContext.hs" 2 3 2 4 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 5 2 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 5 2 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 5 2 14+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      ]+  , []+  )
+ tests/examples/ClassContext.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassContext.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+f :: Ord (i Int) => i Int -> i Int+f = undefined
+ tests/examples/ClassDeclSrcSpan.hs view
@@ -0,0 +1,6 @@++class C1 a where+    toString :: a -> String++t1 :: String+t1 = "Hello"
+ tests/examples/ClassDeclSrcSpan.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassDeclSrcSpan.hs.parser.golden view
@@ -0,0 +1,204 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 2 1+            , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 2 1+            , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 2 1+            , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 1 5 1+            , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 1 6 1+            , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 7 1 7 1+            , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 7 1 7 1+            ]+        }+      Nothing+      []+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 3 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 2 6+                , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 12 2 17+                , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 5 3 5+                , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 1 5 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 7 2 11+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 7 2 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 7 2 9+                     , srcInfoPoints = []+                     }+                   "C1"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 10 2 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 10 2 11+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 5 3 28+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 14 3 16 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 5 3 28+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 14 3 16 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 5 3 13+                          , srcInfoPoints = []+                          }+                        "toString"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 17 3 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 19 3 21 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 17 3 18+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 17 3 18+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 22 3 28+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 22 3 28+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 22 3 28+                                  , srcInfoPoints = []+                                  }+                                "String")))))+             ])+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 1 5 13+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 4 5 6 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 1 5 3+                , srcInfoPoints = []+                }+              "t1"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 7 5 13+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 7 5 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 7 5 13+                     , srcInfoPoints = []+                     }+                   "String")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 1 6 13+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 1 6 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 1 6 3+                  , srcInfoPoints = []+                  }+                "t1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 4 6 13+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 4 6 5 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 6 6 13+                  , srcInfoPoints = []+                  }+                (String+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 6 6 13+                     , srcInfoPoints = []+                     }+                   "Hello"+                   "Hello")))+          Nothing+      ]+  , []+  )
+ tests/examples/ClassDeclSrcSpan.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassDeclSrcSpan.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+class C1 a where+        toString :: a -> String++t1 :: String+t1 = "Hello"
+ tests/examples/ClassInstType.hs view
@@ -0,0 +1,17 @@+module ClassInstType where++class Dir d where+  localDir :: d -> IO FilePath++instance Dir Directory where+  localDir (Local f) = return f++  localDir (Darcs {url=url,darcsVersion=Patch patch,subDirectory=subDir}) = do+    tmp <- createTempDir 0 "haskelld"+    darcsOut <- runDarcsCommand tmp "get" ["--lazy","--to-match","hash "++ patch,url,"fs"]+    print darcsOut+    let (ExitSuccess,"",out) = darcsOut+    print out+    return $ tmp </> "fs" </> subDir++type URL = String
+ tests/examples/ClassInstType.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassInstType.hs.parser.golden view
@@ -0,0 +1,1420 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 1 1 18 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ClassInstType.hs" 1 1 1 1+            , SrcSpan "tests/examples/ClassInstType.hs" 1 1 1 1+            , SrcSpan "tests/examples/ClassInstType.hs" 3 1 3 1+            , SrcSpan "tests/examples/ClassInstType.hs" 6 1 6 1+            , SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 1+            , SrcSpan "tests/examples/ClassInstType.hs" 18 1 18 1+            , SrcSpan "tests/examples/ClassInstType.hs" 18 1 18 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 1 1 1 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ClassInstType.hs" 1 1 1 7+                  , SrcSpan "tests/examples/ClassInstType.hs" 1 22 1 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 1 8 1 21+                 , srcInfoPoints = []+                 }+               "ClassInstType")+            Nothing+            Nothing))+      []+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 1 4 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ClassInstType.hs" 3 1 3 6+                , SrcSpan "tests/examples/ClassInstType.hs" 3 13 3 18+                , SrcSpan "tests/examples/ClassInstType.hs" 4 3 4 3+                , SrcSpan "tests/examples/ClassInstType.hs" 6 1 6 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 7 3 12+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 7 3 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 7 3 10+                     , srcInfoPoints = []+                     }+                   "Dir"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 11 3 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 11 3 12+                     , srcInfoPoints = []+                     }+                   "d")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 3 4 31+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ClassInstType.hs" 4 12 4 14 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 3 4 31+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/ClassInstType.hs" 4 12 4 14 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 3 4 11+                          , srcInfoPoints = []+                          }+                        "localDir"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 15 4 31+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ClassInstType.hs" 4 17 4 19 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 15 4 16+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 15 4 16+                               , srcInfoPoints = []+                               }+                             "d"))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 20 4 31+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 20 4 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ClassInstType.hs" 4 20 4 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ClassInstType.hs" 4 20 4 22+                                     , srcInfoPoints = []+                                     }+                                   "IO")))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 23 4 31+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ClassInstType.hs" 4 23 4 31+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ClassInstType.hs" 4 23 4 31+                                     , srcInfoPoints = []+                                     }+                                   "FilePath"))))))+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 1 17 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ClassInstType.hs" 6 1 6 9+                , SrcSpan "tests/examples/ClassInstType.hs" 6 24 6 29+                , SrcSpan "tests/examples/ClassInstType.hs" 7 3 7 3+                , SrcSpan "tests/examples/ClassInstType.hs" 9 3 9 3+                , SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 23+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 23+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 13+                           , srcInfoPoints = []+                           }+                         "Dir")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 14 6 23+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 14 6 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 14 6 23+                           , srcInfoPoints = []+                           }+                         "Directory")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 3 15 37+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 3 15 37+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 3 7 32+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 3 7 11+                             , srcInfoPoints = []+                             }+                           "localDir")+                        [ PParen+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 12 7 21+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/ClassInstType.hs" 7 12 7 13+                                  , SrcSpan "tests/examples/ClassInstType.hs" 7 20 7 21+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 13 7 20+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassInstType.hs" 7 13 7 18+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 7 13 7 18+                                       , srcInfoPoints = []+                                       }+                                     "Local"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ClassInstType.hs" 7 19 7 20+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ClassInstType.hs" 7 19 7 20+                                        , srcInfoPoints = []+                                        }+                                      "f")+                               ])+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 22 7 32+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/ClassInstType.hs" 7 22 7 23 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 24 7 32+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/ClassInstType.hs" 7 24 7 30+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/ClassInstType.hs" 7 24 7 30+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/ClassInstType.hs" 7 24 7 30+                                         , srcInfoPoints = []+                                         }+                                       "return")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/ClassInstType.hs" 7 31 7 32+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/ClassInstType.hs" 7 31 7 32+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/ClassInstType.hs" 7 31 7 32+                                         , srcInfoPoints = []+                                         }+                                       "f")))))+                        Nothing+                    , Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 9 3 15 37+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 9 3 9 11+                             , srcInfoPoints = []+                             }+                           "localDir")+                        [ PParen+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 9 12 9 74+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/ClassInstType.hs" 9 12 9 13+                                  , SrcSpan "tests/examples/ClassInstType.hs" 9 73 9 74+                                  ]+                              }+                            (PRec+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 9 13 9 73+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/ClassInstType.hs" 9 19 9 20+                                     , SrcSpan "tests/examples/ClassInstType.hs" 9 27 9 28+                                     , SrcSpan "tests/examples/ClassInstType.hs" 9 52 9 53+                                     , SrcSpan "tests/examples/ClassInstType.hs" 9 72 9 73+                                     ]+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassInstType.hs" 9 13 9 18+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 9 13 9 18+                                       , srcInfoPoints = []+                                       }+                                     "Darcs"))+                               [ PFieldPat+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ClassInstType.hs" 9 20 9 27+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/ClassInstType.hs" 9 23 9 24 ]+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ClassInstType.hs" 9 20 9 23+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ClassInstType.hs" 9 20 9 23+                                           , srcInfoPoints = []+                                           }+                                         "url"))+                                   (PVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ClassInstType.hs" 9 24 9 27+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ClassInstType.hs" 9 24 9 27+                                           , srcInfoPoints = []+                                           }+                                         "url"))+                               , PFieldPat+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ClassInstType.hs" 9 28 9 52+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/ClassInstType.hs" 9 40 9 41 ]+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ClassInstType.hs" 9 28 9 40+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ClassInstType.hs" 9 28 9 40+                                           , srcInfoPoints = []+                                           }+                                         "darcsVersion"))+                                   (PApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ClassInstType.hs" 9 41 9 52+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ClassInstType.hs" 9 41 9 46+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ClassInstType.hs" 9 41 9 46+                                              , srcInfoPoints = []+                                              }+                                            "Patch"))+                                      [ PVar+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/ClassInstType.hs" 9 47 9 52+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/ClassInstType.hs" 9 47 9 52+                                               , srcInfoPoints = []+                                               }+                                             "patch")+                                      ])+                               , PFieldPat+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ClassInstType.hs" 9 53 9 72+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/ClassInstType.hs" 9 65 9 66 ]+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ClassInstType.hs" 9 53 9 65+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ClassInstType.hs" 9 53 9 65+                                           , srcInfoPoints = []+                                           }+                                         "subDirectory"))+                                   (PVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ClassInstType.hs" 9 66 9 72+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ClassInstType.hs" 9 66 9 72+                                           , srcInfoPoints = []+                                           }+                                         "subDir"))+                               ])+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/ClassInstType.hs" 9 75 15 37+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/ClassInstType.hs" 9 75 9 76 ]+                             }+                           (Do+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/ClassInstType.hs" 9 77 15 37+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/ClassInstType.hs" 9 77 9 79+                                    , SrcSpan "tests/examples/ClassInstType.hs" 10 5 10 5+                                    , SrcSpan "tests/examples/ClassInstType.hs" 11 5 11 5+                                    , SrcSpan "tests/examples/ClassInstType.hs" 12 5 12 5+                                    , SrcSpan "tests/examples/ClassInstType.hs" 13 5 13 5+                                    , SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 5+                                    , SrcSpan "tests/examples/ClassInstType.hs" 15 5 15 5+                                    , SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 0+                                    ]+                                }+                              [ Generator+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassInstType.hs" 10 5 10 38+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/ClassInstType.hs" 10 9 10 11 ]+                                    }+                                  (PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 10 5 10 8+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 10 5 10 8+                                          , srcInfoPoints = []+                                          }+                                        "tmp"))+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 10 12 10 38+                                       , srcInfoPoints = []+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 10 12 10 27+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 10 12 10 25+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 10 12 10 25+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ClassInstType.hs"+                                                         10+                                                         12+                                                         10+                                                         25+                                                   , srcInfoPoints = []+                                                   }+                                                 "createTempDir")))+                                        (Lit+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 10 26 10 27+                                             , srcInfoPoints = []+                                             }+                                           (Int+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 10 26 10 27+                                                , srcInfoPoints = []+                                                }+                                              0+                                              "0")))+                                     (Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 10 28 10 38+                                          , srcInfoPoints = []+                                          }+                                        (String+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 10 28 10 38+                                             , srcInfoPoints = []+                                             }+                                           "haskelld"+                                           "haskelld")))+                              , Generator+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassInstType.hs" 11 5 11 91+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/ClassInstType.hs" 11 14 11 16 ]+                                    }+                                  (PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 11 5 11 13+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 11 5 11 13+                                          , srcInfoPoints = []+                                          }+                                        "darcsOut"))+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 11 17 11 91+                                       , srcInfoPoints = []+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 11 17 11 42+                                          , srcInfoPoints = []+                                          }+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 11 17 11 36+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 11 17 11 32+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ClassInstType.hs"+                                                         11+                                                         17+                                                         11+                                                         32+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/ClassInstType.hs"+                                                            11+                                                            17+                                                            11+                                                            32+                                                      , srcInfoPoints = []+                                                      }+                                                    "runDarcsCommand")))+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 11 33 11 36+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ClassInstType.hs"+                                                         11+                                                         33+                                                         11+                                                         36+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/ClassInstType.hs"+                                                            11+                                                            33+                                                            11+                                                            36+                                                      , srcInfoPoints = []+                                                      }+                                                    "tmp"))))+                                        (Lit+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 11 37 11 42+                                             , srcInfoPoints = []+                                             }+                                           (String+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 11 37 11 42+                                                , srcInfoPoints = []+                                                }+                                              "get"+                                              "get")))+                                     (List+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 11 43 11 91+                                          , srcInfoPoints =+                                              [ SrcSpan+                                                  "tests/examples/ClassInstType.hs" 11 43 11 44+                                              , SrcSpan+                                                  "tests/examples/ClassInstType.hs" 11 52 11 53+                                              , SrcSpan+                                                  "tests/examples/ClassInstType.hs" 11 65 11 66+                                              , SrcSpan+                                                  "tests/examples/ClassInstType.hs" 11 81 11 82+                                              , SrcSpan+                                                  "tests/examples/ClassInstType.hs" 11 85 11 86+                                              , SrcSpan+                                                  "tests/examples/ClassInstType.hs" 11 90 11 91+                                              ]+                                          }+                                        [ Lit+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ClassInstType.hs" 11 44 11 52+                                              , srcInfoPoints = []+                                              }+                                            (String+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ClassInstType.hs" 11 44 11 52+                                                 , srcInfoPoints = []+                                                 }+                                               "--lazy"+                                               "--lazy")+                                        , Lit+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ClassInstType.hs" 11 53 11 65+                                              , srcInfoPoints = []+                                              }+                                            (String+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ClassInstType.hs" 11 53 11 65+                                                 , srcInfoPoints = []+                                                 }+                                               "--to-match"+                                               "--to-match")+                                        , InfixApp+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ClassInstType.hs" 11 66 11 81+                                              , srcInfoPoints = []+                                              }+                                            (Lit+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ClassInstType.hs" 11 66 11 73+                                                 , srcInfoPoints = []+                                                 }+                                               (String+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/ClassInstType.hs"+                                                          11+                                                          66+                                                          11+                                                          73+                                                    , srcInfoPoints = []+                                                    }+                                                  "hash "+                                                  "hash "))+                                            (QVarOp+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ClassInstType.hs" 11 73 11 75+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/ClassInstType.hs"+                                                          11+                                                          73+                                                          11+                                                          75+                                                    , srcInfoPoints = []+                                                    }+                                                  (Symbol+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/ClassInstType.hs"+                                                             11+                                                             73+                                                             11+                                                             75+                                                       , srcInfoPoints = []+                                                       }+                                                     "++")))+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ClassInstType.hs" 11 76 11 81+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/ClassInstType.hs"+                                                          11+                                                          76+                                                          11+                                                          81+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/ClassInstType.hs"+                                                             11+                                                             76+                                                             11+                                                             81+                                                       , srcInfoPoints = []+                                                       }+                                                     "patch")))+                                        , Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ClassInstType.hs" 11 82 11 85+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ClassInstType.hs" 11 82 11 85+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/ClassInstType.hs"+                                                          11+                                                          82+                                                          11+                                                          85+                                                    , srcInfoPoints = []+                                                    }+                                                  "url"))+                                        , Lit+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ClassInstType.hs" 11 86 11 90+                                              , srcInfoPoints = []+                                              }+                                            (String+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ClassInstType.hs" 11 86 11 90+                                                 , srcInfoPoints = []+                                                 }+                                               "fs"+                                               "fs")+                                        ]))+                              , Qualifier+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassInstType.hs" 12 5 12 19+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 12 5 12 19+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 12 5 12 10+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 12 5 12 10+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 12 5 12 10+                                                , srcInfoPoints = []+                                                }+                                              "print")))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 12 11 12 19+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 12 11 12 19+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 12 11 12 19+                                                , srcInfoPoints = []+                                                }+                                              "darcsOut"))))+                              , LetStmt+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassInstType.hs" 13 5 13 40+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/ClassInstType.hs" 13 5 13 8 ]+                                    }+                                  (BDecls+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 13 9 13 40+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/ClassInstType.hs" 13 9 13 9+                                           , SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 0+                                           ]+                                       }+                                     [ PatBind+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ClassInstType.hs" 13 9 13 40+                                           , srcInfoPoints = []+                                           }+                                         (PTuple+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ClassInstType.hs" 13 9 13 29+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/ClassInstType.hs" 13 9 13 10+                                                  , SrcSpan+                                                      "tests/examples/ClassInstType.hs" 13 21 13 22+                                                  , SrcSpan+                                                      "tests/examples/ClassInstType.hs" 13 24 13 25+                                                  , SrcSpan+                                                      "tests/examples/ClassInstType.hs" 13 28 13 29+                                                  ]+                                              }+                                            Boxed+                                            [ PApp+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/ClassInstType.hs"+                                                        13+                                                        10+                                                        13+                                                        21+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/ClassInstType.hs"+                                                           13+                                                           10+                                                           13+                                                           21+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/ClassInstType.hs"+                                                              13+                                                              10+                                                              13+                                                              21+                                                        , srcInfoPoints = []+                                                        }+                                                      "ExitSuccess"))+                                                []+                                            , PLit+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/ClassInstType.hs"+                                                        13+                                                        22+                                                        13+                                                        24+                                                  , srcInfoPoints = []+                                                  }+                                                (Signless+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/ClassInstType.hs"+                                                           13+                                                           22+                                                           13+                                                           24+                                                     , srcInfoPoints = []+                                                     })+                                                (String+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/ClassInstType.hs"+                                                           13+                                                           22+                                                           13+                                                           24+                                                     , srcInfoPoints = []+                                                     }+                                                   ""+                                                   "")+                                            , PVar+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/ClassInstType.hs"+                                                        13+                                                        25+                                                        13+                                                        28+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/ClassInstType.hs"+                                                           13+                                                           25+                                                           13+                                                           28+                                                     , srcInfoPoints = []+                                                     }+                                                   "out")+                                            ])+                                         (UnGuardedRhs+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ClassInstType.hs" 13 30 13 40+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/ClassInstType.hs" 13 30 13 31+                                                  ]+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/ClassInstType.hs" 13 32 13 40+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/ClassInstType.hs"+                                                          13+                                                          32+                                                          13+                                                          40+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/ClassInstType.hs"+                                                             13+                                                             32+                                                             13+                                                             40+                                                       , srcInfoPoints = []+                                                       }+                                                     "darcsOut"))))+                                         Nothing+                                     ])+                              , Qualifier+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 14+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 14+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 10+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 14 5 14 10+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 14 5 14 10+                                                , srcInfoPoints = []+                                                }+                                              "print")))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 14 11 14 14+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 14 11 14 14+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 14 11 14 14+                                                , srcInfoPoints = []+                                                }+                                              "out"))))+                              , Qualifier+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ClassInstType.hs" 15 5 15 37+                                    , srcInfoPoints = []+                                    }+                                  (InfixApp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ClassInstType.hs" 15 5 15 37+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 15 5 15 11+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 15 5 15 11+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 15 5 15 11+                                                , srcInfoPoints = []+                                                }+                                              "return")))+                                     (QVarOp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 15 12 15 13+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 15 12 15 13+                                             , srcInfoPoints = []+                                             }+                                           (Symbol+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 15 12 15 13+                                                , srcInfoPoints = []+                                                }+                                              "$")))+                                     (InfixApp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ClassInstType.hs" 15 14 15 37+                                          , srcInfoPoints = []+                                          }+                                        (InfixApp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 15 14 15 26+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 15 14 15 17+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ClassInstType.hs"+                                                         15+                                                         14+                                                         15+                                                         17+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/ClassInstType.hs"+                                                            15+                                                            14+                                                            15+                                                            17+                                                      , srcInfoPoints = []+                                                      }+                                                    "tmp")))+                                           (QVarOp+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 15 18 15 21+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ClassInstType.hs"+                                                         15+                                                         18+                                                         15+                                                         21+                                                   , srcInfoPoints = []+                                                   }+                                                 (Symbol+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/ClassInstType.hs"+                                                            15+                                                            18+                                                            15+                                                            21+                                                      , srcInfoPoints = []+                                                      }+                                                    "</>")))+                                           (Lit+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 15 22 15 26+                                                , srcInfoPoints = []+                                                }+                                              (String+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ClassInstType.hs"+                                                         15+                                                         22+                                                         15+                                                         26+                                                   , srcInfoPoints = []+                                                   }+                                                 "fs"+                                                 "fs")))+                                        (QVarOp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 15 27 15 30+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 15 27 15 30+                                                , srcInfoPoints = []+                                                }+                                              (Symbol+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ClassInstType.hs"+                                                         15+                                                         27+                                                         15+                                                         30+                                                   , srcInfoPoints = []+                                                   }+                                                 "</>")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/ClassInstType.hs" 15 31 15 37+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/ClassInstType.hs" 15 31 15 37+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/ClassInstType.hs"+                                                         15+                                                         31+                                                         15+                                                         37+                                                   , srcInfoPoints = []+                                                   }+                                                 "subDir")))))+                              ]))+                        Nothing+                    ])+             ])+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 5+                , SrcSpan "tests/examples/ClassInstType.hs" 17 10 17 11+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 17 6 17 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 17 6 17 9+                  , srcInfoPoints = []+                  }+                "URL"))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ClassInstType.hs" 17 12 17 18+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ClassInstType.hs" 17 12 17 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ClassInstType.hs" 17 12 17 18+                     , srcInfoPoints = []+                     }+                   "String")))+      ]+  , []+  )
+ tests/examples/ClassInstType.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassInstType.hs.prettyprinter.golden view
@@ -0,0 +1,19 @@+module ClassInstType where++class Dir d where+        localDir :: d -> IO FilePath++instance Dir Directory where+        localDir (Local f) = return f+        localDir+          (Darcs{url = url, darcsVersion = Patch patch,+                 subDirectory = subDir})+          = do tmp <- createTempDir 0 "haskelld"+               darcsOut <- runDarcsCommand tmp "get"+                             ["--lazy", "--to-match", "hash " ++ patch, url, "fs"]+               print darcsOut+               let (ExitSuccess, "", out) = darcsOut+               print out+               return $ tmp </> "fs" </> subDir++type URL = String
+ tests/examples/ClosedTypeFamily.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE TypeFamilies, DataKinds #-}++module ClosedTypeFamily where++type family Eq x y where+  Eq x x = True+  Eq x y = False+
+ tests/examples/ClosedTypeFamily.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClosedTypeFamily.hs.parser.golden view
@@ -0,0 +1,293 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 1 1 1+            , SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 1 3 1+            , SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 1 3 1+            , SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 1 5 1+            , SrcSpan "tests/examples/ClosedTypeFamily.hs" 9 1 9 1+            , SrcSpan "tests/examples/ClosedTypeFamily.hs" 9 1 9 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 1 3 30+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 1 3 7+                  , SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 25 3 30+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 8 3 24+                 , srcInfoPoints = []+                 }+               "ClosedTypeFamily")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 1 1 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 1 1 13+                , SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 26 1 27+                , SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 38 1 41+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 28 1 37+                , srcInfoPoints = []+                }+              "DataKinds"+          ]+      ]+      []+      [ ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 1 5 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 1 5 5+                , SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 6 5 12+                , SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 20 5 25+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 13 5 19+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 13 5 17+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 13 5 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 13 5 15+                        , srcInfoPoints = []+                        }+                      "Eq"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 16 5 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 16 5 17+                        , srcInfoPoints = []+                        }+                      "x")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 18 5 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 18 5 19+                     , srcInfoPoints = []+                     }+                   "y")))+          Nothing+          Nothing+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 16+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 10 6 11 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 9+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 7+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 5+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 5+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 5+                               , srcInfoPoints = []+                               }+                             "Eq")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 6 6 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 6 6 7+                            , srcInfoPoints = []+                            }+                          "x")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 8 6 9+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 8 6 9+                         , srcInfoPoints = []+                         }+                       "x")))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 12 6 16+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 12 6 16+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 12 6 16+                         , srcInfoPoints = []+                         }+                       "True")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 10 7 11 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 9+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 7+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 5+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 5+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 5+                               , srcInfoPoints = []+                               }+                             "Eq")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 6 7 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 6 7 7+                            , srcInfoPoints = []+                            }+                          "x")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 8 7 9+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 8 7 9+                         , srcInfoPoints = []+                         }+                       "y")))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 12 7 17+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 12 7 17+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 12 7 17+                         , srcInfoPoints = []+                         }+                       "False")))+          ]+      ]+  , []+  )
+ tests/examples/ClosedTypeFamily.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClosedTypeFamily.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeFamilies, DataKinds #-}+module ClosedTypeFamily where++type family Eq x y where+        Eq x x = True+        Eq x y = False
+ tests/examples/Completesig03A.hs view
@@ -0,0 +1,6 @@+module Completesig03A where++data A = A | B++{-# COMPLETE A #-}+
+ tests/examples/Completesig03A.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Completesig03A.hs.parser.golden view
@@ -0,0 +1,123 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Completesig03A.hs" 1 1 1 1+            , SrcSpan "tests/examples/Completesig03A.hs" 1 1 1 1+            , SrcSpan "tests/examples/Completesig03A.hs" 3 1 3 1+            , SrcSpan "tests/examples/Completesig03A.hs" 5 1 5 1+            , SrcSpan "tests/examples/Completesig03A.hs" 7 1 7 1+            , SrcSpan "tests/examples/Completesig03A.hs" 7 1 7 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 1 1 1 28+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/Completesig03A.hs" 1 1 1 7+                  , SrcSpan "tests/examples/Completesig03A.hs" 1 23 1 28+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 1 8 1 22+                 , srcInfoPoints = []+                 }+               "Completesig03A")+            Nothing+            Nothing))+      []+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 3 1 3 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Completesig03A.hs" 3 8 3 9+                , SrcSpan "tests/examples/Completesig03A.hs" 3 12 3 13+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 3 6 3 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 3 6 3 7+                  , srcInfoPoints = []+                  }+                "A"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/Completesig03A.hs" 3 10 3 11+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/Completesig03A.hs" 3 10 3 11+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/Completesig03A.hs" 3 10 3 11+                      , srcInfoPoints = []+                      }+                    "A")+                 [])+          , QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/Completesig03A.hs" 3 14 3 15+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/Completesig03A.hs" 3 14 3 15+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/Completesig03A.hs" 3 14 3 15+                      , srcInfoPoints = []+                      }+                    "B")+                 [])+          ]+          []+      , CompletePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 5 1 5 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Completesig03A.hs" 5 1 5 13+                , SrcSpan "tests/examples/Completesig03A.hs" 5 16 5 19+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/Completesig03A.hs" 5 14 5 15+                , srcInfoPoints = []+                }+              "A"+          ]+          Nothing+      ]+  , []+  )
+ tests/examples/Completesig03A.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Completesig03A.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+module Completesig03A where++data A = A+       | B++{-# COMPLETE A #-}
+ tests/examples/ConstraintKinds.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+class Foo a where++data Bar a+type Bazable a b = (Bar a ~ Maybe b)++baz :: Bazable a b => a -> a+baz = id
+ tests/examples/ConstraintKinds.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds.hs.parser.golden view
@@ -0,0 +1,493 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ConstraintKinds.hs" 1 1 11 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ConstraintKinds.hs" 1 1 1 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 2 1 2 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 3 1 3 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 4 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 4 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 4 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 7 1 7 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 9 1 9 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 10 1 10 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 11 1 11 1+            , SrcSpan "tests/examples/ConstraintKinds.hs" 11 1 11 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds.hs" 1 1 1 13+                , SrcSpan "tests/examples/ConstraintKinds.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstraintKinds.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds.hs" 2 1 2 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds.hs" 2 1 2 13+                , SrcSpan "tests/examples/ConstraintKinds.hs" 2 30 2 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstraintKinds.hs" 2 14 2 29+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds.hs" 3 1 3 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds.hs" 3 1 3 13+                , SrcSpan "tests/examples/ConstraintKinds.hs" 3 36 3 39+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstraintKinds.hs" 3 14 3 35+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          ]+      ]+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 6 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 4 6+                , SrcSpan "tests/examples/ConstraintKinds.hs" 4 13 4 18+                , SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 1+                , SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 1+                , SrcSpan "tests/examples/ConstraintKinds.hs" 6 0 6 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds.hs" 4 7 4 12+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds.hs" 4 7 4 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 4 7 4 10+                     , srcInfoPoints = []+                     }+                   "Foo"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds.hs" 4 11 4 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 4 11 4 12+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just [])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 5+            , srcInfoPoints = []+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds.hs" 6 6 6 11+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 6 6 6 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 6 6 6 9+                     , srcInfoPoints = []+                     }+                   "Bar"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds.hs" 6 10 6 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 6 10 6 11+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          []+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds.hs" 7 1 7 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds.hs" 7 1 7 5+                , SrcSpan "tests/examples/ConstraintKinds.hs" 7 18 7 19+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds.hs" 7 6 7 17+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds.hs" 7 6 7 15+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 7 6 7 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 7 6 7 13+                        , srcInfoPoints = []+                        }+                      "Bazable"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 7 14 7 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 7 14 7 15+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds.hs" 7 16 7 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 7 16 7 17+                     , srcInfoPoints = []+                     }+                   "b")))+          (TyParen+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds.hs" 7 20 7 37+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ConstraintKinds.hs" 7 20 7 21+                   , SrcSpan "tests/examples/ConstraintKinds.hs" 7 36 7 37+                   ]+               }+             (TyEquals+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ConstraintKinds.hs" 7 27 7 28 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 26+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 24+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 24+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 24+                              , srcInfoPoints = []+                              }+                            "Bar")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 7 25 7 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ConstraintKinds.hs" 7 25 7 26+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 7 29 7 36+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 7 29 7 34+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ConstraintKinds.hs" 7 29 7 34+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ConstraintKinds.hs" 7 29 7 34+                              , srcInfoPoints = []+                              }+                            "Maybe")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 7 35 7 36+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ConstraintKinds.hs" 7 35 7 36+                           , srcInfoPoints = []+                           }+                         "b")))))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds.hs" 9 1 9 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 5 9 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 9 1 9 4+                , srcInfoPoints = []+                }+              "baz"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 29+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15+                                       , srcInfoPoints = []+                                       }+                                     "Bazable")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17+                                    , srcInfoPoints = []+                                    }+                                  "a")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19+                                 , srcInfoPoints = []+                                 }+                               "b"))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds.hs" 9 23 9 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 25 9 27 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 9 23 9 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 9 23 9 24+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 9 28 9 29+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 9 28 9 29+                        , srcInfoPoints = []+                        }+                      "a"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds.hs" 10 1 10 9+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds.hs" 10 1 10 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds.hs" 10 1 10 4+                  , srcInfoPoints = []+                  }+                "baz"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds.hs" 10 5 10 9+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ConstraintKinds.hs" 10 5 10 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds.hs" 10 7 10 9+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds.hs" 10 7 10 9+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds.hs" 10 7 10 9+                        , srcInfoPoints = []+                        }+                      "id"))))+          Nothing+      ]+  , []+  )
+ tests/examples/ConstraintKinds.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds.hs.prettyprinter.golden view
@@ -0,0 +1,12 @@+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}++class Foo a where++data Bar a++type Bazable a b = (Bar a ~ Maybe b)++baz :: Bazable a b => a -> a+baz = id
+ tests/examples/ConstraintKinds2.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE RankNTypes #-}++data Dict p where+    Dict :: p => Dict p
+ tests/examples/ConstraintKinds2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds2.hs.parser.golden view
@@ -0,0 +1,216 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ConstraintKinds2.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ConstraintKinds2.hs" 1 1 1 1+            , SrcSpan "tests/examples/ConstraintKinds2.hs" 2 1 2 1+            , SrcSpan "tests/examples/ConstraintKinds2.hs" 3 1 3 1+            , SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 5 1+            , SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 5 1+            , SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 5 1+            , SrcSpan "tests/examples/ConstraintKinds2.hs" 7 1 7 1+            , SrcSpan "tests/examples/ConstraintKinds2.hs" 7 1 7 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds2.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds2.hs" 1 1 1 13+                , SrcSpan "tests/examples/ConstraintKinds2.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstraintKinds2.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds2.hs" 2 1 2 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds2.hs" 2 1 2 13+                , SrcSpan "tests/examples/ConstraintKinds2.hs" 2 20 2 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstraintKinds2.hs" 2 14 2 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds2.hs" 3 1 3 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds2.hs" 3 1 3 13+                , SrcSpan "tests/examples/ConstraintKinds2.hs" 3 25 3 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstraintKinds2.hs" 3 14 3 24+                , srcInfoPoints = []+                }+              "RankNTypes"+          ]+      ]+      []+      [ GDataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 7 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds2.hs" 5 13 5 18+                , SrcSpan "tests/examples/ConstraintKinds2.hs" 6 5 6 5+                , SrcSpan "tests/examples/ConstraintKinds2.hs" 7 1 7 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 5 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds2.hs" 5 6 5 12+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds2.hs" 5 6 5 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds2.hs" 5 6 5 10+                     , srcInfoPoints = []+                     }+                   "Dict"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds2.hs" 5 11 5 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds2.hs" 5 11 5 12+                     , srcInfoPoints = []+                     }+                   "p")))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstraintKinds2.hs" 6 5 6 24+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 10 6 12 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ConstraintKinds2.hs" 6 5 6 9+                   , srcInfoPoints = []+                   }+                 "Dict")+              Nothing+              Nothing+              Nothing+              (TyForall+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 24+                   , srcInfoPoints = []+                   }+                 Nothing+                 (Just+                    (CxSingle+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]+                         }+                       (TypeA+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 14+                                  , srcInfoPoints = []+                                  }+                                "p")))))+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ConstraintKinds2.hs" 6 18 6 24+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ConstraintKinds2.hs" 6 18 6 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ConstraintKinds2.hs" 6 18 6 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ConstraintKinds2.hs" 6 18 6 22+                               , srcInfoPoints = []+                               }+                             "Dict")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ConstraintKinds2.hs" 6 23 6 24+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ConstraintKinds2.hs" 6 23 6 24+                            , srcInfoPoints = []+                            }+                          "p"))))+          ]+          []+      ]+  , []+  )
+ tests/examples/ConstraintKinds2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds2.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE RankNTypes #-}++data Dict p where+        Dict :: p => Dict p
+ tests/examples/ConstraintKinds3.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}++class Foo c a where++  bar :: (c a) => a -> a+
+ tests/examples/ConstraintKinds3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds3.hs.parser.golden view
@@ -0,0 +1,246 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 1 1+            , SrcSpan "tests/examples/ConstraintKinds3.hs" 2 1 2 1+            , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 1+            , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 1+            , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 1+            , SrcSpan "tests/examples/ConstraintKinds3.hs" 8 1 8 1+            , SrcSpan "tests/examples/ConstraintKinds3.hs" 8 1 8 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 1 13+                , SrcSpan "tests/examples/ConstraintKinds3.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstraintKinds3.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds3.hs" 2 1 2 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds3.hs" 2 1 2 13+                , SrcSpan "tests/examples/ConstraintKinds3.hs" 2 36 2 39+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstraintKinds3.hs" 2 14 2 35+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          ]+      ]+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 6 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 6+                , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 15 4 20+                , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 3+                , SrcSpan "tests/examples/ConstraintKinds3.hs" 8 1 8 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 14+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 12+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 10+                        , srcInfoPoints = []+                        }+                      "Foo"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds3.hs" 4 11 4 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstraintKinds3.hs" 4 11 4 12+                        , srcInfoPoints = []+                        }+                      "c")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstraintKinds3.hs" 4 13 4 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstraintKinds3.hs" 4 13 4 14+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 25+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 7 6 9 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 25+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 7 6 9 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 6+                          , srcInfoPoints = []+                          }+                        "bar"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 25+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 18+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 11+                                   , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 14 6 15+                                   , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 16 6 18+                                   ]+                               }+                             (ParenA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 18+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 11+                                      , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 14 6 15+                                      , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 16 6 18+                                      ]+                                  }+                                (TypeA+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 14+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 14+                                        , srcInfoPoints = []+                                        }+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/ConstraintKinds3.hs" 6 11 6 14+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ConstraintKinds3.hs" 6 11 6 12+                                              , srcInfoPoints = []+                                              }+                                            "c"))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/ConstraintKinds3.hs" 6 13 6 14+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/ConstraintKinds3.hs" 6 13 6 14+                                              , srcInfoPoints = []+                                              }+                                            "a")))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ConstraintKinds3.hs" 6 19 6 25+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 21 6 23 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ConstraintKinds3.hs" 6 19 6 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ConstraintKinds3.hs" 6 19 6 20+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ConstraintKinds3.hs" 6 24 6 25+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ConstraintKinds3.hs" 6 24 6 25+                                  , srcInfoPoints = []+                                  }+                                "a")))))+             ])+      ]+  , []+  )
+ tests/examples/ConstraintKinds3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds3.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}++class Foo c a where+        bar :: (c a) => a -> a
+ tests/examples/ConstructorAndClassOperators.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeOperators, MultiParamTypeClasses #-}++ins :: (:=>) b h => b :- h++data (:><:) a b = (:><:) a b
+ tests/examples/ConstructorAndClassOperators.hs.exactprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeOperators, MultiParamTypeClasses #-}++ins :: (:=>) b h => b :- h++data :><:   a b = :><:   a b+
+ tests/examples/ConstructorAndClassOperators.hs.parser.golden view
@@ -0,0 +1,354 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 1 1 1+            , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 1+            , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 1+            , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 1+            , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 1 5 1+            , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 6 1 6 1+            , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 1 1 54+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 1 1 13+                , SrcSpan+                    "tests/examples/ConstructorAndClassOperators.hs" 1 27 1 28+                , SrcSpan+                    "tests/examples/ConstructorAndClassOperators.hs" 1 51 1 54+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 29 1 50+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 5 3 7+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 4+                , srcInfoPoints = []+                }+              "ins"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 27+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+                     , srcInfoPoints =+                         [ SrcSpan+                             "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+                         ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+                        , srcInfoPoints =+                            [ SrcSpan+                                "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+                            ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+                           , srcInfoPoints =+                               [ SrcSpan+                                   "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+                               ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+                              , srcInfoPoints =+                                  [ SrcSpan+                                      "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+                                  ]+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan+                                       "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+                                 , srcInfoPoints =+                                     [ SrcSpan+                                         "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+                                     ]+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan+                                          "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 13+                                    , srcInfoPoints =+                                        [ SrcSpan+                                            "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 9+                                        , SrcSpan+                                            "tests/examples/ConstructorAndClassOperators.hs"+                                            3+                                            9+                                            3+                                            12+                                        , SrcSpan+                                            "tests/examples/ConstructorAndClassOperators.hs"+                                            3+                                            12+                                            3+                                            13+                                        ]+                                    }+                                  (Symbol+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/ConstructorAndClassOperators.hs"+                                             3+                                             9+                                             3+                                             12+                                       , srcInfoPoints = []+                                       }+                                     ":=>")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan+                                       "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan+                                          "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15+                                    , srcInfoPoints = []+                                    }+                                  "b")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan+                                       "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17+                                 , srcInfoPoints = []+                                 }+                               "h"))))))+             (TyInfix+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 21 3 27+                  , srcInfoPoints = []+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 21 3 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 21 3 22+                        , srcInfoPoints = []+                        }+                      "b"))+                (UnpromotedName+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 23 3 25+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 23 3 25+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 23 3 25+                           , srcInfoPoints = []+                           }+                         ":-")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 26 3 27+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 26 3 27+                        , srcInfoPoints = []+                        }+                      "h"))))+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 1 5 29+            , srcInfoPoints =+                [ SrcSpan+                    "tests/examples/ConstructorAndClassOperators.hs" 5 17 5 18+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 1 5 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 6 5 16+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 6 5 14+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 6 5 12+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 6 5 7+                         , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 7 5 11+                         , SrcSpan+                             "tests/examples/ConstructorAndClassOperators.hs" 5 11 5 12+                         ]+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 7 5 11+                        , srcInfoPoints = []+                        }+                      ":><:"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 13 5 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 13 5 14+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 15 5 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 15 5 16+                     , srcInfoPoints = []+                     }+                   "b")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 19 5 29+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 19 5 29+                   , srcInfoPoints = []+                   }+                 (Symbol+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 20 5 24+                      , srcInfoPoints = []+                      }+                    ":><:")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 26 5 27+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 26 5 27+                          , srcInfoPoints = []+                          }+                        "a")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 28 5 29+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 28 5 29+                          , srcInfoPoints = []+                          }+                        "b")+                 ])+          ]+          []+      ]+  , []+  )
+ tests/examples/ConstructorAndClassOperators.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstructorAndClassOperators.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeOperators, MultiParamTypeClasses #-}++ins :: (:=>) b h => b :- h++data (:><:) a b = (:><:) a b
+ tests/examples/ContextOrdering.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE ConstraintKinds #-}+module ContextOrdering where++foo :: (x m a) => Int+foo = 5
+ tests/examples/ContextOrdering.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ContextOrdering.hs.parser.golden view
@@ -0,0 +1,208 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ContextOrdering.hs" 1 1 1 1+            , SrcSpan "tests/examples/ContextOrdering.hs" 2 1 2 1+            , SrcSpan "tests/examples/ContextOrdering.hs" 2 1 2 1+            , SrcSpan "tests/examples/ContextOrdering.hs" 4 1 4 1+            , SrcSpan "tests/examples/ContextOrdering.hs" 5 1 5 1+            , SrcSpan "tests/examples/ContextOrdering.hs" 6 1 6 1+            , SrcSpan "tests/examples/ContextOrdering.hs" 6 1 6 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/ContextOrdering.hs" 2 1 2 29+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ContextOrdering.hs" 2 1 2 7+                  , SrcSpan "tests/examples/ContextOrdering.hs" 2 24 2 29+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/ContextOrdering.hs" 2 8 2 23+                 , srcInfoPoints = []+                 }+               "ContextOrdering")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ContextOrdering.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ContextOrdering.hs" 1 1 1 13+                , SrcSpan "tests/examples/ContextOrdering.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ContextOrdering.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ContextOrdering.hs" 4 1 4 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ContextOrdering.hs" 4 5 4 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 4 1 4 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 22+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 9+                         , SrcSpan "tests/examples/ContextOrdering.hs" 4 14 4 15+                         , SrcSpan "tests/examples/ContextOrdering.hs" 4 16 4 18+                         ]+                     }+                   (ParenA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 18+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 9+                            , SrcSpan "tests/examples/ContextOrdering.hs" 4 14 4 15+                            , SrcSpan "tests/examples/ContextOrdering.hs" 4 16 4 18+                            ]+                        }+                      (TypeA+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14+                           , srcInfoPoints = []+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14+                              , srcInfoPoints = []+                              }+                            (TyApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14+                                 , srcInfoPoints = []+                                 }+                               (TyVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 10+                                       , srcInfoPoints = []+                                       }+                                     "x"))+                               (TyVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12+                                       , srcInfoPoints = []+                                       }+                                     "m")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14+                                    , srcInfoPoints = []+                                    }+                                  "a")))))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ContextOrdering.hs" 4 19 4 22+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ContextOrdering.hs" 4 19 4 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ContextOrdering.hs" 4 19 4 22+                        , srcInfoPoints = []+                        }+                      "Int"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 1 5 8+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 1 5 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 1 5 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 5 5 8+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ContextOrdering.hs" 5 5 5 6 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 7 5 8+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 7 5 8+                     , srcInfoPoints = []+                     }+                   5+                   "5")))+          Nothing+      ]+  , []+  )
+ tests/examples/ContextOrdering.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ContextOrdering.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE ConstraintKinds #-}+module ContextOrdering where++foo :: (x m a) => Int+foo = 5
+ tests/examples/CxtWhitespace.hs view
@@ -0,0 +1,6 @@+-- is not ok+instance ( Eq h) => Eq h++-- is ok+instance ( Eq h, Eq h) => Eq h+
+ tests/examples/CxtWhitespace.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/CxtWhitespace.hs.parser.golden view
@@ -0,0 +1,268 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 1+            , SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 1+            , SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 1+            , SrcSpan "tests/examples/CxtWhitespace.hs" 5 1 5 1+            , SrcSpan "tests/examples/CxtWhitespace.hs" 7 1 7 1+            , SrcSpan "tests/examples/CxtWhitespace.hs" 7 1 7 1+            ]+        }+      Nothing+      []+      []+      [ InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 9 ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 25+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 20+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 11+                         , SrcSpan "tests/examples/CxtWhitespace.hs" 2 16 2 17+                         , SrcSpan "tests/examples/CxtWhitespace.hs" 2 18 2 20+                         ]+                     }+                   (ParenA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 20+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 11+                            , SrcSpan "tests/examples/CxtWhitespace.hs" 2 16 2 17+                            , SrcSpan "tests/examples/CxtWhitespace.hs" 2 18 2 20+                            ]+                        }+                      (TypeA+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16+                           , srcInfoPoints = []+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14+                                       , srcInfoPoints = []+                                       }+                                     "Eq")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16+                                    , srcInfoPoints = []+                                    }+                                  "h")))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 25+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 23+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 23+                           , srcInfoPoints = []+                           }+                         "Eq")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 24 2 25+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 24 2 25+                        , srcInfoPoints = []+                        }+                      "h"))))+          Nothing+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 1 5 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/CxtWhitespace.hs" 5 1 5 9 ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 10 5 31+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 10 5 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/CxtWhitespace.hs" 5 10 5 11+                         , SrcSpan "tests/examples/CxtWhitespace.hs" 5 16 5 17+                         , SrcSpan "tests/examples/CxtWhitespace.hs" 5 22 5 23+                         , SrcSpan "tests/examples/CxtWhitespace.hs" 5 24 5 26+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14+                                     , srcInfoPoints = []+                                     }+                                   "Eq")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16+                                  , srcInfoPoints = []+                                  }+                                "h")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20+                                     , srcInfoPoints = []+                                     }+                                   "Eq")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22+                                  , srcInfoPoints = []+                                  }+                                "h")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 27 5 31+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 27 5 29+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 27 5 29+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 27 5 29+                           , srcInfoPoints = []+                           }+                         "Eq")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 30 5 31+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 30 5 31+                        , srcInfoPoints = []+                        }+                      "h"))))+          Nothing+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/CxtWhitespace.hs" 1 1 1 13)+        " is not ok"+    , Comment+        False (SrcSpan "tests/examples/CxtWhitespace.hs" 4 1 4 9) " is ok"+    ]+  )
+ tests/examples/CxtWhitespace.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/CxtWhitespace.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+instance (Eq h) => Eq h++instance (Eq h, Eq h) => Eq h
+ tests/examples/DataHeadParen.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators #-}+module DataHeadParen where++data (a1 :< a2)  = Foo
+ tests/examples/DataHeadParen.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataHeadParen.hs.parser.golden view
@@ -0,0 +1,129 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DataHeadParen.hs" 1 1 1 1+            , SrcSpan "tests/examples/DataHeadParen.hs" 2 1 2 1+            , SrcSpan "tests/examples/DataHeadParen.hs" 2 1 2 1+            , SrcSpan "tests/examples/DataHeadParen.hs" 4 1 4 1+            , SrcSpan "tests/examples/DataHeadParen.hs" 5 1 5 1+            , SrcSpan "tests/examples/DataHeadParen.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 2 1 2 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/DataHeadParen.hs" 2 1 2 7+                  , SrcSpan "tests/examples/DataHeadParen.hs" 2 22 2 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 2 8 2 21+                 , srcInfoPoints = []+                 }+               "DataHeadParen")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataHeadParen.hs" 1 1 1 13+                , SrcSpan "tests/examples/DataHeadParen.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 1 4 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataHeadParen.hs" 4 18 4 19 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 1 4 5+               , srcInfoPoints = []+               })+          Nothing+          (DHParen+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 6 4 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DataHeadParen.hs" 4 6 4 7+                   , SrcSpan "tests/examples/DataHeadParen.hs" 4 15 4 16+                   ]+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 7 4 15+                  , srcInfoPoints = []+                  }+                (DHInfix+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 7 4 15+                     , srcInfoPoints = []+                     }+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 7 4 9+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 7 4 9+                           , srcInfoPoints = []+                           }+                         "a1"))+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 10 4 12+                        , srcInfoPoints = []+                        }+                      ":<"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 13 4 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 13 4 15+                        , srcInfoPoints = []+                        }+                      "a2"))))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 20 4 23+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 20 4 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 20 4 23+                      , srcInfoPoints = []+                      }+                    "Foo")+                 [])+          ]+          []+      ]+  , []+  )
+ tests/examples/DataHeadParen.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataHeadParen.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators #-}+module DataHeadParen where++data (a1 :< a2) = Foo
+ tests/examples/DataKinds.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}++class C1 (a :: Bool {- 1 -}) where+    c :: proxy a -> Int++class C2 (a :: [ * ])++data Baz = Baz+data Foo = Foo++class C3 (a :: [(Baz, Foo)])++class C4 (a :: ( * ))+++class C5 (a :: App foo baz)++class C6 (a :: (parens))++data X (a :: [*])++x1 = undefined :: X '[Int]+x2 = undefined :: X '[Int, Double]++data Y (a :: (*, Bool))++y1 = undefined :: Y '(Double, True)+y2 = undefined :: Y '(Double, 'False {-comment-})+++z1 = undefined :: X [ a -> b, X '[] ]+z2 = undefined :: Y (a -> b, True)
+ tests/examples/DataKinds.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataKinds.hs.parser.golden view
@@ -0,0 +1,1523 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 1 1 35 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DataKinds.hs" 1 1 1 1+            , SrcSpan "tests/examples/DataKinds.hs" 2 1 2 1+            , SrcSpan "tests/examples/DataKinds.hs" 3 1 3 1+            , SrcSpan "tests/examples/DataKinds.hs" 5 1 5 1+            , SrcSpan "tests/examples/DataKinds.hs" 5 1 5 1+            , SrcSpan "tests/examples/DataKinds.hs" 5 1 5 1+            , SrcSpan "tests/examples/DataKinds.hs" 8 1 8 1+            , SrcSpan "tests/examples/DataKinds.hs" 10 1 10 1+            , SrcSpan "tests/examples/DataKinds.hs" 11 1 11 1+            , SrcSpan "tests/examples/DataKinds.hs" 13 1 13 1+            , SrcSpan "tests/examples/DataKinds.hs" 15 1 15 1+            , SrcSpan "tests/examples/DataKinds.hs" 18 1 18 1+            , SrcSpan "tests/examples/DataKinds.hs" 20 1 20 1+            , SrcSpan "tests/examples/DataKinds.hs" 22 1 22 1+            , SrcSpan "tests/examples/DataKinds.hs" 24 1 24 1+            , SrcSpan "tests/examples/DataKinds.hs" 25 1 25 1+            , SrcSpan "tests/examples/DataKinds.hs" 27 1 27 1+            , SrcSpan "tests/examples/DataKinds.hs" 29 1 29 1+            , SrcSpan "tests/examples/DataKinds.hs" 30 1 30 1+            , SrcSpan "tests/examples/DataKinds.hs" 33 1 33 1+            , SrcSpan "tests/examples/DataKinds.hs" 34 1 34 1+            , SrcSpan "tests/examples/DataKinds.hs" 35 1 35 1+            , SrcSpan "tests/examples/DataKinds.hs" 35 1 35 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 1 1 1 13+                , SrcSpan "tests/examples/DataKinds.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "KindSignatures"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 2 1 2 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 2 1 2 13+                , SrcSpan "tests/examples/DataKinds.hs" 2 24 2 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 2 14 2 23+                , srcInfoPoints = []+                }+              "DataKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 3 1 3 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 3 1 3 13+                , SrcSpan "tests/examples/DataKinds.hs" 3 24 3 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 3 14 3 23+                , srcInfoPoints = []+                }+              "PolyKinds"+          ]+      ]+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 1 6 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 5 1 5 6+                , SrcSpan "tests/examples/DataKinds.hs" 5 30 5 35+                , SrcSpan "tests/examples/DataKinds.hs" 6 5 6 5+                , SrcSpan "tests/examples/DataKinds.hs" 8 1 8 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 7 5 29+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 7 5 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 7 5 9+                     , srcInfoPoints = []+                     }+                   "C1"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 10 5 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 5 10 5 11+                      , SrcSpan "tests/examples/DataKinds.hs" 5 13 5 15+                      , SrcSpan "tests/examples/DataKinds.hs" 5 28 5 29+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 11 5 12+                     , srcInfoPoints = []+                     }+                   "a")+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 16 5 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 16 5 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 16 5 20+                           , srcInfoPoints = []+                           }+                         "Bool")))))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 5 6 24+                   , srcInfoPoints = [ SrcSpan "tests/examples/DataKinds.hs" 6 7 6 9 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 5 6 24+                      , srcInfoPoints = [ SrcSpan "tests/examples/DataKinds.hs" 6 7 6 9 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 5 6 6+                          , srcInfoPoints = []+                          }+                        "c"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 10 6 24+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DataKinds.hs" 6 18 6 20 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 10 6 17+                            , srcInfoPoints = []+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 10 6 15+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 10 6 15+                                  , srcInfoPoints = []+                                  }+                                "proxy"))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 16 6 17+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 16 6 17+                                  , srcInfoPoints = []+                                  }+                                "a")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 21 6 24+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 21 6 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 21 6 24+                                  , srcInfoPoints = []+                                  }+                                "Int")))))+             ])+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 1 8 22+            , srcInfoPoints = [ SrcSpan "tests/examples/DataKinds.hs" 8 1 8 6 ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 7 8 22+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 7 8 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 7 8 9+                     , srcInfoPoints = []+                     }+                   "C2"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 10 8 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 8 10 8 11+                      , SrcSpan "tests/examples/DataKinds.hs" 8 13 8 15+                      , SrcSpan "tests/examples/DataKinds.hs" 8 21 8 22+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 11 8 12+                     , srcInfoPoints = []+                     }+                   "a")+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 16 8 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DataKinds.hs" 8 16 8 17+                         , SrcSpan "tests/examples/DataKinds.hs" 8 20 8 21+                         ]+                     }+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 18 8 19+                        , srcInfoPoints = []+                        }))))+          []+          Nothing+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 1 10 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 10 10 10 11 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 1 10 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 6 10 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 6 10 9+                  , srcInfoPoints = []+                  }+                "Baz"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 12 10 15+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 12 10 15+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 12 10 15+                      , srcInfoPoints = []+                      }+                    "Baz")+                 [])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 1 11 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 11 10 11 11 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 1 11 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 6 11 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 6 11 9+                  , srcInfoPoints = []+                  }+                "Foo"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 12 11 15+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 12 11 15+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 12 11 15+                      , srcInfoPoints = []+                      }+                    "Foo")+                 [])+          ]+          []+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 1 13 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 13 1 13 6 ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 7 13 29+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 7 13 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 7 13 9+                     , srcInfoPoints = []+                     }+                   "C3"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 10 13 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 13 10 13 11+                      , SrcSpan "tests/examples/DataKinds.hs" 13 13 13 15+                      , SrcSpan "tests/examples/DataKinds.hs" 13 28 13 29+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 11 13 12+                     , srcInfoPoints = []+                     }+                   "a")+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 16 13 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DataKinds.hs" 13 16 13 17+                         , SrcSpan "tests/examples/DataKinds.hs" 13 27 13 28+                         ]+                     }+                   (TyTuple+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 17 13 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DataKinds.hs" 13 17 13 18+                            , SrcSpan "tests/examples/DataKinds.hs" 13 21 13 22+                            , SrcSpan "tests/examples/DataKinds.hs" 13 26 13 27+                            ]+                        }+                      Boxed+                      [ TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 18 13 21+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 18 13 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 18 13 21+                                  , srcInfoPoints = []+                                  }+                                "Baz"))+                      , TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 23 13 26+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 23 13 26+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 23 13 26+                                  , srcInfoPoints = []+                                  }+                                "Foo"))+                      ]))))+          []+          Nothing+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 1 15 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 15 1 15 6 ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 7 15 22+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 7 15 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 7 15 9+                     , srcInfoPoints = []+                     }+                   "C4"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 10 15 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 15 10 15 11+                      , SrcSpan "tests/examples/DataKinds.hs" 15 13 15 15+                      , SrcSpan "tests/examples/DataKinds.hs" 15 21 15 22+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 11 15 12+                     , srcInfoPoints = []+                     }+                   "a")+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 16 15 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DataKinds.hs" 15 16 15 17+                         , SrcSpan "tests/examples/DataKinds.hs" 15 20 15 21+                         ]+                     }+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 18 15 19+                        , srcInfoPoints = []+                        }))))+          []+          Nothing+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 1 18 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 18 1 18 6 ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 7 18 28+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 7 18 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 7 18 9+                     , srcInfoPoints = []+                     }+                   "C5"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 10 18 28+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 18 10 18 11+                      , SrcSpan "tests/examples/DataKinds.hs" 18 13 18 15+                      , SrcSpan "tests/examples/DataKinds.hs" 18 27 18 28+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 11 18 12+                     , srcInfoPoints = []+                     }+                   "a")+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 27+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 23+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 19+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 19+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 19+                                 , srcInfoPoints = []+                                 }+                               "App")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 20 18 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 20 18 23+                              , srcInfoPoints = []+                              }+                            "foo")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 24 18 27+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 24 18 27+                           , srcInfoPoints = []+                           }+                         "baz")))))+          []+          Nothing+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 1 20 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds.hs" 20 1 20 6 ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 7 20 25+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 7 20 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 7 20 9+                     , srcInfoPoints = []+                     }+                   "C6"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 10 20 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 20 10 20 11+                      , SrcSpan "tests/examples/DataKinds.hs" 20 13 20 15+                      , SrcSpan "tests/examples/DataKinds.hs" 20 24 20 25+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 11 20 12+                     , srcInfoPoints = []+                     }+                   "a")+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 16 20 24+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DataKinds.hs" 20 16 20 17+                         , SrcSpan "tests/examples/DataKinds.hs" 20 23 20 24+                         ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 17 20 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 17 20 23+                           , srcInfoPoints = []+                           }+                         "parens")))))+          []+          Nothing+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 1 22 5+            , srcInfoPoints = []+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 1 22 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 6 22 18+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 6 22 7+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 6 22 7+                     , srcInfoPoints = []+                     }+                   "X"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 8 22 18+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 22 8 22 9+                      , SrcSpan "tests/examples/DataKinds.hs" 22 11 22 13+                      , SrcSpan "tests/examples/DataKinds.hs" 22 17 22 18+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 9 22 10+                     , srcInfoPoints = []+                     }+                   "a")+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 14 22 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DataKinds.hs" 22 14 22 15+                         , SrcSpan "tests/examples/DataKinds.hs" 22 16 22 17+                         ]+                     }+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 15 22 16+                        , srcInfoPoints = []+                        }))))+          []+          []+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 1 24 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 1 24 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 1 24 3+                  , srcInfoPoints = []+                  }+                "x1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 4 24 27+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DataKinds.hs" 24 4 24 5 ]+               }+             (ExpTypeSig+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 6 24 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 24 16 24 18 ]+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 6 24 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 6 24 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 6 24 15+                           , srcInfoPoints = []+                           }+                         "undefined")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 19 24 27+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 19 24 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 19 24 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 19 24 20+                              , srcInfoPoints = []+                              }+                            "X")))+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 21 24 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DataKinds.hs" 24 21 24 22+                            , SrcSpan "tests/examples/DataKinds.hs" 24 26 24 27+                            ]+                        }+                      (PromotedList+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 21 24 27+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DataKinds.hs" 24 21 24 22+                               , SrcSpan "tests/examples/DataKinds.hs" 24 26 24 27+                               ]+                           }+                         True+                         [ TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 23 24 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 23 24 26+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 24 23 24 26+                                     , srcInfoPoints = []+                                     }+                                   "Int"))+                         ])))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 1 25 35+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 1 25 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 1 25 3+                  , srcInfoPoints = []+                  }+                "x2"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 4 25 35+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DataKinds.hs" 25 4 25 5 ]+               }+             (ExpTypeSig+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 6 25 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 25 16 25 18 ]+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 6 25 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 6 25 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 6 25 15+                           , srcInfoPoints = []+                           }+                         "undefined")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 19 25 35+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 19 25 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 19 25 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 19 25 20+                              , srcInfoPoints = []+                              }+                            "X")))+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 21 25 35+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DataKinds.hs" 25 21 25 22+                            , SrcSpan "tests/examples/DataKinds.hs" 25 26 25 27+                            , SrcSpan "tests/examples/DataKinds.hs" 25 34 25 35+                            ]+                        }+                      (PromotedList+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 21 25 35+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DataKinds.hs" 25 21 25 22+                               , SrcSpan "tests/examples/DataKinds.hs" 25 26 25 27+                               , SrcSpan "tests/examples/DataKinds.hs" 25 34 25 35+                               ]+                           }+                         True+                         [ TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 23 25 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 23 25 26+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 25 23 25 26+                                     , srcInfoPoints = []+                                     }+                                   "Int"))+                         , TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 28 25 34+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 28 25 34+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 25 28 25 34+                                     , srcInfoPoints = []+                                     }+                                   "Double"))+                         ])))))+          Nothing+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 1 27 5+            , srcInfoPoints = []+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 1 27 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 6 27 24+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 6 27 7+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 6 27 7+                     , srcInfoPoints = []+                     }+                   "Y"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 8 27 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 27 8 27 9+                      , SrcSpan "tests/examples/DataKinds.hs" 27 11 27 13+                      , SrcSpan "tests/examples/DataKinds.hs" 27 23 27 24+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 9 27 10+                     , srcInfoPoints = []+                     }+                   "a")+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 14 27 23+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DataKinds.hs" 27 14 27 15+                         , SrcSpan "tests/examples/DataKinds.hs" 27 16 27 17+                         , SrcSpan "tests/examples/DataKinds.hs" 27 22 27 23+                         ]+                     }+                   Boxed+                   [ TyStar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 15 27 16+                         , srcInfoPoints = []+                         }+                   , TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 18 27 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 18 27 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 18 27 22+                               , srcInfoPoints = []+                               }+                             "Bool"))+                   ])))+          []+          []+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 1 29 36+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 1 29 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 1 29 3+                  , srcInfoPoints = []+                  }+                "y1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 4 29 36+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DataKinds.hs" 29 4 29 5 ]+               }+             (ExpTypeSig+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 6 29 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 29 16 29 18 ]+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 6 29 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 6 29 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 6 29 15+                           , srcInfoPoints = []+                           }+                         "undefined")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 19 29 36+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 19 29 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 19 29 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 19 29 20+                              , srcInfoPoints = []+                              }+                            "Y")))+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 21 29 36+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DataKinds.hs" 29 21 29 22+                            , SrcSpan "tests/examples/DataKinds.hs" 29 29 29 30+                            , SrcSpan "tests/examples/DataKinds.hs" 29 35 29 36+                            ]+                        }+                      (PromotedTuple+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 21 29 36+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DataKinds.hs" 29 21 29 22+                               , SrcSpan "tests/examples/DataKinds.hs" 29 29 29 30+                               , SrcSpan "tests/examples/DataKinds.hs" 29 35 29 36+                               ]+                           }+                         [ TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 23 29 29+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 23 29 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 29 23 29 29+                                     , srcInfoPoints = []+                                     }+                                   "Double"))+                         , TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 31 29 35+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 31 29 35+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 29 31 29 35+                                     , srcInfoPoints = []+                                     }+                                   "True"))+                         ])))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 1 30 50+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 1 30 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 1 30 3+                  , srcInfoPoints = []+                  }+                "y2"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 4 30 50+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DataKinds.hs" 30 4 30 5 ]+               }+             (ExpTypeSig+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 6 30 50+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 30 16 30 18 ]+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 6 30 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 6 30 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 6 30 15+                           , srcInfoPoints = []+                           }+                         "undefined")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 19 30 50+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 19 30 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 19 30 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 19 30 20+                              , srcInfoPoints = []+                              }+                            "Y")))+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 21 30 50+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DataKinds.hs" 30 21 30 22+                            , SrcSpan "tests/examples/DataKinds.hs" 30 29 30 30+                            , SrcSpan "tests/examples/DataKinds.hs" 30 49 30 50+                            ]+                        }+                      (PromotedTuple+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 21 30 50+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DataKinds.hs" 30 21 30 22+                               , SrcSpan "tests/examples/DataKinds.hs" 30 29 30 30+                               , SrcSpan "tests/examples/DataKinds.hs" 30 49 30 50+                               ]+                           }+                         [ TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 23 30 29+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 23 30 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 30 23 30 29+                                     , srcInfoPoints = []+                                     }+                                   "Double"))+                         , TyPromoted+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 31 30 37+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DataKinds.hs" 30 31 30 32 ]+                               }+                             (PromotedCon+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 31 30 37+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DataKinds.hs" 30 31 30 32 ]+                                  }+                                True+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 30 32 30 37+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DataKinds.hs" 30 32 30 37+                                        , srcInfoPoints = []+                                        }+                                      "False")))+                         ])))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 1 33 38+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 1 33 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 1 33 3+                  , srcInfoPoints = []+                  }+                "z1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 4 33 38+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DataKinds.hs" 33 4 33 5 ]+               }+             (ExpTypeSig+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 6 33 38+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 33 16 33 18 ]+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 6 33 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 6 33 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 6 33 15+                           , srcInfoPoints = []+                           }+                         "undefined")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 19 33 38+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 19 33 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 19 33 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 19 33 20+                              , srcInfoPoints = []+                              }+                            "X")))+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 21 33 38+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DataKinds.hs" 33 21 33 22+                            , SrcSpan "tests/examples/DataKinds.hs" 33 29 33 30+                            , SrcSpan "tests/examples/DataKinds.hs" 33 37 33 38+                            ]+                        }+                      (PromotedList+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 21 33 38+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DataKinds.hs" 33 21 33 22+                               , SrcSpan "tests/examples/DataKinds.hs" 33 29 33 30+                               , SrcSpan "tests/examples/DataKinds.hs" 33 37 33 38+                               ]+                           }+                         False+                         [ TyFun+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 23 33 29+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DataKinds.hs" 33 25 33 27 ]+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 23 33 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 33 23 33 24+                                     , srcInfoPoints = []+                                     }+                                   "a"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 28 33 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 33 28 33 29+                                     , srcInfoPoints = []+                                     }+                                   "b"))+                         , TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 31 33 36+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 31 33 32+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 33 31 33 32+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DataKinds.hs" 33 31 33 32+                                        , srcInfoPoints = []+                                        }+                                      "X")))+                             (TyPromoted+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 33 33 36+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DataKinds.hs" 33 33 33 34+                                      , SrcSpan "tests/examples/DataKinds.hs" 33 35 33 36+                                      ]+                                  }+                                (PromotedList+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DataKinds.hs" 33 33 33 36+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DataKinds.hs" 33 33 33 34+                                         , SrcSpan "tests/examples/DataKinds.hs" 33 35 33 36+                                         ]+                                     }+                                   True+                                   []))+                         ])))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 1 34 35+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 1 34 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 1 34 3+                  , srcInfoPoints = []+                  }+                "z2"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 4 34 35+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DataKinds.hs" 34 4 34 5 ]+               }+             (ExpTypeSig+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 6 34 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DataKinds.hs" 34 16 34 18 ]+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 6 34 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 6 34 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 6 34 15+                           , srcInfoPoints = []+                           }+                         "undefined")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 19 34 35+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 19 34 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 19 34 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 19 34 20+                              , srcInfoPoints = []+                              }+                            "Y")))+                   (TyTuple+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 21 34 35+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DataKinds.hs" 34 21 34 22+                            , SrcSpan "tests/examples/DataKinds.hs" 34 28 34 29+                            , SrcSpan "tests/examples/DataKinds.hs" 34 34 34 35+                            ]+                        }+                      Boxed+                      [ TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 22 34 28+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DataKinds.hs" 34 24 34 26 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 22 34 23+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 22 34 23+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 27 34 28+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 27 34 28+                                  , srcInfoPoints = []+                                  }+                                "b"))+                      , TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 30 34 34+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 30 34 34+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 30 34 34+                                  , srcInfoPoints = []+                                  }+                                "True"))+                      ]))))+          Nothing+      ]+  , [ Comment+        True (SrcSpan "tests/examples/DataKinds.hs" 5 21 5 28) " 1 "+    , Comment+        True (SrcSpan "tests/examples/DataKinds.hs" 30 38 30 49) "comment"+    ]+  )
+ tests/examples/DataKinds.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataKinds.hs.prettyprinter.golden view
@@ -0,0 +1,30 @@+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}++class C1 (a :: Bool) where+        c :: proxy a -> Int++class C2 (a :: [*])++data Baz = Baz++data Foo = Foo++class C3 (a :: [(Baz, Foo)])++class C4 (a :: (*))++class C5 (a :: App foo baz)++class C6 (a :: (parens))++data X (a :: [*])+x1 = undefined :: X '[Int]+x2 = undefined :: X '[Int, Double]++data Y (a :: (*, Bool))+y1 = undefined :: Y '(Double, True)+y2 = undefined :: Y '(Double, 'False)+z1 = undefined :: X [a -> b, X '[]]+z2 = undefined :: Y (a -> b, True)
+ tests/examples/DataKinds2.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE DataKinds #-}++data Foo a = Foo++type FooB = Foo "a"++type FooC = Foo 1++instance Show (Foo "bar") where
+ tests/examples/DataKinds2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataKinds2.hs.parser.golden view
@@ -0,0 +1,283 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 1 1 10 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DataKinds2.hs" 1 1 1 1+            , SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 1+            , SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 1+            , SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 1+            , SrcSpan "tests/examples/DataKinds2.hs" 5 1 5 1+            , SrcSpan "tests/examples/DataKinds2.hs" 7 1 7 1+            , SrcSpan "tests/examples/DataKinds2.hs" 9 1 9 1+            , SrcSpan "tests/examples/DataKinds2.hs" 10 1 10 1+            , SrcSpan "tests/examples/DataKinds2.hs" 10 1 10 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 1 1 1 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds2.hs" 1 1 1 13+                , SrcSpan "tests/examples/DataKinds2.hs" 1 24 1 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "DataKinds"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds2.hs" 3 12 3 13 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 6 3 11+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 6 3 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 6 3 9+                     , srcInfoPoints = []+                     }+                   "Foo"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 10 3 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 10 3 11+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 14 3 17+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 14 3 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 14 3 17+                      , srcInfoPoints = []+                      }+                    "Foo")+                 [])+          ]+          []+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 1 5 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds2.hs" 5 1 5 5+                , SrcSpan "tests/examples/DataKinds2.hs" 5 11 5 12+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 6 5 10+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 6 5 10+                  , srcInfoPoints = []+                  }+                "FooB"))+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 13 5 20+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 13 5 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 13 5 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 13 5 16+                        , srcInfoPoints = []+                        }+                      "Foo")))+             (TyPromoted+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 17 5 20+                  , srcInfoPoints = []+                  }+                (PromotedString+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 17 5 20+                     , srcInfoPoints = []+                     }+                   "a"+                   "a")))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 1 7 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds2.hs" 7 1 7 5+                , SrcSpan "tests/examples/DataKinds2.hs" 7 11 7 12+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 6 7 10+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 6 7 10+                  , srcInfoPoints = []+                  }+                "FooC"))+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 13 7 18+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 13 7 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 13 7 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 13 7 16+                        , srcInfoPoints = []+                        }+                      "Foo")))+             (TyPromoted+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 17 7 18+                  , srcInfoPoints = []+                  }+                (PromotedInteger+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 17 7 18+                     , srcInfoPoints = []+                     }+                   1+                   "1")))+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 1 10 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DataKinds2.hs" 9 1 9 9+                , SrcSpan "tests/examples/DataKinds2.hs" 9 27 9 32+                , SrcSpan "tests/examples/DataKinds2.hs" 10 1 10 1+                , SrcSpan "tests/examples/DataKinds2.hs" 10 1 10 1+                , SrcSpan "tests/examples/DataKinds2.hs" 10 0 10 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 26+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 26+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 14+                           , srcInfoPoints = []+                           }+                         "Show")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 15 9 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DataKinds2.hs" 9 15 9 16+                         , SrcSpan "tests/examples/DataKinds2.hs" 9 25 9 26+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 16 9 25+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 16 9 19+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 16 9 19+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 16 9 19+                                 , srcInfoPoints = []+                                 }+                               "Foo")))+                      (TyPromoted+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 20 9 25+                           , srcInfoPoints = []+                           }+                         (PromotedString+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 20 9 25+                              , srcInfoPoints = []+                              }+                            "bar"+                            "bar"))))))+          (Just [])+      ]+  , []+  )
+ tests/examples/DataKinds2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataKinds2.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE DataKinds #-}++data Foo a = Foo++type FooB = Foo "a"++type FooC = Foo 1++instance Show (Foo "bar") where
+ tests/examples/DefaultSignatures.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE DefaultSignatures #-}+class C a where+    f :: a -> a -> Bool+    default f :: (Eq a) => a -> a -> Bool+    f x y = x == y
+ tests/examples/DefaultSignatures.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DefaultSignatures.hs.parser.golden view
@@ -0,0 +1,441 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/DefaultSignatures.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DefaultSignatures.hs" 1 1 1 1+            , SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 2 1+            , SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 2 1+            , SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 2 1+            , SrcSpan "tests/examples/DefaultSignatures.hs" 6 1 6 1+            , SrcSpan "tests/examples/DefaultSignatures.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DefaultSignatures.hs" 1 1 1 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DefaultSignatures.hs" 1 1 1 13+                , SrcSpan "tests/examples/DefaultSignatures.hs" 1 32 1 35+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DefaultSignatures.hs" 1 14 1 31+                , srcInfoPoints = []+                }+              "DefaultSignatures"+          ]+      ]+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 5 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 2 6+                , SrcSpan "tests/examples/DefaultSignatures.hs" 2 11 2 16+                , SrcSpan "tests/examples/DefaultSignatures.hs" 3 5 3 5+                , SrcSpan "tests/examples/DefaultSignatures.hs" 4 5 4 5+                , SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 5+                , SrcSpan "tests/examples/DefaultSignatures.hs" 6 1 6 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DefaultSignatures.hs" 2 7 2 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DefaultSignatures.hs" 2 7 2 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DefaultSignatures.hs" 2 7 2 8+                     , srcInfoPoints = []+                     }+                   "C"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DefaultSignatures.hs" 2 9 2 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DefaultSignatures.hs" 2 9 2 10+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DefaultSignatures.hs" 3 5 3 24+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DefaultSignatures.hs" 3 7 3 9 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DefaultSignatures.hs" 3 5 3 24+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DefaultSignatures.hs" 3 7 3 9 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DefaultSignatures.hs" 3 5 3 6+                          , srcInfoPoints = []+                          }+                        "f"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DefaultSignatures.hs" 3 10 3 24+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DefaultSignatures.hs" 3 12 3 14 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DefaultSignatures.hs" 3 10 3 11+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DefaultSignatures.hs" 3 10 3 11+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DefaultSignatures.hs" 3 15 3 24+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DefaultSignatures.hs" 3 17 3 19 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DefaultSignatures.hs" 3 15 3 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DefaultSignatures.hs" 3 15 3 16+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DefaultSignatures.hs" 3 20 3 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DefaultSignatures.hs" 3 20 3 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DefaultSignatures.hs" 3 20 3 24+                                     , srcInfoPoints = []+                                     }+                                   "Bool"))))))+             , ClsDefSig+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DefaultSignatures.hs" 4 5 4 42+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 5 4 12+                       , SrcSpan "tests/examples/DefaultSignatures.hs" 4 15 4 17+                       ]+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DefaultSignatures.hs" 4 13 4 14+                      , srcInfoPoints = []+                      }+                    "f")+                 (TyForall+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 42+                      , srcInfoPoints = []+                      }+                    Nothing+                    (Just+                       (CxSingle+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 27+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 19+                                , SrcSpan "tests/examples/DefaultSignatures.hs" 4 23 4 24+                                , SrcSpan "tests/examples/DefaultSignatures.hs" 4 25 4 27+                                ]+                            }+                          (ParenA+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 27+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 19+                                   , SrcSpan "tests/examples/DefaultSignatures.hs" 4 23 4 24+                                   , SrcSpan "tests/examples/DefaultSignatures.hs" 4 25 4 27+                                   ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23+                                     , srcInfoPoints = []+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/DefaultSignatures.hs" 4 19 4 21+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DefaultSignatures.hs" 4 19 4 21+                                              , srcInfoPoints = []+                                              }+                                            "Eq")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DefaultSignatures.hs" 4 22 4 23+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/DefaultSignatures.hs" 4 22 4 23+                                           , srcInfoPoints = []+                                           }+                                         "a")))))))+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DefaultSignatures.hs" 4 28 4 42+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 30 4 32 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DefaultSignatures.hs" 4 28 4 29+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DefaultSignatures.hs" 4 28 4 29+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DefaultSignatures.hs" 4 33 4 42+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 35 4 37 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DefaultSignatures.hs" 4 33 4 34+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DefaultSignatures.hs" 4 33 4 34+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DefaultSignatures.hs" 4 38 4 42+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DefaultSignatures.hs" 4 38 4 42+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DefaultSignatures.hs" 4 38 4 42+                                     , srcInfoPoints = []+                                     }+                                   "Bool"))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 19+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 19+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 19+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 6+                             , srcInfoPoints = []+                             }+                           "f")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DefaultSignatures.hs" 5 7 5 8+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DefaultSignatures.hs" 5 7 5 8+                                 , srcInfoPoints = []+                                 }+                               "x")+                        , PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DefaultSignatures.hs" 5 9 5 10+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DefaultSignatures.hs" 5 9 5 10+                                 , srcInfoPoints = []+                                 }+                               "y")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DefaultSignatures.hs" 5 11 5 19+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DefaultSignatures.hs" 5 11 5 12 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DefaultSignatures.hs" 5 13 5 19+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DefaultSignatures.hs" 5 13 5 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DefaultSignatures.hs" 5 13 5 14+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DefaultSignatures.hs" 5 13 5 14+                                         , srcInfoPoints = []+                                         }+                                       "x")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DefaultSignatures.hs" 5 15 5 17+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DefaultSignatures.hs" 5 15 5 17+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DefaultSignatures.hs" 5 15 5 17+                                         , srcInfoPoints = []+                                         }+                                       "==")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DefaultSignatures.hs" 5 18 5 19+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DefaultSignatures.hs" 5 18 5 19+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DefaultSignatures.hs" 5 18 5 19+                                         , srcInfoPoints = []+                                         }+                                       "y")))))+                        Nothing+                    ])+             ])+      ]+  , []+  )
+ tests/examples/DefaultSignatures.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DefaultSignatures.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE DefaultSignatures #-}++class C a where+        f :: a -> a -> Bool+        +        default f :: (Eq a) => a -> a -> Bool+        f x y = x == y
+ tests/examples/DeriveGeneric.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE DeriveGeneric #-}++data UserTree a = Node a (UserTree a) (UserTree a) | Leaf+  deriving Generic
+ tests/examples/DeriveGeneric.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DeriveGeneric.hs.parser.golden view
@@ -0,0 +1,239 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DeriveGeneric.hs" 1 1 1 1+            , SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 3 1+            , SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 3 1+            , SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 3 1+            , SrcSpan "tests/examples/DeriveGeneric.hs" 5 1 5 1+            , SrcSpan "tests/examples/DeriveGeneric.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DeriveGeneric.hs" 1 1 1 13+                , SrcSpan "tests/examples/DeriveGeneric.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "DeriveGeneric"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 4 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DeriveGeneric.hs" 3 17 3 18+                , SrcSpan "tests/examples/DeriveGeneric.hs" 3 52 3 53+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 6 3 16+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 6 3 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 6 3 14+                     , srcInfoPoints = []+                     }+                   "UserTree"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 15 3 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 15 3 16+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 19 3 51+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 19 3 51+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 19 3 23+                      , srcInfoPoints = []+                      }+                    "Node")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 24 3 25+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 24 3 25+                          , srcInfoPoints = []+                          }+                        "a")+                 , TyParen+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 26 3 38+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DeriveGeneric.hs" 3 26 3 27+                           , SrcSpan "tests/examples/DeriveGeneric.hs" 3 37 3 38+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 27 3 37+                          , srcInfoPoints = []+                          }+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 27 3 35+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 27 3 35+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DeriveGeneric.hs" 3 27 3 35+                                   , srcInfoPoints = []+                                   }+                                 "UserTree")))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 36 3 37+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 36 3 37+                                , srcInfoPoints = []+                                }+                              "a")))+                 , TyParen+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 39 3 51+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DeriveGeneric.hs" 3 39 3 40+                           , SrcSpan "tests/examples/DeriveGeneric.hs" 3 50 3 51+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 40 3 50+                          , srcInfoPoints = []+                          }+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 40 3 48+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 40 3 48+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DeriveGeneric.hs" 3 40 3 48+                                   , srcInfoPoints = []+                                   }+                                 "UserTree")))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 49 3 50+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 49 3 50+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          , QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 54 3 58+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 54 3 58+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 54 3 58+                      , srcInfoPoints = []+                      }+                    "Leaf")+                 [])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 3 4 19+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DeriveGeneric.hs" 4 3 4 11 ]+                }+              Nothing+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 12 4 19+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 12 4 19+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 12 4 19+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 12 4 19+                             , srcInfoPoints = []+                             }+                           "Generic")))+              ]+          ]+      ]+  , []+  )
+ tests/examples/DeriveGeneric.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DeriveGeneric.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE DeriveGeneric #-}++data UserTree a = Node a (UserTree a) (UserTree a)+                | Leaf+                    deriving Generic
+ tests/examples/DerivingParen.hs view
@@ -0,0 +1,2 @@+data X = X deriving Show+data X = X deriving (Show)
+ tests/examples/DerivingParen.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingParen.hs.parser.golden view
@@ -0,0 +1,177 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 1+            , SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 1+            , SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 1+            , SrcSpan "tests/examples/DerivingParen.hs" 2 1 2 1+            , SrcSpan "tests/examples/DerivingParen.hs" 3 1 3 1+            , SrcSpan "tests/examples/DerivingParen.hs" 3 1 3 1+            ]+        }+      Nothing+      []+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingParen.hs" 1 8 1 9 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 6 1 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 6 1 7+                  , srcInfoPoints = []+                  }+                "X"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 10 1 11+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 10 1 11+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 10 1 11+                      , srcInfoPoints = []+                      }+                    "X")+                 [])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 12 1 25+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingParen.hs" 1 12 1 20 ]+                }+              Nothing+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 21 1 25+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 21 1 25+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 21 1 25+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 21 1 25+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 1 2 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingParen.hs" 2 8 2 9 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 1 2 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 6 2 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 6 2 7+                  , srcInfoPoints = []+                  }+                "X"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 10 2 11+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 10 2 11+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 10 2 11+                      , srcInfoPoints = []+                      }+                    "X")+                 [])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 12 2 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingParen.hs" 2 12 2 20 ]+                }+              Nothing+              [ IParen+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 21 2 27+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/DerivingParen.hs" 2 21 2 22+                        , SrcSpan "tests/examples/DerivingParen.hs" 2 26 2 27+                        ]+                    }+                  (IRule+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 22 2 26+                       , srcInfoPoints = []+                       }+                     Nothing+                     Nothing+                     (IHCon+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 22 2 26+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 22 2 26+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 22 2 26+                                , srcInfoPoints = []+                                }+                              "Show"))))+              ]+          ]+      ]+  , []+  )
+ tests/examples/DerivingParen.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingParen.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+data X = X deriving Show++data X = X deriving (Show)
+ tests/examples/DerivingStrategies.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingStrategies where++class C a+class D a++newtype Foo a = MkFoo a+  deriving ()+  deriving stock (Eq, Ord)+  deriving newtype Show+  deriving anyclass C++deriving stock instance Read a => Read (Foo a)+deriving newtype instance Num a => Num (Foo a)+deriving anyclass instance D (Foo a)
+ tests/examples/DerivingStrategies.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingStrategies.hs.parser.golden view
@@ -0,0 +1,849 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/DerivingStrategies.hs" 1 1 19 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DerivingStrategies.hs" 1 1 1 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 2 1 2 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 3 1 3 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 4 1 4 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 5 1 5 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 5 1 5 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 7 1 7 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 8 1 8 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 10 1 10 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 16 1 16 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 17 1 17 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 18 1 18 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 19 1 19 1+            , SrcSpan "tests/examples/DerivingStrategies.hs" 19 1 19 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/DerivingStrategies.hs" 5 1 5 32+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/DerivingStrategies.hs" 5 1 5 7+                  , SrcSpan "tests/examples/DerivingStrategies.hs" 5 27 5 32+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/DerivingStrategies.hs" 5 8 5 26+                 , srcInfoPoints = []+                 }+               "DerivingStrategies")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 1 1 1 13+                , SrcSpan "tests/examples/DerivingStrategies.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingStrategies.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "DeriveAnyClass"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 2 1 2 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 2 1 2 13+                , SrcSpan "tests/examples/DerivingStrategies.hs" 2 33 2 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingStrategies.hs" 2 14 2 32+                , srcInfoPoints = []+                }+              "DerivingStrategies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 3 1 3 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 3 1 3 13+                , SrcSpan "tests/examples/DerivingStrategies.hs" 3 41 3 44+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingStrategies.hs" 3 14 3 40+                , srcInfoPoints = []+                }+              "GeneralizedNewtypeDeriving"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 4 1 4 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 4 1 4 13+                , SrcSpan "tests/examples/DerivingStrategies.hs" 4 33 4 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingStrategies.hs" 4 14 4 32+                , srcInfoPoints = []+                }+              "StandaloneDeriving"+          ]+      ]+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 7 1 7 10+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 7 1 7 6 ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingStrategies.hs" 7 7 7 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 7 7 7 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 7 7 7 8+                     , srcInfoPoints = []+                     }+                   "C"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 7 9 7 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 7 9 7 10+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          Nothing+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 8 1 8 10+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 8 1 8 6 ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingStrategies.hs" 8 7 8 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 8 7 8 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 8 7 8 8+                     , srcInfoPoints = []+                     }+                   "D"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 8 9 8 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 8 9 8 10+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          Nothing+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 10 1 14 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 10 15 10 16 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingStrategies.hs" 10 1 10 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingStrategies.hs" 10 9 10 14+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 10 9 10 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 10 9 10 12+                     , srcInfoPoints = []+                     }+                   "Foo"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 10 13 10 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 10 13 10 14+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingStrategies.hs" 10 17 10 24+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingStrategies.hs" 10 17 10 24+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingStrategies.hs" 10 17 10 22+                      , srcInfoPoints = []+                      }+                    "MkFoo")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingStrategies.hs" 10 23 10 24+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingStrategies.hs" 10 23 10 24+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingStrategies.hs" 11 3 11 14+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingStrategies.hs" 11 3 11 11+                    , SrcSpan "tests/examples/DerivingStrategies.hs" 11 12 11 13+                    , SrcSpan "tests/examples/DerivingStrategies.hs" 11 13 11 14+                    ]+                }+              Nothing+              []+          , Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingStrategies.hs" 12 3 12 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingStrategies.hs" 12 3 12 11+                    , SrcSpan "tests/examples/DerivingStrategies.hs" 12 18 12 19+                    , SrcSpan "tests/examples/DerivingStrategies.hs" 12 21 12 22+                    , SrcSpan "tests/examples/DerivingStrategies.hs" 12 26 12 27+                    ]+                }+              (Just+                 (DerivStock+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingStrategies.hs" 12 12 12 17+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingStrategies.hs" 12 19 12 21+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingStrategies.hs" 12 19 12 21+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingStrategies.hs" 12 19 12 21+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingStrategies.hs" 12 19 12 21+                             , srcInfoPoints = []+                             }+                           "Eq")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingStrategies.hs" 12 23 12 26+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingStrategies.hs" 12 23 12 26+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingStrategies.hs" 12 23 12 26+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingStrategies.hs" 12 23 12 26+                             , srcInfoPoints = []+                             }+                           "Ord")))+              ]+          , Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingStrategies.hs" 13 3 13 24+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingStrategies.hs" 13 3 13 11 ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingStrategies.hs" 13 12 13 19+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingStrategies.hs" 13 20 13 24+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingStrategies.hs" 13 20 13 24+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingStrategies.hs" 13 20 13 24+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingStrategies.hs" 13 20 13 24+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          , Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingStrategies.hs" 14 3 14 22+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingStrategies.hs" 14 3 14 11 ]+                }+              (Just+                 (DerivAnyclass+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingStrategies.hs" 14 12 14 20+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingStrategies.hs" 14 21 14 22+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingStrategies.hs" 14 21 14 22+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingStrategies.hs" 14 21 14 22+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingStrategies.hs" 14 21 14 22+                             , srcInfoPoints = []+                             }+                           "C")))+              ]+          ]+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 16 1 16 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 1 16 9+                , SrcSpan "tests/examples/DerivingStrategies.hs" 16 16 16 24+                ]+            }+          (Just+             (DerivStock+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 16 10 16 15+                  , srcInfoPoints = []+                  }))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 47+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29+                                    , srcInfoPoints = []+                                    }+                                  "Read")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 16 35 16 47+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 16 35 16 39+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingStrategies.hs" 16 35 16 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 16 35 16 39+                           , srcInfoPoints = []+                           }+                         "Read")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 16 40 16 47+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 40 16 41+                         , SrcSpan "tests/examples/DerivingStrategies.hs" 16 46 16 47+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingStrategies.hs" 16 41 16 46+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 16 41 16 44+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 41 16 44+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 16 41 16 44+                                 , srcInfoPoints = []+                                 }+                               "Foo")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 16 45 16 46+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 45 16 46+                              , srcInfoPoints = []+                              }+                            "a"))))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 17 1 17 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 1 17 9+                , SrcSpan "tests/examples/DerivingStrategies.hs" 17 18 17 26+                ]+            }+          (Just+             (DerivNewtype+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 17 10 17 17+                  , srcInfoPoints = []+                  }))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 47+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30+                                    , srcInfoPoints = []+                                    }+                                  "Num")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 17 36 17 47+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 17 36 17 39+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingStrategies.hs" 17 36 17 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 17 36 17 39+                           , srcInfoPoints = []+                           }+                         "Num")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 17 40 17 47+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 40 17 41+                         , SrcSpan "tests/examples/DerivingStrategies.hs" 17 46 17 47+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingStrategies.hs" 17 41 17 46+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 17 41 17 44+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 41 17 44+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 17 41 17 44+                                 , srcInfoPoints = []+                                 }+                               "Foo")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 17 45 17 46+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 45 17 46+                              , srcInfoPoints = []+                              }+                            "a"))))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingStrategies.hs" 18 1 18 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingStrategies.hs" 18 1 18 9+                , SrcSpan "tests/examples/DerivingStrategies.hs" 18 19 18 27+                ]+            }+          (Just+             (DerivAnyclass+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 18 10 18 18+                  , srcInfoPoints = []+                  }))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 37+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 37+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 29+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 29+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 29+                           , srcInfoPoints = []+                           }+                         "D")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingStrategies.hs" 18 30 18 37+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingStrategies.hs" 18 30 18 31+                         , SrcSpan "tests/examples/DerivingStrategies.hs" 18 36 18 37+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingStrategies.hs" 18 31 18 36+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 18 31 18 34+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 18 31 18 34+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 18 31 18 34+                                 , srcInfoPoints = []+                                 }+                               "Foo")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingStrategies.hs" 18 35 18 36+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 18 35 18 36+                              , srcInfoPoints = []+                              }+                            "a"))))))+      ]+  , []+  )
+ tests/examples/DerivingStrategies.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingStrategies.hs.prettyprinter.golden view
@@ -0,0 +1,21 @@+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingStrategies where++class C a++class D a++newtype Foo a = MkFoo a+                  deriving ()+                  deriving stock (Eq, Ord)+                  deriving newtype Show+                  deriving anyclass C++deriving stock instance Read a => Read (Foo a)++deriving newtype instance Num a => Num (Foo a)++deriving anyclass instance D (Foo a)
+ tests/examples/DerivingVia.hs view
@@ -0,0 +1,459 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeInType #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE UndecidableInstances #-}+module DerivingVia where++import Data.Void+import Data.Complex+import Data.Functor.Const+import Data.Functor.Identity+import Data.Ratio+import Control.Monad.Reader+import Control.Monad.State+import Control.Monad.Writer+import Control.Applicative hiding (WrappedMonad(..))++import Data.Bifunctor+import Data.Monoid+import Data.Kind++type f ~> g = forall xx. f xx -> g xx++-----+-- Simple example+-----++data Foo a = MkFoo a a+  deriving Show+       via (Identity (Foo a))++-----+-- Eta reduction at work+-----++newtype Flip p a b = Flip { runFlip :: p b a }++instance Bifunctor p => Bifunctor (Flip p) where+  bimap f g = Flip . bimap g f . runFlip++instance Bifunctor p => Functor (Flip p a) where+  fmap f = Flip . first f . runFlip++newtype Bar a = MkBar (Either a Int)+  deriving Functor+       via (Flip Either Int)++-----+-- Monad transformers+-----++type MTrans = (Type -> Type) -> (Type -> Type)++-- From `constraints'+data Dict c where+  Dict :: c => Dict c++newtype a :- b = Sub (a => Dict b)++infixl 1 \\+(\\) :: a => (b => r) -> (a :- b) -> r+r \\ Sub Dict = r++-- With `-XQuantifiedConstraints' this just becomes+--+--    type Lifting cls  trans = forall mm. cls mm => cls (trans mm)+--+--    type LiftingMonad trans = Lifting Monad trans+--+class LiftingMonad (trans :: MTrans) where+  proof :: Monad m :- Monad (trans m)++instance LiftingMonad (StateT s :: MTrans) where+  proof :: Monad m :- Monad (StateT s m)+  proof = Sub Dict++instance Monoid w => LiftingMonad (WriterT w :: MTrans) where+  proof :: Monad m :- Monad (WriterT w m)+  proof = Sub Dict++instance (LiftingMonad trans, LiftingMonad trans') => LiftingMonad (ComposeT trans trans' :: MTrans) where+  proof :: forall m. Monad m :- Monad (ComposeT trans trans' m)+  proof = Sub (Dict \\ proof @trans @(trans' m) \\ proof @trans' @m)++newtype Stack :: MTrans where+  Stack :: ReaderT Int (StateT Bool (WriterT String m)) a -> Stack m a+  deriving newtype+    ( Functor+    , Applicative+    , Monad+    , MonadReader Int+    , MonadState Bool+    , MonadWriter String+    )+  deriving (MonadTrans, MFunctor)+       via (ReaderT Int `ComposeT` StateT Bool `ComposeT` WriterT String)++class MFunctor (trans :: MTrans) where+  hoist :: Monad m => (m ~> m') -> (trans m ~> trans m')++instance MFunctor (ReaderT r :: MTrans) where+  hoist :: Monad m => (m ~> m') -> (ReaderT r m ~> ReaderT r m')+  hoist nat = ReaderT . fmap nat . runReaderT++instance MFunctor (StateT s :: MTrans) where+  hoist :: Monad m => (m ~> m') -> (StateT s m ~> StateT s m')+  hoist nat = StateT . fmap nat . runStateT++instance MFunctor (WriterT w :: MTrans) where+  hoist :: Monad m => (m ~> m') -> (WriterT w m ~> WriterT w m')+  hoist nat = WriterT . nat . runWriterT++infixr 9 `ComposeT`+newtype ComposeT :: MTrans -> MTrans -> MTrans where+  ComposeT :: { getComposeT :: f (g m) a } -> ComposeT f g m a+  deriving newtype (Functor, Applicative, Monad)++instance (MonadTrans f, MonadTrans g, LiftingMonad g) => MonadTrans (ComposeT f g) where+  lift :: forall m. Monad m => m ~> ComposeT f g m+  lift = ComposeT . lift . lift+    \\ proof @g @m++instance (MFunctor f, MFunctor g, LiftingMonad g) => MFunctor (ComposeT f g) where+  hoist :: forall m m'. Monad m => (m ~> m') -> (ComposeT f g m ~> ComposeT f g m')+  hoist f = ComposeT . hoist (hoist f) . getComposeT+    \\ proof @g @m++-----+-- Using tuples in a `via` type+-----++newtype X a = X (a, a)+  deriving (Semigroup, Monoid)+       via (Product a, Sum a)++  deriving (Show, Eq)+       via (a, a)++-----+-- Abstract data types+-----++class C f where+  c :: f a -> Int++newtype X2 f a = X2 (f a)++instance C (X2 f) where+  c = const 0++deriving via (X2 IO) instance C IO++----+-- Testing parser+----++newtype P0 a = P0 a             deriving Show via a+newtype P1 a = P1 [a]           deriving Show via [a]+newtype P2 a = P2 (a, a)        deriving Show via (a, a)+newtype P3 a = P3 (Maybe a)     deriving Show via (First a)+newtype P4 a = P4 (Maybe a)     deriving Show via (First $ a)+newtype P5 a = P5 a             deriving Show via (Identity $ a)+newtype P6 a = P6 [a]           deriving Show via ([] $ a)+newtype P7 a = P7 (a, a)        deriving Show via (Identity $ (a, a))+newtype P8 a = P8 (Either () a) deriving Functor via (($) (Either ()))++newtype f $ a = APP (f a) deriving newtype Show deriving newtype Functor++----+-- From Baldur's notes+----++----+-- 1+----+newtype WrapApplicative f a = WrappedApplicative (f a)+  deriving (Functor, Applicative)++instance (Applicative f, Num a) => Num (WrapApplicative f a) where+  (+)         = liftA2 (+)+  (*)         = liftA2 (*)+  negate      = fmap negate+  fromInteger = pure . fromInteger+  abs         = fmap abs+  signum      = fmap signum++instance (Applicative f, Fractional a) => Fractional (WrapApplicative f a) where+  recip        = fmap recip+  fromRational = pure . fromRational++instance (Applicative f, Floating a) => Floating (WrapApplicative f a) where+  pi    = pure pi+  sqrt  = fmap sqrt+  exp   = fmap exp+  log   = fmap log+  sin   = fmap sin+  cos   = fmap cos+  asin  = fmap asin+  atan  = fmap atan+  acos  = fmap acos+  sinh  = fmap sinh+  cosh  = fmap cosh+  asinh = fmap asinh+  atanh = fmap atanh+  acosh = fmap acosh++instance (Applicative f, Semigroup s) => Semigroup (WrapApplicative f s) where+  (<>) = liftA2 (<>)++instance (Applicative f, Monoid m) => Monoid (WrapApplicative f m) where+  mempty = pure mempty++----+-- 2+----+class Pointed p where+  pointed :: a -> p a++newtype WrapMonad f a = WrappedMonad (f a)+  deriving newtype (Pointed, Monad)++instance (Monad m, Pointed m) => Functor (WrapMonad m) where+  fmap = liftM++instance (Monad m, Pointed m) => Applicative (WrapMonad m) where+  pure  = pointed+  (<*>) = ap++-- data+data Sorted a = Sorted a a a+  deriving (Functor, Applicative)+    via (WrapMonad Sorted)+  deriving (Num, Fractional, Floating, Semigroup, Monoid)+    via (WrapApplicative Sorted a)+++instance Monad Sorted where+  (>>=) :: Sorted a -> (a -> Sorted b) -> Sorted b+  Sorted a b c >>= f = Sorted a' b' c' where+    Sorted a' _  _  = f a+    Sorted _  b' _  = f b+    Sorted _  _  c' = f c++instance Pointed Sorted where+  pointed :: a -> Sorted a+  pointed a = Sorted a a a++----+-- 3+----+class IsZero a where+  isZero :: a -> Bool++newtype WrappedNumEq  a = WrappedNumEq a+newtype WrappedShow   a = WrappedShow  a+newtype WrappedNumEq2 a = WrappedNumEq2 a++instance (Num a, Eq a) => IsZero (WrappedNumEq a) where+  isZero :: WrappedNumEq a -> Bool+  isZero (WrappedNumEq a) = 0 == a++instance Show a => IsZero (WrappedShow a) where+  isZero :: WrappedShow a -> Bool+  isZero (WrappedShow a) = "0" == show a++instance (Num a, Eq a) => IsZero (WrappedNumEq2 a) where+  isZero :: WrappedNumEq2 a -> Bool+  isZero (WrappedNumEq2 a) = a + a == a++newtype INT = INT Int+  deriving newtype Show+  deriving IsZero via (WrappedNumEq Int)++newtype VOID = VOID Void deriving IsZero via (WrappedShow Void)++----+-- 4+----+class Bifunctor p => Biapplicative p where+  bipure :: a -> b -> p a b++  biliftA2+    :: (a  -> b  -> c)+    -> (a' -> b' -> c')+    -> p a a'+    -> p b b'+    -> p c c'++instance Biapplicative (,) where+  bipure = (,)++  biliftA2 f f' (a, a') (b, b') =+    (f a b, f' a' b')++newtype WrapBiapp p a b = WrapBiap (p a b)+  deriving newtype (Bifunctor, Biapplicative, Eq)++instance (Biapplicative p, Num a, Num b) => Num (WrapBiapp p a b) where+  (+) = biliftA2 (+) (+)+  (-) = biliftA2 (*) (*)+  (*) = biliftA2 (*) (*)+  negate = bimap negate negate+  abs = bimap abs abs+  signum = bimap signum signum+  fromInteger n = fromInteger n `bipure` fromInteger n++newtype INT2 = INT2 (Int, Int)+  deriving IsZero via (WrappedNumEq2 (WrapBiapp (,) Int Int))++----+-- 5+----+class Monoid a => MonoidNull a where+  null :: a -> Bool++newtype WrpMonNull a = WRM a deriving (Eq, Semigroup, Monoid)++instance (Eq a, Monoid a) => MonoidNull (WrpMonNull a) where+  null :: WrpMonNull a -> Bool+  null = (== mempty)++deriving via (WrpMonNull Any) instance MonoidNull Any+deriving via ()               instance MonoidNull ()+deriving via Ordering         instance MonoidNull Ordering++----+-- 6+----+-- https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635++class Lattice a where+  sup   :: a -> a -> a+  (.>=) :: a -> a -> Bool+  (.>)  :: a -> a -> Bool++newtype WrapOrd a = WrappedOrd a+  deriving newtype (Eq, Ord)++instance Ord a => Lattice (WrapOrd a) where+  sup   = max+  (.>=) = (>=)+  (.>)  = (>)++deriving via [a]    instance Ord a          => Lattice [a]+deriving via (a, b) instance (Ord a, Ord b) => Lattice (a, b)+--mkLattice_(Bool)+deriving via Bool instance Lattice Bool+--mkLattice_(Char)+deriving via Char instance Lattice Char+--mkLattice_(Int)+deriving via Int instance Lattice Int+--mkLattice_(Integer)+deriving via Integer instance Lattice Integer+--mkLattice_(Float)+deriving via Float instance Lattice Float+--mkLattice_(Double)+deriving via Double instance Lattice Double+--mkLattice_(Rational)+deriving via Rational instance Lattice Rational++----+-- 7+----+-- https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html++class Functor f => Additive f where+  zero :: Num a => f a+  (^+^) :: Num a => f a -> f a -> f a+  (^+^) = liftU2 (+)+  (^-^) :: Num a => f a -> f a -> f a+  x ^-^ y = x ^+^ fmap negate y+  liftU2 :: (a -> a -> a) -> f a -> f a -> f a++instance Additive [] where+  zero = []+  liftU2 f = go where+    go (x:xs) (y:ys) = f x y : go xs ys+    go [] ys = ys+    go xs [] = xs++instance Additive Maybe where+  zero = Nothing+  liftU2 f (Just a) (Just b) = Just (f a b)+  liftU2 _ Nothing ys = ys+  liftU2 _ xs Nothing = xs++instance Applicative f => Additive (WrapApplicative f) where+  zero   = pure 0+  liftU2 = liftA2++deriving via (WrapApplicative ((->) a)) instance Additive ((->) a)+deriving via (WrapApplicative Complex)  instance Additive Complex+deriving via (WrapApplicative Identity) instance Additive Identity++instance Additive ZipList where+  zero = ZipList []+  liftU2 f (ZipList xs) (ZipList ys) = ZipList (liftU2 f xs ys)++class Additive (Diff p) => Affine p where+  type Diff p :: Type -> Type++  (.-.) :: Num a => p a -> p a -> Diff p a+  (.+^) :: Num a => p a -> Diff p a -> p a+  (.-^) :: Num a => p a -> Diff p a -> p a+  p .-^ v = p .+^ fmap negate v++-- #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \+--   (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \+--   (.-^) = (^-^) ; {-# INLINE (.-^) #-}+-- #define ADDITIVE(T) ADDITIVEC((), T)+newtype WrapAdditive f a = WrappedAdditive (f a)++instance Additive f => Affine (WrapAdditive f) where+  type Diff (WrapAdditive f) = f++  WrappedAdditive a .-. WrappedAdditive b = a ^-^ b+  WrappedAdditive a .+^ b = WrappedAdditive (a ^+^ b)+  WrappedAdditive a .-^ b = WrappedAdditive (a ^-^ b)++-- ADDITIVE(((->) a))+deriving via (WrapAdditive ((->) a)) instance Affine ((->) a)+-- ADDITIVE([])+deriving via (WrapAdditive [])       instance Affine []+-- ADDITIVE(Complex)+deriving via (WrapAdditive Complex)  instance Affine Complex+-- ADDITIVE(Maybe)+deriving via (WrapAdditive Maybe)    instance Affine Maybe+-- ADDITIVE(ZipList)+deriving via (WrapAdditive ZipList)  instance Affine ZipList+-- ADDITIVE(Identity)+deriving via (WrapAdditive Identity) instance Affine Identity++----+-- 8+----++class C2 a b c where+  c2 :: a -> b -> c++instance C2 a b (Const a b) where+  c2 x _ = Const x++newtype Fweemp a = Fweemp a+  deriving (C2 a b)+       via (Const a (b :: Type))
+ tests/examples/DerivingVia.hs.exactprinter.golden view
@@ -0,0 +1,460 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeInType #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE UndecidableInstances #-}+module DerivingVia where++import Data.Void+import Data.Complex+import Data.Functor.Const+import Data.Functor.Identity+import Data.Ratio+import Control.Monad.Reader+import Control.Monad.State+import Control.Monad.Writer+import Control.Applicative hiding (WrappedMonad(..))++import Data.Bifunctor+import Data.Monoid+import Data.Kind++type f ~> g = forall xx. f xx -> g xx++-----+-- Simple example+-----++data Foo a = MkFoo a a+  deriving+       via( Identity (Foo a))Show++-----+-- Eta reduction at work+-----++newtype Flip p a b = Flip { runFlip :: p b a }++instance Bifunctor p => Bifunctor (Flip p) where+  bimap f g = Flip . bimap g f . runFlip++instance Bifunctor p => Functor (Flip p a) where+  fmap f = Flip . first f . runFlip++newtype Bar a = MkBar (Either a Int)+  deriving+       via( Flip Either Int)Functor++-----+-- Monad transformers+-----++type MTrans = (Type -> Type) -> (Type -> Type)++-- From `constraints'+data Dict c where+  Dict :: c => Dict c++newtype a :- b = Sub (a => Dict b)++infixl 1 \\+(\\) :: a => (b => r) -> (a :- b) -> r+r \\ Sub Dict = r++-- With `-XQuantifiedConstraints' this just becomes+--+--    type Lifting cls  trans = forall mm. cls mm => cls (trans mm)+--+--    type LiftingMonad trans = Lifting Monad trans+--+class LiftingMonad (trans :: MTrans) where+  proof :: Monad m :- Monad (trans m)++instance LiftingMonad (StateT s :: MTrans) where+  proof :: Monad m :- Monad (StateT s m)+  proof = Sub Dict++instance Monoid w => LiftingMonad (WriterT w :: MTrans) where+  proof :: Monad m :- Monad (WriterT w m)+  proof = Sub Dict++instance (LiftingMonad trans, LiftingMonad trans') => LiftingMonad (ComposeT trans trans' :: MTrans) where+  proof :: forall m. Monad m :- Monad (ComposeT trans trans' m)+  proof = Sub (Dict \\ proof @trans @(trans' m) \\ proof @trans' @m)++newtype Stack :: MTrans where+  Stack :: ReaderT Int (StateT Bool (WriterT String m)) a -> Stack m a+  deriving newtype+    ( Functor+    , Applicative+    , Monad+    , MonadReader Int+    , MonadState Bool+    , MonadWriter String+    )+  deriving+       via( ReaderT Int `ComposeT` StateT Bool `ComposeT` WriterT String)(MonadTrans,MFunctor)++class MFunctor (trans :: MTrans) where+  hoist :: Monad m => (m ~> m') -> (trans m ~> trans m')++instance MFunctor (ReaderT r :: MTrans) where+  hoist :: Monad m => (m ~> m') -> (ReaderT r m ~> ReaderT r m')+  hoist nat = ReaderT . fmap nat . runReaderT++instance MFunctor (StateT s :: MTrans) where+  hoist :: Monad m => (m ~> m') -> (StateT s m ~> StateT s m')+  hoist nat = StateT . fmap nat . runStateT++instance MFunctor (WriterT w :: MTrans) where+  hoist :: Monad m => (m ~> m') -> (WriterT w m ~> WriterT w m')+  hoist nat = WriterT . nat . runWriterT++infixr 9 `ComposeT`+newtype ComposeT :: MTrans -> MTrans -> MTrans where+  ComposeT :: { getComposeT :: f (g m) a } -> ComposeT f g m a+  deriving newtype (Functor, Applicative, Monad)++instance (MonadTrans f, MonadTrans g, LiftingMonad g) => MonadTrans (ComposeT f g) where+  lift :: forall m. Monad m => m ~> ComposeT f g m+  lift = ComposeT . lift . lift+    \\ proof @g @m++instance (MFunctor f, MFunctor g, LiftingMonad g) => MFunctor (ComposeT f g) where+  hoist :: forall m m'. Monad m => (m ~> m') -> (ComposeT f g m ~> ComposeT f g m')+  hoist f = ComposeT . hoist (hoist f) . getComposeT+    \\ proof @g @m++-----+-- Using tuples in a `via` type+-----++newtype X a = X (a, a)+  deriving+       via (Product a, Sum a)(Semigroup,Monoid)++  deriving+       via (a, a)(Show,Eq)++-----+-- Abstract data types+-----++class C f where+  c :: f a -> Int++newtype X2 f a = X2 (f a)++instance C (X2 f) where+  c = const 0++deriving via( X2 IO) instance C IO++----+-- Testing parser+----++newtype P0 a = P0 a             deriving      viaaShow+newtype P1 a = P1 [a]           deriving      via[ a]Show+newtype P2 a = P2 (a, a)        deriving      via (a, a)Show+newtype P3 a = P3 (Maybe a)     deriving      via( First a)Show+newtype P4 a = P4 (Maybe a)     deriving      via( First $ a)Show+newtype P5 a = P5 a             deriving      via( Identity $ a)Show+newtype P6 a = P6 [a]           deriving      via( [] $ a)Show+newtype P7 a = P7 (a, a)        deriving      via( Identity $ (a, a))Show+newtype P8 a = P8 (Either () a) deriving         via( ($) (Either ()))Functor++newtype f $ a = APP (f a) deriving newtype Show deriving newtype Functor++----+-- From Baldur's notes+----++----+-- 1+----+newtype WrapApplicative f a = WrappedApplicative (f a)+  deriving (Functor, Applicative)++instance (Applicative f, Num a) => Num (WrapApplicative f a) where+  (+)         = liftA2 (+)+  (*)         = liftA2 (*)+  negate      = fmap negate+  fromInteger = pure . fromInteger+  abs         = fmap abs+  signum      = fmap signum++instance (Applicative f, Fractional a) => Fractional (WrapApplicative f a) where+  recip        = fmap recip+  fromRational = pure . fromRational++instance (Applicative f, Floating a) => Floating (WrapApplicative f a) where+  pi    = pure pi+  sqrt  = fmap sqrt+  exp   = fmap exp+  log   = fmap log+  sin   = fmap sin+  cos   = fmap cos+  asin  = fmap asin+  atan  = fmap atan+  acos  = fmap acos+  sinh  = fmap sinh+  cosh  = fmap cosh+  asinh = fmap asinh+  atanh = fmap atanh+  acosh = fmap acosh++instance (Applicative f, Semigroup s) => Semigroup (WrapApplicative f s) where+  (<>) = liftA2 (<>)++instance (Applicative f, Monoid m) => Monoid (WrapApplicative f m) where+  mempty = pure mempty++----+-- 2+----+class Pointed p where+  pointed :: a -> p a++newtype WrapMonad f a = WrappedMonad (f a)+  deriving newtype (Pointed, Monad)++instance (Monad m, Pointed m) => Functor (WrapMonad m) where+  fmap = liftM++instance (Monad m, Pointed m) => Applicative (WrapMonad m) where+  pure  = pointed+  (<*>) = ap++-- data+data Sorted a = Sorted a a a+  deriving+    via( WrapMonad Sorted)(Functor,Applicative)+  deriving+    via( WrapApplicative Sorted a)(Num,Fractional,Floating,Semigroup,Monoid)+++instance Monad Sorted where+  (>>=) :: Sorted a -> (a -> Sorted b) -> Sorted b+  Sorted a b c >>= f = Sorted a' b' c' where+    Sorted a' _  _  = f a+    Sorted _  b' _  = f b+    Sorted _  _  c' = f c++instance Pointed Sorted where+  pointed :: a -> Sorted a+  pointed a = Sorted a a a++----+-- 3+----+class IsZero a where+  isZero :: a -> Bool++newtype WrappedNumEq  a = WrappedNumEq a+newtype WrappedShow   a = WrappedShow  a+newtype WrappedNumEq2 a = WrappedNumEq2 a++instance (Num a, Eq a) => IsZero (WrappedNumEq a) where+  isZero :: WrappedNumEq a -> Bool+  isZero (WrappedNumEq a) = 0 == a++instance Show a => IsZero (WrappedShow a) where+  isZero :: WrappedShow a -> Bool+  isZero (WrappedShow a) = "0" == show a++instance (Num a, Eq a) => IsZero (WrappedNumEq2 a) where+  isZero :: WrappedNumEq2 a -> Bool+  isZero (WrappedNumEq2 a) = a + a == a++newtype INT = INT Int+  deriving newtype Show+  deriving        via( WrappedNumEq Int)IsZero++newtype VOID = VOID Void deriving        via( WrappedShow Void)IsZero++----+-- 4+----+class Bifunctor p => Biapplicative p where+  bipure :: a -> b -> p a b++  biliftA2+    :: (a  -> b  -> c)+    -> (a' -> b' -> c')+    -> p a a'+    -> p b b'+    -> p c c'++instance Biapplicative (,) where+  bipure = (,)++  biliftA2 f f' (a, a') (b, b') =+    (f a b, f' a' b')++newtype WrapBiapp p a b = WrapBiap (p a b)+  deriving newtype (Bifunctor, Biapplicative, Eq)++instance (Biapplicative p, Num a, Num b) => Num (WrapBiapp p a b) where+  (+) = biliftA2 (+) (+)+  (-) = biliftA2 (*) (*)+  (*) = biliftA2 (*) (*)+  negate = bimap negate negate+  abs = bimap abs abs+  signum = bimap signum signum+  fromInteger n = fromInteger n `bipure` fromInteger n++newtype INT2 = INT2 (Int, Int)+  deriving        via( WrappedNumEq2 (WrapBiapp (,) Int Int))IsZero++----+-- 5+----+class Monoid a => MonoidNull a where+  null :: a -> Bool++newtype WrpMonNull a = WRM a deriving (Eq, Semigroup, Monoid)++instance (Eq a, Monoid a) => MonoidNull (WrpMonNull a) where+  null :: WrpMonNull a -> Bool+  null = (== mempty)++deriving via( WrpMonNull Any) instance MonoidNull Any+deriving via ()               instance MonoidNull ()+deriving viaOrdering          instance MonoidNull Ordering++----+-- 6+----+-- https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635++class Lattice a where+  sup   :: a -> a -> a+  (.>=) :: a -> a -> Bool+  (.>)  :: a -> a -> Bool++newtype WrapOrd a = WrappedOrd a+  deriving newtype (Eq, Ord)++instance Ord a => Lattice (WrapOrd a) where+  sup   = max+  (.>=) = (>=)+  (.>)  = (>)++deriving via[ a]    instance Ord a          => Lattice [a]+deriving via (a, b) instance (Ord a, Ord b) => Lattice (a, b)+--mkLattice_(Bool)+deriving viaBool  instance Lattice Bool+--mkLattice_(Char)+deriving viaChar  instance Lattice Char+--mkLattice_(Int)+deriving viaInt  instance Lattice Int+--mkLattice_(Integer)+deriving viaInteger  instance Lattice Integer+--mkLattice_(Float)+deriving viaFloat  instance Lattice Float+--mkLattice_(Double)+deriving viaDouble  instance Lattice Double+--mkLattice_(Rational)+deriving viaRational  instance Lattice Rational++----+-- 7+----+-- https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html++class Functor f => Additive f where+  zero :: Num a => f a+  (^+^) :: Num a => f a -> f a -> f a+  (^+^) = liftU2 (+)+  (^-^) :: Num a => f a -> f a -> f a+  x ^-^ y = x ^+^ fmap negate y+  liftU2 :: (a -> a -> a) -> f a -> f a -> f a++instance Additive [] where+  zero = []+  liftU2 f = go where+    go (x:xs) (y:ys) = f x y : go xs ys+    go [] ys = ys+    go xs [] = xs++instance Additive Maybe where+  zero = Nothing+  liftU2 f (Just a) (Just b) = Just (f a b)+  liftU2 _ Nothing ys = ys+  liftU2 _ xs Nothing = xs++instance Applicative f => Additive (WrapApplicative f) where+  zero   = pure 0+  liftU2 = liftA2++deriving via( WrapApplicative ((->) a)) instance Additive ((->) a)+deriving via( WrapApplicative Complex)  instance Additive Complex+deriving via( WrapApplicative Identity) instance Additive Identity++instance Additive ZipList where+  zero = ZipList []+  liftU2 f (ZipList xs) (ZipList ys) = ZipList (liftU2 f xs ys)++class Additive (Diff p) => Affine p where+  type Diff p :: Type -> Type++  (.-.) :: Num a => p a -> p a -> Diff p a+  (.+^) :: Num a => p a -> Diff p a -> p a+  (.-^) :: Num a => p a -> Diff p a -> p a+  p .-^ v = p .+^ fmap negate v++-- #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \+--   (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \+--   (.-^) = (^-^) ; {-# INLINE (.-^) #-}+-- #define ADDITIVE(T) ADDITIVEC((), T)+newtype WrapAdditive f a = WrappedAdditive (f a)++instance Additive f => Affine (WrapAdditive f) where+  type Diff (WrapAdditive f) = f++  WrappedAdditive a .-. WrappedAdditive b = a ^-^ b+  WrappedAdditive a .+^ b = WrappedAdditive (a ^+^ b)+  WrappedAdditive a .-^ b = WrappedAdditive (a ^-^ b)++-- ADDITIVE(((->) a))+deriving via( WrapAdditive ((->) a)) instance Affine ((->) a)+-- ADDITIVE([])+deriving via( WrapAdditive [])       instance Affine []+-- ADDITIVE(Complex)+deriving via( WrapAdditive Complex)  instance Affine Complex+-- ADDITIVE(Maybe)+deriving via( WrapAdditive Maybe)    instance Affine Maybe+-- ADDITIVE(ZipList)+deriving via( WrapAdditive ZipList)  instance Affine ZipList+-- ADDITIVE(Identity)+deriving via( WrapAdditive Identity) instance Affine Identity++----+-- 8+----++class C2 a b c where+  c2 :: a -> b -> c++instance C2 a b (Const a b) where+  c2 x _ = Const x++newtype Fweemp a = Fweemp a+  deriving+       via( Const a (b :: Type))(C2ab)+
+ tests/examples/DerivingVia.hs.parser.golden view
@@ -0,0 +1,32882 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 1 460 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 1+            , SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 1+            , SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 1+            , SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 1+            , SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 1+            , SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 1+            , SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 1+            , SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 1+            , SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 1+            , SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 1+            , SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 1+            , SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 1+            , SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 1+            , SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 1+            , SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 1+            , SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 1+            , SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 1+            , SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 1+            , SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 1+            , SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 1+            , SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 1+            , SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 1+            , SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 1+            , SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 1+            , SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 1+            , SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 1+            , SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 1+            , SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 1+            , SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 1+            , SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 1+            , SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 1+            , SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 1+            , SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 1+            , SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 1+            , SrcSpan "tests/examples/DerivingVia.hs" 42 1 42 1+            , SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 1+            , SrcSpan "tests/examples/DerivingVia.hs" 52 1 52 1+            , SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 1+            , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 1+            , SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 1+            , SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 1+            , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 1+            , SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 1+            , SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 1+            , SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 1+            , SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 1+            , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 1+            , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 1+            , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 1+            , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 1+            , SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 1+            , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 1+            , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 1+            , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 1+            , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 1+            , SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 1+            , SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 1+            , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 1+            , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 1+            , SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 1+            , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 1+            , SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 1+            , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 1+            , SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 1+            , SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 1+            , SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 1+            , SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 1+            , SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 1+            , SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 1+            , SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 1+            , SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 1+            , SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 1+            , SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 1+            , SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 1+            , SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 1+            , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 1+            , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 1+            , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 1+            , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 1+            , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 1+            , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 1+            , SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 1+            , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 1+            , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 1+            , SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 1+            , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 1+            , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 1+            , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 1+            , SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 1+            , SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 1+            , SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 1+            , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 1+            , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 1+            , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 1+            , SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 1+            , SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 1+            , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 1+            , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 1+            , SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 1+            , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 1+            , SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 1+            , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 1+            , SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 1+            , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 1+            , SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 1+            , SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 1+            , SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 1+            , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 1+            , SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 1+            , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 1+            , SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 1+            , SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 1+            , SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 1+            , SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 1+            , SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 1+            , SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 1+            , SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 1+            , SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 1+            , SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 1+            , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 1+            , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 1+            , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 1+            , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 1+            , SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 1+            , SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 1+            , SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 1+            , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 1+            , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 1+            , SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 1+            , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 1+            , SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 1+            , SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 1+            , SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 1+            , SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 1+            , SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 1+            , SrcSpan "tests/examples/DerivingVia.hs" 451 1 451 1+            , SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 1+            , SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 1+            , SrcSpan "tests/examples/DerivingVia.hs" 460 1 460 1+            , SrcSpan "tests/examples/DerivingVia.hs" 460 1 460 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 25+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 7+                  , SrcSpan "tests/examples/DerivingVia.hs" 20 20 20 25+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 20 8 20 19+                 , srcInfoPoints = []+                 }+               "DerivingVia")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 13+                , SrcSpan "tests/examples/DerivingVia.hs" 1 33 1 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 14 1 32+                , srcInfoPoints = []+                }+              "DerivingStrategies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 13+                , SrcSpan "tests/examples/DerivingVia.hs" 2 26 2 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 2 14 2 25+                , srcInfoPoints = []+                }+              "DerivingVia"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 13+                , SrcSpan "tests/examples/DerivingVia.hs" 3 41 3 44+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 3 14 3 40+                , srcInfoPoints = []+                }+              "GeneralizedNewtypeDeriving"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 13+                , SrcSpan "tests/examples/DerivingVia.hs" 4 29 4 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 4 14 4 28+                , srcInfoPoints = []+                }+              "KindSignatures"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 13+                , SrcSpan "tests/examples/DerivingVia.hs" 5 25 5 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 5 14 5 24+                , srcInfoPoints = []+                }+              "RankNTypes"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 13+                , SrcSpan "tests/examples/DerivingVia.hs" 6 33 6 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 6 14 6 32+                , srcInfoPoints = []+                }+              "StandaloneDeriving"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 13+                , SrcSpan "tests/examples/DerivingVia.hs" 7 27 7 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 7 14 7 26+                , srcInfoPoints = []+                }+              "InstanceSigs"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 13+                , SrcSpan "tests/examples/DerivingVia.hs" 8 25 8 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 8 14 8 24+                , srcInfoPoints = []+                }+              "TypeInType"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 13+                , SrcSpan "tests/examples/DerivingVia.hs" 9 20 9 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 9 14 9 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 13+                , SrcSpan "tests/examples/DerivingVia.hs" 10 31 10 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 10 14 10 30+                , srcInfoPoints = []+                }+              "TypeApplications"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 13+                , SrcSpan "tests/examples/DerivingVia.hs" 11 30 11 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 11 14 11 29+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 13+                , SrcSpan "tests/examples/DerivingVia.hs" 12 36 12 39+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 12 14 12 35+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 13+                , SrcSpan "tests/examples/DerivingVia.hs" 13 25 13 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 13 14 13 24+                , srcInfoPoints = []+                }+              "MultiWayIf"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 13+                , SrcSpan "tests/examples/DerivingVia.hs" 14 28 14 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 14 14 14 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 13+                , SrcSpan "tests/examples/DerivingVia.hs" 15 34 15 37+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 15 14 15 33+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 13+                , SrcSpan "tests/examples/DerivingVia.hs" 16 32 16 35+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 16 14 16 31+                , srcInfoPoints = []+                }+              "FlexibleInstances"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 13+                , SrcSpan "tests/examples/DerivingVia.hs" 17 27 17 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 17 14 17 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 13+                , SrcSpan "tests/examples/DerivingVia.hs" 18 31 18 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 18 14 18 30+                , srcInfoPoints = []+                }+              "FlexibleContexts"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 13+                , SrcSpan "tests/examples/DerivingVia.hs" 19 35 19 38+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 19 14 19 34+                , srcInfoPoints = []+                }+              "UndecidableInstances"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 22 8 22 17+                  , srcInfoPoints = []+                  }+                "Data.Void"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 20+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 23 8 23 20+                  , srcInfoPoints = []+                  }+                "Data.Complex"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 26+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 24 8 24 26+                  , srcInfoPoints = []+                  }+                "Data.Functor.Const"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 29+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 25 8 25 29+                  , srcInfoPoints = []+                  }+                "Data.Functor.Identity"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 18+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 26 8 26 18+                  , srcInfoPoints = []+                  }+                "Data.Ratio"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 28+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 27 8 27 28+                  , srcInfoPoints = []+                  }+                "Control.Monad.Reader"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 28 8 28 27+                  , srcInfoPoints = []+                  }+                "Control.Monad.State"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 28+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 29 8 29 28+                  , srcInfoPoints = []+                  }+                "Control.Monad.Writer"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 53+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 8 30 27+                  , srcInfoPoints = []+                  }+                "Control.Applicative"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 28 30 53+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 30 28 30 34+                         , SrcSpan "tests/examples/DerivingVia.hs" 30 35 30 36+                         , SrcSpan "tests/examples/DerivingVia.hs" 30 52 30 53+                         ]+                     }+                   True+                   [ IThingAll+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 36 30 52+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 30 48 30 49+                             , SrcSpan "tests/examples/DerivingVia.hs" 30 49 30 51+                             , SrcSpan "tests/examples/DerivingVia.hs" 30 51 30 52+                             ]+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 36 30 48+                            , srcInfoPoints = []+                            }+                          "WrappedMonad")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 22+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 32 8 32 22+                  , srcInfoPoints = []+                  }+                "Data.Bifunctor"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 19+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 33 8 33 19+                  , srcInfoPoints = []+                  }+                "Data.Monoid"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 34 8 34 17+                  , srcInfoPoints = []+                  }+                "Data.Kind"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 5+                , SrcSpan "tests/examples/DerivingVia.hs" 36 13 36 14+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 12+               , srcInfoPoints = []+               }+             (DHInfix+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 12+                  , srcInfoPoints = []+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 7+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 7+                        , srcInfoPoints = []+                        }+                      "f"))+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 8 36 10+                     , srcInfoPoints = []+                     }+                   "~>"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 11 36 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 11 36 12+                     , srcInfoPoints = []+                     }+                   "g")))+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 15 36 38+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DerivingVia.hs" 36 15 36 21+                   , SrcSpan "tests/examples/DerivingVia.hs" 36 24 36 25+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 22 36 24+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 22 36 24+                         , srcInfoPoints = []+                         }+                       "xx")+                ])+             Nothing+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 38+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 36 31 36 33 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 30+                     , srcInfoPoints = []+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 27+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 27+                           , srcInfoPoints = []+                           }+                         "f"))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 28 36 30+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 28 36 30+                           , srcInfoPoints = []+                           }+                         "xx")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 38+                     , srcInfoPoints = []+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 35+                           , srcInfoPoints = []+                           }+                         "g"))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 36 36 38+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 36 36 38+                           , srcInfoPoints = []+                           }+                         "xx")))))+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 1 43 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 42 12 42 13 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 1 42 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 11+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 9+                     , srcInfoPoints = []+                     }+                   "Foo"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 10 42 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 10 42 11+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 23+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 19+                      , srcInfoPoints = []+                      }+                    "MkFoo")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 20 42 21+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 20 42 21+                          , srcInfoPoints = []+                          }+                        "a")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 22 42 23+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 22 42 23+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 3 43 16+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 43 3 43 11 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 8 44 11+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 12 44 30+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 44 12 44 13+                             , SrcSpan "tests/examples/DerivingVia.hs" 44 29 44 30+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 29+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21+                                     , srcInfoPoints = []+                                     }+                                   "Identity")))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 22 44 29+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 44 22 44 23+                                   , SrcSpan "tests/examples/DerivingVia.hs" 44 28 44 29+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 28+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26+                                           , srcInfoPoints = []+                                           }+                                         "Foo")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 44 27 44 28+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 44 27 44 28+                                        , srcInfoPoints = []+                                        }+                                      "a"))))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 50 20 50 21 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 19+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 17+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 15+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 13+                           , srcInfoPoints = []+                           }+                         "Flip"))+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 14 50 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 14 50 15+                           , srcInfoPoints = []+                           }+                         "p")))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 16 50 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 16 50 17+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 18 50 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 18 50 19+                     , srcInfoPoints = []+                     }+                   "b")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 47+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 50 27 50 28+                    , SrcSpan "tests/examples/DerivingVia.hs" 50 46 50 47+                    ]+                }+              Nothing+              Nothing+              (RecDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 47+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 50 27 50 28+                       , SrcSpan "tests/examples/DerivingVia.hs" 50 46 50 47+                       ]+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 26+                      , srcInfoPoints = []+                      }+                    "Flip")+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 29 50 45+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 50 37 50 39 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 29 50 36+                           , srcInfoPoints = []+                           }+                         "runFlip"+                     ]+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 45+                          , srcInfoPoints = []+                          }+                        (TyApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 43+                             , srcInfoPoints = []+                             }+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 41+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 41+                                   , srcInfoPoints = []+                                   }+                                 "p"))+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 42 50 43+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 50 42 50 43+                                   , srcInfoPoints = []+                                   }+                                 "b")))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 44 50 45+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 44 50 45+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          []+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 1 55 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 52 1 52 9+                , SrcSpan "tests/examples/DerivingVia.hs" 52 44 52 49+                , SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 3+                , SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 43+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19+                                    , srcInfoPoints = []+                                    }+                                  "Bifunctor")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21+                                 , srcInfoPoints = []+                                 }+                               "p"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 43+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34+                           , srcInfoPoints = []+                           }+                         "Bifunctor")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 43+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 36+                         , SrcSpan "tests/examples/DerivingVia.hs" 52 42 52 43+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 42+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40+                                 , srcInfoPoints = []+                                 }+                               "Flip")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42+                              , srcInfoPoints = []+                              }+                            "p"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 8+                             , srcInfoPoints = []+                             }+                           "bimap")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10+                                 , srcInfoPoints = []+                                 }+                               "f")+                        , PVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12+                                 , srcInfoPoints = []+                                 }+                               "g")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 41+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 14 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 41+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19+                                         , srcInfoPoints = []+                                         }+                                       "Flip")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21+                                         , srcInfoPoints = []+                                         }+                                       ".")))+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 41+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 31+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 29+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 27+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 53 22 53 27+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs" 53 22 53 27+                                                  , srcInfoPoints = []+                                                  }+                                                "bimap")))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 28 53 29+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 53 28 53 29+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs" 53 28 53 29+                                                  , srcInfoPoints = []+                                                  }+                                                "g"))))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 53 30 53 31+                                               , srcInfoPoints = []+                                               }+                                             "f"))))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33+                                            , srcInfoPoints = []+                                            }+                                          ".")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41+                                            , srcInfoPoints = []+                                            }+                                          "runFlip"))))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 1 58 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 9+                , SrcSpan "tests/examples/DerivingVia.hs" 55 44 55 49+                , SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 3+                , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 43+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19+                                    , srcInfoPoints = []+                                    }+                                  "Bifunctor")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21+                                 , srcInfoPoints = []+                                 }+                               "p"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 43+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32+                           , srcInfoPoints = []+                           }+                         "Functor")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 43+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 34+                         , SrcSpan "tests/examples/DerivingVia.hs" 55 42 55 43+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 42+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 40+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38+                                    , srcInfoPoints = []+                                    }+                                  "Flip")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40+                                 , srcInfoPoints = []+                                 }+                               "p")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 7+                             , srcInfoPoints = []+                             }+                           "fmap")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9+                                 , srcInfoPoints = []+                                 }+                               "f")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 36+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 11 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 36+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16+                                         , srcInfoPoints = []+                                         }+                                       "Flip")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18+                                         , srcInfoPoints = []+                                         }+                                       ".")))+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 36+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 26+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 56 19 56 24+                                               , srcInfoPoints = []+                                               }+                                             "first")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 56 25 56 26+                                               , srcInfoPoints = []+                                               }+                                             "f"))))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28+                                            , srcInfoPoints = []+                                            }+                                          ".")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36+                                            , srcInfoPoints = []+                                            }+                                          "runFlip"))))))+                        Nothing+                    ])+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 59 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 58 15 58 16 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 14+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12+                     , srcInfoPoints = []+                     }+                   "Bar"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 22+                      , srcInfoPoints = []+                      }+                    "MkBar")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 37+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 24+                           , SrcSpan "tests/examples/DerivingVia.hs" 58 36 58 37+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 36+                          , srcInfoPoints = []+                          }+                        (TyApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 32+                             , srcInfoPoints = []+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30+                                      , srcInfoPoints = []+                                      }+                                    "Either")))+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36+                                   , srcInfoPoints = []+                                   }+                                 "Int"))))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 19+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 11 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 8 60 11+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 29+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 13+                             , SrcSpan "tests/examples/DerivingVia.hs" 60 28 60 29+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 28+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 24+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17+                                        , srcInfoPoints = []+                                        }+                                      "Flip")))+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24+                                        , srcInfoPoints = []+                                        }+                                      "Either"))))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28+                                     , srcInfoPoints = []+                                     }+                                   "Int")))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19+                             , srcInfoPoints = []+                             }+                           "Functor")))+              ]+          ]+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 5+                , SrcSpan "tests/examples/DerivingVia.hs" 66 13 66 14+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12+                  , srcInfoPoints = []+                  }+                "MTrans"))+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 47+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DerivingVia.hs" 66 30 66 32 ]+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 16+                      , SrcSpan "tests/examples/DerivingVia.hs" 66 28 66 29+                      ]+                  }+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 21 66 23 ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20+                              , srcInfoPoints = []+                              }+                            "Type")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28+                              , srcInfoPoints = []+                              }+                            "Type")))))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 47+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 34+                      , SrcSpan "tests/examples/DerivingVia.hs" 66 46 66 47+                      ]+                  }+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 46+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 39 66 41 ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38+                              , srcInfoPoints = []+                              }+                            "Type")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46+                              , srcInfoPoints = []+                              }+                            "Type"))))))+      , GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 72 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 69 13 69 18+                , SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 3+                , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 12+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10+                     , srcInfoPoints = []+                     }+                   "Dict"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12+                     , srcInfoPoints = []+                     }+                   "c")))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 22+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 70 8 70 10 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 7+                   , srcInfoPoints = []+                   }+                 "Dict")+              Nothing+              Nothing+              Nothing+              (TyForall+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 22+                   , srcInfoPoints = []+                   }+                 Nothing+                 (Just+                    (CxSingle+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]+                         }+                       (TypeA+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 12+                                  , srcInfoPoints = []+                                  }+                                "c")))))+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 22+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20+                               , srcInfoPoints = []+                               }+                             "Dict")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22+                            , srcInfoPoints = []+                            }+                          "c"))))+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 72 16 72 17 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15+               , srcInfoPoints = []+               }+             (DHInfix+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15+                  , srcInfoPoints = []+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10+                        , srcInfoPoints = []+                        }+                      "a"))+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 11 72 13+                     , srcInfoPoints = []+                     }+                   ":-"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15+                     , srcInfoPoints = []+                     }+                   "b")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 21+                      , srcInfoPoints = []+                      }+                    "Sub")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 35+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 23+                           , SrcSpan "tests/examples/DerivingVia.hs" 72 34 72 35+                           ]+                       }+                     (TyForall+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 34+                          , srcInfoPoints = []+                          }+                        Nothing+                        (Just+                           (CxSingle+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]+                                }+                              (TypeA+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]+                                   }+                                 (TyVar+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 24+                                         , srcInfoPoints = []+                                         }+                                       "a")))))+                        (TyApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 34+                             , srcInfoPoints = []+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32+                                      , srcInfoPoints = []+                                      }+                                    "Dict")))+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34+                                   , srcInfoPoints = []+                                   }+                                 "b"))))+                 ])+          ]+          []+      , InfixDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 12+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 74 8 74 9 ]+            }+          (AssocLeft+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 7+               , srcInfoPoints = []+               })+          (Just 1)+          [ VarOp+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12+                , srcInfoPoints = []+                }+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12+                   , srcInfoPoints = []+                   }+                 "\\\\")+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 75 6 75 8 ]+            }+          [ Symbol+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 5+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 2+                    , SrcSpan "tests/examples/DerivingVia.hs" 75 2 75 4+                    , SrcSpan "tests/examples/DerivingVia.hs" 75 4 75 5+                    ]+                }+              "\\\\"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 39+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]+                        }+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 10+                              , srcInfoPoints = []+                              }+                            "a")))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 39+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 75 23 75 25 ]+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 22+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 75 21 75 22+                         ]+                     }+                   (TyForall+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 21+                        , srcInfoPoints = []+                        }+                      Nothing+                      (Just+                         (CxSingle+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]+                              }+                            (TypeA+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]+                                 }+                               (TyVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 16+                                       , srcInfoPoints = []+                                       }+                                     "b")))))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21+                              , srcInfoPoints = []+                              }+                            "r"))))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 39+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 35 75 37 ]+                     }+                   (TyParen+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 34+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 27+                            , SrcSpan "tests/examples/DerivingVia.hs" 75 33 75 34+                            ]+                        }+                      (TyInfix+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 33+                           , srcInfoPoints = []+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28+                                 , srcInfoPoints = []+                                 }+                               "a"))+                         (UnpromotedName+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31+                                 , srcInfoPoints = []+                                 }+                               (Symbol+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31+                                    , srcInfoPoints = []+                                    }+                                  ":-")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33+                                 , srcInfoPoints = []+                                 }+                               "b"))))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39+                           , srcInfoPoints = []+                           }+                         "r")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18+                , srcInfoPoints = []+                }+              (PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2+                      , srcInfoPoints = []+                      }+                    "r"))+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 3 76 5+                   , srcInfoPoints = []+                   }+                 "\\\\")+              [ PApp+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 14+                    , srcInfoPoints = []+                    }+                  (UnQual+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9+                          , srcInfoPoints = []+                          }+                        "Sub"))+                  [ PApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14+                              , srcInfoPoints = []+                              }+                            "Dict"))+                      []+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 16 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18+                            , srcInfoPoints = []+                            }+                          "r"))))+              Nothing+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 1 85 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 6+                , SrcSpan "tests/examples/DerivingVia.hs" 84 38 84 43+                , SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 3+                , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 37+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19+                     , srcInfoPoints = []+                     }+                   "LiftingMonad"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 37+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 21+                      , SrcSpan "tests/examples/DerivingVia.hs" 84 27 84 29+                      , SrcSpan "tests/examples/DerivingVia.hs" 84 36 84 37+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 21 84 26+                     , srcInfoPoints = []+                     }+                   "trans")+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36+                           , srcInfoPoints = []+                           }+                         "MTrans")))))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 8+                          , srcInfoPoints = []+                          }+                        "proof"+                    ]+                    (TyInfix+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 38+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 19+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17+                                     , srcInfoPoints = []+                                     }+                                   "Monad")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19+                                  , srcInfoPoints = []+                                  }+                                "m")))+                       (UnpromotedName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22+                                  , srcInfoPoints = []+                                  }+                                ":-")))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 38+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28+                                     , srcInfoPoints = []+                                     }+                                   "Monad")))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 38+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 30+                                   , SrcSpan "tests/examples/DerivingVia.hs" 85 37 85 38+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 37+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35+                                        , srcInfoPoints = []+                                        }+                                      "trans"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37+                                        , srcInfoPoints = []+                                        }+                                      "m")))))))+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 1 91 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 9+                , SrcSpan "tests/examples/DerivingVia.hs" 87 44 87 49+                , SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 3+                , SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 3+                , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22+                           , srcInfoPoints = []+                           }+                         "LiftingMonad")))+                (TyKind+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 43+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 24+                         , SrcSpan "tests/examples/DerivingVia.hs" 87 33 87 35+                         , SrcSpan "tests/examples/DerivingVia.hs" 87 42 87 43+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 32+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30+                                 , srcInfoPoints = []+                                 }+                               "StateT")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32+                              , srcInfoPoints = []+                              }+                            "s")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42+                              , srcInfoPoints = []+                              }+                            "MTrans"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 8+                          , srcInfoPoints = []+                          }+                        "proof"+                    ]+                    (TyInfix+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 41+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 19+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17+                                     , srcInfoPoints = []+                                     }+                                   "Monad")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19+                                  , srcInfoPoints = []+                                  }+                                "m")))+                       (UnpromotedName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22+                                  , srcInfoPoints = []+                                  }+                                ":-")))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 41+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28+                                     , srcInfoPoints = []+                                     }+                                   "Monad")))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 41+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 30+                                   , SrcSpan "tests/examples/DerivingVia.hs" 88 40 88 41+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 40+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 38+                                     , srcInfoPoints = []+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 88 30 88 36+                                              , srcInfoPoints = []+                                              }+                                            "StateT")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38+                                           , srcInfoPoints = []+                                           }+                                         "s")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40+                                        , srcInfoPoints = []+                                        }+                                      "m")))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8+                            , srcInfoPoints = []+                            }+                          "proof"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 19+                            , srcInfoPoints = []+                            }+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14+                                     , srcInfoPoints = []+                                     }+                                   "Sub")))+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19+                                     , srcInfoPoints = []+                                     }+                                   "Dict")))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 1 95 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 9+                , SrcSpan "tests/examples/DerivingVia.hs" 91 57 91 62+                , SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 3+                , SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 3+                , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 56+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16+                                    , srcInfoPoints = []+                                    }+                                  "Monoid")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18+                                 , srcInfoPoints = []+                                 }+                               "w"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 56+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34+                           , srcInfoPoints = []+                           }+                         "LiftingMonad")))+                (TyKind+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 56+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 36+                         , SrcSpan "tests/examples/DerivingVia.hs" 91 46 91 48+                         , SrcSpan "tests/examples/DerivingVia.hs" 91 55 91 56+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 45+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43+                                 , srcInfoPoints = []+                                 }+                               "WriterT")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45+                              , srcInfoPoints = []+                              }+                            "w")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55+                              , srcInfoPoints = []+                              }+                            "MTrans"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 8+                          , srcInfoPoints = []+                          }+                        "proof"+                    ]+                    (TyInfix+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 42+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 19+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17+                                     , srcInfoPoints = []+                                     }+                                   "Monad")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19+                                  , srcInfoPoints = []+                                  }+                                "m")))+                       (UnpromotedName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22+                                  , srcInfoPoints = []+                                  }+                                ":-")))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 42+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28+                                     , srcInfoPoints = []+                                     }+                                   "Monad")))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 42+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 30+                                   , SrcSpan "tests/examples/DerivingVia.hs" 92 41 92 42+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 41+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 39+                                     , srcInfoPoints = []+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 92 30 92 37+                                              , srcInfoPoints = []+                                              }+                                            "WriterT")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39+                                           , srcInfoPoints = []+                                           }+                                         "w")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41+                                        , srcInfoPoints = []+                                        }+                                      "m")))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8+                            , srcInfoPoints = []+                            }+                          "proof"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 19+                            , srcInfoPoints = []+                            }+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14+                                     , srcInfoPoints = []+                                     }+                                   "Sub")))+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19+                                     , srcInfoPoints = []+                                     }+                                   "Dict")))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 1 99 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 9+                , SrcSpan "tests/examples/DerivingVia.hs" 95 102 95 107+                , SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 3+                , SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 3+                , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 101+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 54+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 29 95 30+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 50 95 51+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 52 95 54+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23+                                     , srcInfoPoints = []+                                     }+                                   "LiftingMonad")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29+                                  , srcInfoPoints = []+                                  }+                                "trans")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43+                                     , srcInfoPoints = []+                                     }+                                   "LiftingMonad")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50+                                  , srcInfoPoints = []+                                  }+                                "trans'")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 101+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67+                           , srcInfoPoints = []+                           }+                         "LiftingMonad")))+                (TyKind+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 101+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 69+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 91 95 93+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 100 95 101+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 90+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 83+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77+                                    , srcInfoPoints = []+                                    }+                                  "ComposeT")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83+                                 , srcInfoPoints = []+                                 }+                               "trans")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90+                              , srcInfoPoints = []+                              }+                            "trans'")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100+                              , srcInfoPoints = []+                              }+                            "MTrans"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 8+                          , srcInfoPoints = []+                          }+                        "proof"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 64+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 18+                             , SrcSpan "tests/examples/DerivingVia.hs" 96 20 96 21+                             ]+                         }+                       (Just+                          [ UnkindedVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20+                                   , srcInfoPoints = []+                                   }+                                 "m")+                          ])+                       Nothing+                       (TyInfix+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 64+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 29+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27+                                        , srcInfoPoints = []+                                        }+                                      "Monad")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29+                                     , srcInfoPoints = []+                                     }+                                   "m")))+                          (UnpromotedName+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32+                                     , srcInfoPoints = []+                                     }+                                   ":-")))+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 64+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38+                                        , srcInfoPoints = []+                                        }+                                      "Monad")))+                             (TyParen+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 64+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 40+                                      , SrcSpan "tests/examples/DerivingVia.hs" 96 63 96 64+                                      ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 63+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 61+                                        , srcInfoPoints = []+                                        }+                                      (TyApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 54+                                           , srcInfoPoints = []+                                           }+                                         (TyCon+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 96 40 96 48+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 96 40 96 48+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          96+                                                          40+                                                          96+                                                          48+                                                    , srcInfoPoints = []+                                                    }+                                                  "ComposeT")))+                                         (TyVar+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 96 49 96 54+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 96 49 96 54+                                                 , srcInfoPoints = []+                                                 }+                                               "trans")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 96 55 96 61+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 96 55 96 61+                                              , srcInfoPoints = []+                                              }+                                            "trans'")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63+                                           , srcInfoPoints = []+                                           }+                                         "m"))))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8+                            , srcInfoPoints = []+                            }+                          "proof"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 69+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 69+                            , srcInfoPoints = []+                            }+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14+                                     , srcInfoPoints = []+                                     }+                                   "Sub")))+                          (Paren+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 69+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 16+                                   , SrcSpan "tests/examples/DerivingVia.hs" 97 68 97 69+                                   ]+                               }+                             (InfixApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 68+                                  , srcInfoPoints = []+                                  }+                                (InfixApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 48+                                     , srcInfoPoints = []+                                     }+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 97 16 97 20+                                              , srcInfoPoints = []+                                              }+                                            "Dict")))+                                   (QVarOp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23+                                           , srcInfoPoints = []+                                           }+                                         (Symbol+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 97 21 97 23+                                              , srcInfoPoints = []+                                              }+                                            "\\\\")))+                                   (App+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 48+                                        , srcInfoPoints = []+                                        }+                                      (App+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 36+                                           , srcInfoPoints = []+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 97 24 97 29+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 97 24 97 29+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          97+                                                          24+                                                          97+                                                          29+                                                    , srcInfoPoints = []+                                                    }+                                                  "proof")))+                                         (TypeApp+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 97 30 97 36+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/DerivingVia.hs" 97 30 97 31+                                                  ]+                                              }+                                            (TyVar+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 97 31 97 36+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          97+                                                          31+                                                          97+                                                          36+                                                    , srcInfoPoints = []+                                                    }+                                                  "trans"))))+                                      (TypeApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 48+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 38+                                               ]+                                           }+                                         (TyParen+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 97 38 97 48+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/DerivingVia.hs" 97 38 97 39+                                                  , SrcSpan+                                                      "tests/examples/DerivingVia.hs" 97 47 97 48+                                                  ]+                                              }+                                            (TyApp+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 97 39 97 47+                                                 , srcInfoPoints = []+                                                 }+                                               (TyVar+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          97+                                                          39+                                                          97+                                                          45+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/DerivingVia.hs"+                                                             97+                                                             39+                                                             97+                                                             45+                                                       , srcInfoPoints = []+                                                       }+                                                     "trans'"))+                                               (TyVar+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          97+                                                          46+                                                          97+                                                          47+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/DerivingVia.hs"+                                                             97+                                                             46+                                                             97+                                                             47+                                                       , srcInfoPoints = []+                                                       }+                                                     "m")))))))+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51+                                           , srcInfoPoints = []+                                           }+                                         "\\\\")))+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 68+                                     , srcInfoPoints = []+                                     }+                                   (App+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 65+                                        , srcInfoPoints = []+                                        }+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 57+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 97 52 97 57+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 97 52 97 57+                                                 , srcInfoPoints = []+                                                 }+                                               "proof")))+                                      (TypeApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 65+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 59+                                               ]+                                           }+                                         (TyVar+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 97 59 97 65+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 97 59 97 65+                                                 , srcInfoPoints = []+                                                 }+                                               "trans'"))))+                                   (TypeApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 68+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 67 ]+                                        }+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 67 97 68+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 97 67 97 68+                                              , srcInfoPoints = []+                                              }+                                            "m"))))))))+                    Nothing)+             ])+      , GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 109 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 99 15 99 17+                , SrcSpan "tests/examples/DerivingVia.hs" 99 25 99 30+                , SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 3+                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3+                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3+                ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 8+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14+                  , srcInfoPoints = []+                  }+                "Stack"))+          (Just+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24+                        , srcInfoPoints = []+                        }+                      "MTrans"))))+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 71+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 100 9 100 11 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 8+                   , srcInfoPoints = []+                   }+                 "Stack")+              Nothing+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 71+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 100 59 100 61 ]+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 58+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 56+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 23+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19+                                     , srcInfoPoints = []+                                     }+                                   "ReaderT")))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23+                                     , srcInfoPoints = []+                                     }+                                   "Int"))))+                       (TyParen+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 56+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 25+                                , SrcSpan "tests/examples/DerivingVia.hs" 100 55 100 56+                                ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 55+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 36+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31+                                           , srcInfoPoints = []+                                           }+                                         "StateT")))+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36+                                           , srcInfoPoints = []+                                           }+                                         "Bool"))))+                             (TyParen+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 55+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 38+                                      , SrcSpan "tests/examples/DerivingVia.hs" 100 54 100 55+                                      ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 54+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 52+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 45+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 100 38 100 45+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 100 38 100 45+                                                 , srcInfoPoints = []+                                                 }+                                               "WriterT")))+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 46 100 52+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 100 46 100 52+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 100 46 100 52+                                                 , srcInfoPoints = []+                                                 }+                                               "String"))))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54+                                           , srcInfoPoints = []+                                           }+                                         "m")))))))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58+                            , srcInfoPoints = []+                            }+                          "a")))+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 71+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 69+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67+                                  , srcInfoPoints = []+                                  }+                                "Stack")))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69+                               , srcInfoPoints = []+                               }+                             "m")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71+                            , srcInfoPoints = []+                            }+                          "a"))))+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 101 3 108 6+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 102 5 102 6+                    , SrcSpan "tests/examples/DerivingVia.hs" 103 5 103 6+                    , SrcSpan "tests/examples/DerivingVia.hs" 104 5 104 6+                    , SrcSpan "tests/examples/DerivingVia.hs" 105 5 105 6+                    , SrcSpan "tests/examples/DerivingVia.hs" 106 5 106 6+                    , SrcSpan "tests/examples/DerivingVia.hs" 107 5 107 6+                    , SrcSpan "tests/examples/DerivingVia.hs" 108 5 108 6+                    ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 101 12 101 19+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14+                             , srcInfoPoints = []+                             }+                           "Functor")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18+                             , srcInfoPoints = []+                             }+                           "Applicative")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12+                             , srcInfoPoints = []+                             }+                           "Monad")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22+                       , srcInfoPoints = []+                       }+                     (IHCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18+                                , srcInfoPoints = []+                                }+                              "MonadReader")))+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22+                                , srcInfoPoints = []+                                }+                              "Int"))))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22+                       , srcInfoPoints = []+                       }+                     (IHCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17+                                , srcInfoPoints = []+                                }+                              "MonadState")))+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22+                                , srcInfoPoints = []+                                }+                              "Bool"))))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25+                       , srcInfoPoints = []+                       }+                     (IHCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18+                                , srcInfoPoints = []+                                }+                              "MonadWriter")))+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25+                                , srcInfoPoints = []+                                }+                              "String"))))+              ]+          , Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 34+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 109 12 109 13+                    , SrcSpan "tests/examples/DerivingVia.hs" 109 23 109 24+                    , SrcSpan "tests/examples/DerivingVia.hs" 109 33 109 34+                    ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 110 8 110 11+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 74+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 13+                             , SrcSpan "tests/examples/DerivingVia.hs" 110 73 110 74+                             ]+                         }+                       (TyInfix+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 73+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 24+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20+                                        , srcInfoPoints = []+                                        }+                                      "ReaderT")))+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24+                                        , srcInfoPoints = []+                                        }+                                      "Int"))))+                          (UnpromotedName+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26+                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34+                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35+                                      ]+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34+                                     , srcInfoPoints = []+                                     }+                                   "ComposeT")))+                          (TyInfix+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 73+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 47+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42+                                           , srcInfoPoints = []+                                           }+                                         "StateT")))+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47+                                           , srcInfoPoints = []+                                           }+                                         "Bool"))))+                             (UnpromotedName+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58+                                      ]+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49+                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57+                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58+                                         ]+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57+                                        , srcInfoPoints = []+                                        }+                                      "ComposeT")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 73+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66+                                           , srcInfoPoints = []+                                           }+                                         "WriterT")))+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73+                                           , srcInfoPoints = []+                                           }+                                         "String")))))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23+                             , srcInfoPoints = []+                             }+                           "MonadTrans")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33+                             , srcInfoPoints = []+                             }+                           "MFunctor")))+              ]+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 112 1 113 57+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 6+                , SrcSpan "tests/examples/DerivingVia.hs" 112 34 112 39+                , SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 3+                , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 33+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15+                     , srcInfoPoints = []+                     }+                   "MFunctor"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 33+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 17+                      , SrcSpan "tests/examples/DerivingVia.hs" 112 23 112 25+                      , SrcSpan "tests/examples/DerivingVia.hs" 112 32 112 33+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 112 17 112 22+                     , srcInfoPoints = []+                     }+                   "trans")+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32+                           , srcInfoPoints = []+                           }+                         "MTrans")))))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 8+                          , srcInfoPoints = []+                          }+                        "hoist"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 57+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 17+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 113 12 113 17+                                              , srcInfoPoints = []+                                              }+                                            "Monad")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19+                                           , srcInfoPoints = []+                                           }+                                         "m"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 57+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 113 33 113 35 ]+                            }+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 32+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 24+                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 31 113 32+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 31+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25+                                        , srcInfoPoints = []+                                        }+                                      "m"))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31+                                        , srcInfoPoints = []+                                        }+                                      "m'"))))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 57+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 37+                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 56 113 57+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 56+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 44+                                     , srcInfoPoints = []+                                     }+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42+                                           , srcInfoPoints = []+                                           }+                                         "trans"))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44+                                           , srcInfoPoints = []+                                           }+                                         "m")))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 56+                                     , srcInfoPoints = []+                                     }+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53+                                           , srcInfoPoints = []+                                           }+                                         "trans"))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56+                                           , srcInfoPoints = []+                                           }+                                         "m'"))))))))+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 115 1 119 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 9+                , SrcSpan "tests/examples/DerivingVia.hs" 115 41 115 46+                , SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 3+                , SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 3+                , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18+                           , srcInfoPoints = []+                           }+                         "MFunctor")))+                (TyKind+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 20+                         , SrcSpan "tests/examples/DerivingVia.hs" 115 30 115 32+                         , SrcSpan "tests/examples/DerivingVia.hs" 115 39 115 40+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 29+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27+                                 , srcInfoPoints = []+                                 }+                               "ReaderT")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29+                              , srcInfoPoints = []+                              }+                            "r")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39+                              , srcInfoPoints = []+                              }+                            "MTrans"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 8+                          , srcInfoPoints = []+                          }+                        "hoist"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 65+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 17+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 116 12 116 17+                                              , srcInfoPoints = []+                                              }+                                            "Monad")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19+                                           , srcInfoPoints = []+                                           }+                                         "m"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 65+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 116 33 116 35 ]+                            }+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 32+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 24+                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 31 116 32+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 31+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25+                                        , srcInfoPoints = []+                                        }+                                      "m"))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31+                                        , srcInfoPoints = []+                                        }+                                      "m'"))))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 65+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 37+                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 64 116 65+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 64+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 48+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 46+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 44+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 116 37 116 44+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 116 37 116 44+                                                 , srcInfoPoints = []+                                                 }+                                               "ReaderT")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 45 116 46+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 116 45 116 46+                                              , srcInfoPoints = []+                                              }+                                            "r")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48+                                           , srcInfoPoints = []+                                           }+                                         "m")))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 64+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 61+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 59+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 116 52 116 59+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 116 52 116 59+                                                 , srcInfoPoints = []+                                                 }+                                               "ReaderT")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 60 116 61+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 116 60 116 61+                                              , srcInfoPoints = []+                                              }+                                            "r")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64+                                           , srcInfoPoints = []+                                           }+                                         "m'"))))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 8+                             , srcInfoPoints = []+                             }+                           "hoist")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12+                                 , srcInfoPoints = []+                                 }+                               "nat")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 46+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 14 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 46+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22+                                         , srcInfoPoints = []+                                         }+                                       "ReaderT")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24+                                         , srcInfoPoints = []+                                         }+                                       ".")))+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 46+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 33+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 29+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 117 25 117 29+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 117 25 117 29+                                               , srcInfoPoints = []+                                               }+                                             "fmap")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 30 117 33+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 117 30 117 33+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 117 30 117 33+                                               , srcInfoPoints = []+                                               }+                                             "nat"))))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 117 34 117 35+                                            , srcInfoPoints = []+                                            }+                                          ".")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 117 36 117 46+                                            , srcInfoPoints = []+                                            }+                                          "runReaderT"))))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 119 1 123 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 9+                , SrcSpan "tests/examples/DerivingVia.hs" 119 40 119 45+                , SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 3+                , SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 3+                , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18+                           , srcInfoPoints = []+                           }+                         "MFunctor")))+                (TyKind+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 39+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 20+                         , SrcSpan "tests/examples/DerivingVia.hs" 119 29 119 31+                         , SrcSpan "tests/examples/DerivingVia.hs" 119 38 119 39+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 28+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26+                                 , srcInfoPoints = []+                                 }+                               "StateT")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28+                              , srcInfoPoints = []+                              }+                            "s")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38+                              , srcInfoPoints = []+                              }+                            "MTrans"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 8+                          , srcInfoPoints = []+                          }+                        "hoist"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 63+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 17+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 120 12 120 17+                                              , srcInfoPoints = []+                                              }+                                            "Monad")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19+                                           , srcInfoPoints = []+                                           }+                                         "m"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 63+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 120 33 120 35 ]+                            }+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 32+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 24+                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 31 120 32+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 31+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25+                                        , srcInfoPoints = []+                                        }+                                      "m"))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31+                                        , srcInfoPoints = []+                                        }+                                      "m'"))))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 63+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 37+                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 62 120 63+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 62+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 47+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 45+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 43+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 120 37 120 43+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 120 37 120 43+                                                 , srcInfoPoints = []+                                                 }+                                               "StateT")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 44 120 45+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 120 44 120 45+                                              , srcInfoPoints = []+                                              }+                                            "s")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47+                                           , srcInfoPoints = []+                                           }+                                         "m")))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 62+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 59+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 57+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 120 51 120 57+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 120 51 120 57+                                                 , srcInfoPoints = []+                                                 }+                                               "StateT")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 58 120 59+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 120 58 120 59+                                              , srcInfoPoints = []+                                              }+                                            "s")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62+                                           , srcInfoPoints = []+                                           }+                                         "m'"))))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 8+                             , srcInfoPoints = []+                             }+                           "hoist")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12+                                 , srcInfoPoints = []+                                 }+                               "nat")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 44+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 14 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 44+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21+                                         , srcInfoPoints = []+                                         }+                                       "StateT")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23+                                         , srcInfoPoints = []+                                         }+                                       ".")))+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 44+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 32+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 28+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 121 24 121 28+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 121 24 121 28+                                               , srcInfoPoints = []+                                               }+                                             "fmap")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 29 121 32+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 121 29 121 32+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 121 29 121 32+                                               , srcInfoPoints = []+                                               }+                                             "nat"))))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 121 33 121 34+                                            , srcInfoPoints = []+                                            }+                                          ".")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 121 35 121 44+                                            , srcInfoPoints = []+                                            }+                                          "runStateT"))))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 123 1 127 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 9+                , SrcSpan "tests/examples/DerivingVia.hs" 123 41 123 46+                , SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 3+                , SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 3+                , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18+                           , srcInfoPoints = []+                           }+                         "MFunctor")))+                (TyKind+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 20+                         , SrcSpan "tests/examples/DerivingVia.hs" 123 30 123 32+                         , SrcSpan "tests/examples/DerivingVia.hs" 123 39 123 40+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 29+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27+                                 , srcInfoPoints = []+                                 }+                               "WriterT")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29+                              , srcInfoPoints = []+                              }+                            "w")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39+                              , srcInfoPoints = []+                              }+                            "MTrans"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 8+                          , srcInfoPoints = []+                          }+                        "hoist"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 65+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 17+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 124 12 124 17+                                              , srcInfoPoints = []+                                              }+                                            "Monad")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19+                                           , srcInfoPoints = []+                                           }+                                         "m"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 65+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 124 33 124 35 ]+                            }+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 32+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 24+                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 31 124 32+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 31+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25+                                        , srcInfoPoints = []+                                        }+                                      "m"))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31+                                        , srcInfoPoints = []+                                        }+                                      "m'"))))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 65+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 37+                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 64 124 65+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 64+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 48+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 46+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 44+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 124 37 124 44+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 124 37 124 44+                                                 , srcInfoPoints = []+                                                 }+                                               "WriterT")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 45 124 46+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 124 45 124 46+                                              , srcInfoPoints = []+                                              }+                                            "w")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48+                                           , srcInfoPoints = []+                                           }+                                         "m")))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 64+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 61+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 59+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 124 52 124 59+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 124 52 124 59+                                                 , srcInfoPoints = []+                                                 }+                                               "WriterT")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 60 124 61+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 124 60 124 61+                                              , srcInfoPoints = []+                                              }+                                            "w")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64+                                           , srcInfoPoints = []+                                           }+                                         "m'"))))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 8+                             , srcInfoPoints = []+                             }+                           "hoist")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12+                                 , srcInfoPoints = []+                                 }+                               "nat")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 41+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 14 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 41+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22+                                         , srcInfoPoints = []+                                         }+                                       "WriterT")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24+                                         , srcInfoPoints = []+                                         }+                                       ".")))+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 41+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 125 25 125 28+                                            , srcInfoPoints = []+                                            }+                                          "nat")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 125 29 125 30+                                            , srcInfoPoints = []+                                            }+                                          ".")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 125 31 125 41+                                            , srcInfoPoints = []+                                            }+                                          "runWriterT"))))))+                        Nothing+                    ])+             ])+      , InfixDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 127 8 127 9 ]+            }+          (AssocRight+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 7+               , srcInfoPoints = []+               })+          (Just 9)+          [ ConOp+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19+                    , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20+                    ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11+                       , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19+                       , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20+                       ]+                   }+                 "ComposeT")+          ]+      , GDataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 128 1 130 49+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 128 18 128 20+                , SrcSpan "tests/examples/DerivingVia.hs" 128 48 128 53+                , SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 3+                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3+                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3+                ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 8+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17+                  , srcInfoPoints = []+                  }+                "ComposeT"))+          (Just+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 47+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 128 28 128 30 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27+                           , srcInfoPoints = []+                           }+                         "MTrans")))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 47+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 128 38 128 40 ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37+                              , srcInfoPoints = []+                              }+                            "MTrans")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47+                              , srcInfoPoints = []+                              }+                            "MTrans"))))))+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 63+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 12 129 14+                    , SrcSpan "tests/examples/DerivingVia.hs" 129 15 129 16+                    , SrcSpan "tests/examples/DerivingVia.hs" 129 42 129 43+                    , SrcSpan "tests/examples/DerivingVia.hs" 129 44 129 46+                    ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 11+                   , srcInfoPoints = []+                   }+                 "ComposeT")+              Nothing+              Nothing+              (Just+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 41+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 129 29 129 31 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 28+                           , srcInfoPoints = []+                           }+                         "getComposeT"+                     ]+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 41+                          , srcInfoPoints = []+                          }+                        (TyApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 39+                             , srcInfoPoints = []+                             }+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33+                                   , srcInfoPoints = []+                                   }+                                 "f"))+                           (TyParen+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 39+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 35+                                    , SrcSpan "tests/examples/DerivingVia.hs" 129 38 129 39+                                    ]+                                }+                              (TyApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 38+                                   , srcInfoPoints = []+                                   }+                                 (TyVar+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36+                                         , srcInfoPoints = []+                                         }+                                       "g"))+                                 (TyVar+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38+                                         , srcInfoPoints = []+                                         }+                                       "m")))))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 63+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 61+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 59+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 57+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55+                                     , srcInfoPoints = []+                                     }+                                   "ComposeT")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57+                                  , srcInfoPoints = []+                                  }+                                "f")))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59+                               , srcInfoPoints = []+                               }+                             "g")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61+                            , srcInfoPoints = []+                            }+                          "m")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63+                         , srcInfoPoints = []+                         }+                       "a")))+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 49+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 20 130 21+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 28 130 29+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 41 130 42+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 48 130 49+                    ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 130 12 130 19+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28+                             , srcInfoPoints = []+                             }+                           "Functor")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41+                             , srcInfoPoints = []+                             }+                           "Applicative")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48+                             , srcInfoPoints = []+                             }+                           "Monad")))+              ]+          ]+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 132 1 137 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 9+                , SrcSpan "tests/examples/DerivingVia.hs" 132 84 132 89+                , SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 3+                , SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 3+                , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 83+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 57+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 23 132 24+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 37 132 38+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 53 132 54+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 55 132 57+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21+                                     , srcInfoPoints = []+                                     }+                                   "MonadTrans")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23+                                  , srcInfoPoints = []+                                  }+                                "f")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35+                                     , srcInfoPoints = []+                                     }+                                   "MonadTrans")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37+                                  , srcInfoPoints = []+                                  }+                                "g")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51+                                     , srcInfoPoints = []+                                     }+                                   "LiftingMonad")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53+                                  , srcInfoPoints = []+                                  }+                                "g")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 83+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68+                           , srcInfoPoints = []+                           }+                         "MonadTrans")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 83+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 70+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 82 132 83+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 82+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 80+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78+                                    , srcInfoPoints = []+                                    }+                                  "ComposeT")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80+                                 , srcInfoPoints = []+                                 }+                               "f")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82+                              , srcInfoPoints = []+                              }+                            "g"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 7+                          , srcInfoPoints = []+                          }+                        "lift"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 51+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 17+                             , SrcSpan "tests/examples/DerivingVia.hs" 133 19 133 20+                             ]+                         }+                       (Just+                          [ UnkindedVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19+                                   , srcInfoPoints = []+                                   }+                                 "m")+                          ])+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 26+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 133 21 133 26+                                              , srcInfoPoints = []+                                              }+                                            "Monad")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28+                                           , srcInfoPoints = []+                                           }+                                         "m"))))))+                       (TyInfix+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 51+                            , srcInfoPoints = []+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33+                                  , srcInfoPoints = []+                                  }+                                "m"))+                          (UnpromotedName+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36+                                     , srcInfoPoints = []+                                     }+                                   "~>")))+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 51+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 49+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 47+                                     , srcInfoPoints = []+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 133 37 133 45+                                              , srcInfoPoints = []+                                              }+                                            "ComposeT")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47+                                           , srcInfoPoints = []+                                           }+                                         "f")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49+                                        , srcInfoPoints = []+                                        }+                                      "g")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51+                                     , srcInfoPoints = []+                                     }+                                   "m"))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7+                            , srcInfoPoints = []+                            }+                          "lift"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 134 8 135 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 134 8 134 9 ]+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 134 10 135 19+                            , srcInfoPoints = []+                            }+                          (InfixApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 32+                               , srcInfoPoints = []+                               }+                             (Con+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18+                                        , srcInfoPoints = []+                                        }+                                      "ComposeT")))+                             (QVarOp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20+                                     , srcInfoPoints = []+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20+                                        , srcInfoPoints = []+                                        }+                                      ".")))+                             (InfixApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 32+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25+                                           , srcInfoPoints = []+                                           }+                                         "lift")))+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27+                                           , srcInfoPoints = []+                                           }+                                         ".")))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32+                                           , srcInfoPoints = []+                                           }+                                         "lift")))))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7+                                     , srcInfoPoints = []+                                     }+                                   "\\\\")))+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 19+                               , srcInfoPoints = []+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 16+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13+                                           , srcInfoPoints = []+                                           }+                                         "proof")))+                                (TypeApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 16+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 15 ]+                                     }+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16+                                           , srcInfoPoints = []+                                           }+                                         "g"))))+                             (TypeApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 19+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 18 ]+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19+                                        , srcInfoPoints = []+                                        }+                                      "m"))))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 137 1 146 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 9+                , SrcSpan "tests/examples/DerivingVia.hs" 137 78 137 83+                , SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 3+                , SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 3+                , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 77+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 53+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 21 137 22+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 33 137 34+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 49 137 50+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 51 137 53+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19+                                     , srcInfoPoints = []+                                     }+                                   "MFunctor")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21+                                  , srcInfoPoints = []+                                  }+                                "f")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31+                                     , srcInfoPoints = []+                                     }+                                   "MFunctor")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33+                                  , srcInfoPoints = []+                                  }+                                "g")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47+                                     , srcInfoPoints = []+                                     }+                                   "LiftingMonad")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49+                                  , srcInfoPoints = []+                                  }+                                "g")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 77+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62+                           , srcInfoPoints = []+                           }+                         "MFunctor")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 77+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 64+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 76 137 77+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 76+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 74+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72+                                    , srcInfoPoints = []+                                    }+                                  "ComposeT")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74+                                 , srcInfoPoints = []+                                 }+                               "f")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76+                              , srcInfoPoints = []+                              }+                            "g"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 8+                          , srcInfoPoints = []+                          }+                        "hoist"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 84+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 18+                             , SrcSpan "tests/examples/DerivingVia.hs" 138 23 138 24+                             ]+                         }+                       (Just+                          [ UnkindedVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20+                                   , srcInfoPoints = []+                                   }+                                 "m")+                          , UnkindedVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23+                                   , srcInfoPoints = []+                                   }+                                 "m'")+                          ])+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 30+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 138 25 138 30+                                              , srcInfoPoints = []+                                              }+                                            "Monad")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32+                                           , srcInfoPoints = []+                                           }+                                         "m"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 84+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 138 46 138 48 ]+                            }+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 45+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 37+                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 44 138 45+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 44+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38+                                        , srcInfoPoints = []+                                        }+                                      "m"))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44+                                        , srcInfoPoints = []+                                        }+                                      "m'"))))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 84+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 50+                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 83 138 84+                                   ]+                               }+                             (TyInfix+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 83+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 64+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 62+                                        , srcInfoPoints = []+                                        }+                                      (TyApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 60+                                           , srcInfoPoints = []+                                           }+                                         (TyCon+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 138 50 138 58+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 138 50 138 58+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          138+                                                          50+                                                          138+                                                          58+                                                    , srcInfoPoints = []+                                                    }+                                                  "ComposeT")))+                                         (TyVar+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 138 59 138 60+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 138 59 138 60+                                                 , srcInfoPoints = []+                                                 }+                                               "f")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 61 138 62+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 138 61 138 62+                                              , srcInfoPoints = []+                                              }+                                            "g")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64+                                           , srcInfoPoints = []+                                           }+                                         "m")))+                                (UnpromotedName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67+                                           , srcInfoPoints = []+                                           }+                                         "~>")))+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 83+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 80+                                        , srcInfoPoints = []+                                        }+                                      (TyApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 78+                                           , srcInfoPoints = []+                                           }+                                         (TyCon+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 138 68 138 76+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 138 68 138 76+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          138+                                                          68+                                                          138+                                                          76+                                                    , srcInfoPoints = []+                                                    }+                                                  "ComposeT")))+                                         (TyVar+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 138 77 138 78+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 138 77 138 78+                                                 , srcInfoPoints = []+                                                 }+                                               "f")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 79 138 80+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 138 79 138 80+                                              , srcInfoPoints = []+                                              }+                                            "g")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83+                                           , srcInfoPoints = []+                                           }+                                         "m'"))))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 8+                             , srcInfoPoints = []+                             }+                           "hoist")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10+                                 , srcInfoPoints = []+                                 }+                               "f")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 139 11 140 19+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 139 11 139 12 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 139 13 140 19+                                , srcInfoPoints = []+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 53+                                   , srcInfoPoints = []+                                   }+                                 (Con+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 139 13 139 21+                                            , srcInfoPoints = []+                                            }+                                          "ComposeT")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 139 22 139 23+                                            , srcInfoPoints = []+                                            }+                                          ".")))+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 53+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 39+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 139 24 139 29+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 139 24 139 29+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        139+                                                        24+                                                        139+                                                        29+                                                  , srcInfoPoints = []+                                                  }+                                                "hoist")))+                                       (Paren+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 139 30 139 39+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/DerivingVia.hs" 139 30 139 31+                                                , SrcSpan+                                                    "tests/examples/DerivingVia.hs" 139 38 139 39+                                                ]+                                            }+                                          (App+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 139 31 139 38+                                               , srcInfoPoints = []+                                               }+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        139+                                                        31+                                                        139+                                                        36+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           139+                                                           31+                                                           139+                                                           36+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/DerivingVia.hs"+                                                              139+                                                              31+                                                              139+                                                              36+                                                        , srcInfoPoints = []+                                                        }+                                                      "hoist")))+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        139+                                                        37+                                                        139+                                                        38+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           139+                                                           37+                                                           139+                                                           38+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/DerivingVia.hs"+                                                              139+                                                              37+                                                              139+                                                              38+                                                        , srcInfoPoints = []+                                                        }+                                                      "f"))))))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 40 139 41+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 139 40 139 41+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 139 40 139 41+                                               , srcInfoPoints = []+                                               }+                                             ".")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 42 139 53+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 139 42 139 53+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 139 42 139 53+                                               , srcInfoPoints = []+                                               }+                                             "getComposeT")))))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7+                                         , srcInfoPoints = []+                                         }+                                       "\\\\")))+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 19+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 16+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 140 8 140 13+                                               , srcInfoPoints = []+                                               }+                                             "proof")))+                                    (TypeApp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 16+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 15+                                             ]+                                         }+                                       (TyVar+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 140 15 140 16+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 140 15 140 16+                                               , srcInfoPoints = []+                                               }+                                             "g"))))+                                 (TypeApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 19+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 18 ]+                                      }+                                    (TyVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 18 140 19+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 140 18 140 19+                                            , srcInfoPoints = []+                                            }+                                          "m"))))))+                        Nothing+                    ])+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 146 1 150 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 146 13 146 14 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 12+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10+                     , srcInfoPoints = []+                     }+                   "X"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 16+                      , srcInfoPoints = []+                      }+                    "X")+                 [ TyTuple+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 23+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 18+                           , SrcSpan "tests/examples/DerivingVia.hs" 146 19 146 20+                           , SrcSpan "tests/examples/DerivingVia.hs" 146 22 146 23+                           ]+                       }+                     Boxed+                     [ TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19+                              , srcInfoPoints = []+                              }+                            "a")+                     , TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22+                              , srcInfoPoints = []+                              }+                            "a")+                     ]+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 31+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 147 12 147 13+                    , SrcSpan "tests/examples/DerivingVia.hs" 147 22 147 23+                    , SrcSpan "tests/examples/DerivingVia.hs" 147 30 147 31+                    ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 148 8 148 11+                      , srcInfoPoints = []+                      }+                    (TyTuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 30+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 13+                             , SrcSpan "tests/examples/DerivingVia.hs" 148 22 148 23+                             , SrcSpan "tests/examples/DerivingVia.hs" 148 29 148 30+                             ]+                         }+                       Boxed+                       [ TyApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 22+                             , srcInfoPoints = []+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20+                                      , srcInfoPoints = []+                                      }+                                    "Product")))+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22+                                   , srcInfoPoints = []+                                   }+                                 "a"))+                       , TyApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 29+                             , srcInfoPoints = []+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27+                                      , srcInfoPoints = []+                                      }+                                    "Sum")))+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29+                                   , srcInfoPoints = []+                                   }+                                 "a"))+                       ])))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22+                             , srcInfoPoints = []+                             }+                           "Semigroup")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30+                             , srcInfoPoints = []+                             }+                           "Monoid")))+              ]+          , Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 22+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 150 12 150 13+                    , SrcSpan "tests/examples/DerivingVia.hs" 150 17 150 18+                    , SrcSpan "tests/examples/DerivingVia.hs" 150 21 150 22+                    ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 151 8 151 11+                      , srcInfoPoints = []+                      }+                    (TyTuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 13+                             , SrcSpan "tests/examples/DerivingVia.hs" 151 14 151 15+                             , SrcSpan "tests/examples/DerivingVia.hs" 151 17 151 18+                             ]+                         }+                       Boxed+                       [ TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14+                                , srcInfoPoints = []+                                }+                              "a")+                       , TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17+                                , srcInfoPoints = []+                                }+                              "a")+                       ])))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17+                             , srcInfoPoints = []+                             }+                           "Show")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21+                             , srcInfoPoints = []+                             }+                           "Eq")))+              ]+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 157 1 158 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 6+                , SrcSpan "tests/examples/DerivingVia.hs" 157 11 157 16+                , SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 3+                , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8+                     , srcInfoPoints = []+                     }+                   "C"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10+                     , srcInfoPoints = []+                     }+                   "f")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 4+                          , srcInfoPoints = []+                          }+                        "c"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 158 12 158 14 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 11+                            , srcInfoPoints = []+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9+                                  , srcInfoPoints = []+                                  }+                                "f"))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11+                                  , srcInfoPoints = []+                                  }+                                "a")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18+                                  , srcInfoPoints = []+                                  }+                                "Int")))))+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 160 16 160 17 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 15+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 13+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11+                        , srcInfoPoints = []+                        }+                      "X2"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13+                        , srcInfoPoints = []+                        }+                      "f")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 20+                      , srcInfoPoints = []+                      }+                    "X2")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 26+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 22+                           , SrcSpan "tests/examples/DerivingVia.hs" 160 25 160 26+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 25+                          , srcInfoPoints = []+                          }+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23+                                , srcInfoPoints = []+                                }+                              "f"))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          []+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 162 1 165 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 9+                , SrcSpan "tests/examples/DerivingVia.hs" 162 19 162 24+                , SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 3+                , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11+                           , srcInfoPoints = []+                           }+                         "C")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 13+                         , SrcSpan "tests/examples/DerivingVia.hs" 162 17 162 18+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 17+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15+                                 , srcInfoPoints = []+                                 }+                               "X2")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17+                              , srcInfoPoints = []+                              }+                            "f"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4+                            , srcInfoPoints = []+                            }+                          "c"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 14+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 6 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 14+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12+                                     , srcInfoPoints = []+                                     }+                                   "const")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14+                               , srcInfoPoints = []+                               }+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14+                                  , srcInfoPoints = []+                                  }+                                0+                                "0"))))+                    Nothing)+             ])+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 9+                , SrcSpan "tests/examples/DerivingVia.hs" 165 22 165 30+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 165 10 165 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 165 20 165 21+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 20+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17+                                 , srcInfoPoints = []+                                 }+                               "X2")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20+                                 , srcInfoPoints = []+                                 }+                               "IO")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32+                           , srcInfoPoints = []+                           }+                         "C")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35+                           , srcInfoPoints = []+                           }+                         "IO")))))+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 171 14 171 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11+                     , srcInfoPoints = []+                     }+                   "P0"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 18+                      , srcInfoPoints = []+                      }+                    "P0")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 46+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 41 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 171 47 171 50+                      , srcInfoPoints = []+                      }+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52+                            , srcInfoPoints = []+                            }+                          "a"))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 172 14 172 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11+                     , srcInfoPoints = []+                     }+                   "P1"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 18+                      , srcInfoPoints = []+                      }+                    "P1")+                 [ TyList+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 22+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 20+                           , SrcSpan "tests/examples/DerivingVia.hs" 172 21 172 22+                           ]+                       }+                     (TyVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21+                             , srcInfoPoints = []+                             }+                           "a"))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 46+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 41 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 172 47 172 50+                      , srcInfoPoints = []+                      }+                    (TyList+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 54+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 52+                             , SrcSpan "tests/examples/DerivingVia.hs" 172 53 172 54+                             ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53+                               , srcInfoPoints = []+                               }+                             "a")))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 173 14 173 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11+                     , srcInfoPoints = []+                     }+                   "P2"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 18+                      , srcInfoPoints = []+                      }+                    "P2")+                 [ TyTuple+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 25+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 20+                           , SrcSpan "tests/examples/DerivingVia.hs" 173 21 173 22+                           , SrcSpan "tests/examples/DerivingVia.hs" 173 24 173 25+                           ]+                       }+                     Boxed+                     [ TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21+                              , srcInfoPoints = []+                              }+                            "a")+                     , TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24+                              , srcInfoPoints = []+                              }+                            "a")+                     ]+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 46+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 41 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 173 47 173 50+                      , srcInfoPoints = []+                      }+                    (TyTuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 57+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 52+                             , SrcSpan "tests/examples/DerivingVia.hs" 173 53 173 54+                             , SrcSpan "tests/examples/DerivingVia.hs" 173 56 173 57+                             ]+                         }+                       Boxed+                       [ TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53+                                , srcInfoPoints = []+                                }+                              "a")+                       , TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56+                                , srcInfoPoints = []+                                }+                              "a")+                       ])))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 174 14 174 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11+                     , srcInfoPoints = []+                     }+                   "P3"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 18+                      , srcInfoPoints = []+                      }+                    "P3")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 28+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 20+                           , SrcSpan "tests/examples/DerivingVia.hs" 174 27 174 28+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 27+                          , srcInfoPoints = []+                          }+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25+                                   , srcInfoPoints = []+                                   }+                                 "Maybe")))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 46+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 41 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 174 47 174 50+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 60+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 52+                             , SrcSpan "tests/examples/DerivingVia.hs" 174 59 174 60+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 59+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57+                                     , srcInfoPoints = []+                                     }+                                   "First")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59+                                  , srcInfoPoints = []+                                  }+                                "a"))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 175 14 175 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11+                     , srcInfoPoints = []+                     }+                   "P4"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 18+                      , srcInfoPoints = []+                      }+                    "P4")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 28+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 20+                           , SrcSpan "tests/examples/DerivingVia.hs" 175 27 175 28+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 27+                          , srcInfoPoints = []+                          }+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25+                                   , srcInfoPoints = []+                                   }+                                 "Maybe")))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 46+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 41 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 175 47 175 50+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 62+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 52+                             , SrcSpan "tests/examples/DerivingVia.hs" 175 61 175 62+                             ]+                         }+                       (TyInfix+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 61+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57+                                     , srcInfoPoints = []+                                     }+                                   "First")))+                          (UnpromotedName+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59+                                     , srcInfoPoints = []+                                     }+                                   "$")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61+                                  , srcInfoPoints = []+                                  }+                                "a"))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 176 14 176 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11+                     , srcInfoPoints = []+                     }+                   "P5"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 18+                      , srcInfoPoints = []+                      }+                    "P5")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 46+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 41 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 176 47 176 50+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 65+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 52+                             , SrcSpan "tests/examples/DerivingVia.hs" 176 64 176 65+                             ]+                         }+                       (TyInfix+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 64+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60+                                     , srcInfoPoints = []+                                     }+                                   "Identity")))+                          (UnpromotedName+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62+                                     , srcInfoPoints = []+                                     }+                                   "$")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64+                                  , srcInfoPoints = []+                                  }+                                "a"))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 177 14 177 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11+                     , srcInfoPoints = []+                     }+                   "P6"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 18+                      , srcInfoPoints = []+                      }+                    "P6")+                 [ TyList+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 22+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 20+                           , SrcSpan "tests/examples/DerivingVia.hs" 177 21 177 22+                           ]+                       }+                     (TyVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21+                             , srcInfoPoints = []+                             }+                           "a"))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 46+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 41 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 177 47 177 50+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 59+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 52+                             , SrcSpan "tests/examples/DerivingVia.hs" 177 58 177 59+                             ]+                         }+                       (TyInfix+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 58+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53+                                   , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54+                                   ]+                               }+                             (Special+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53+                                      , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54+                                      ]+                                  }+                                (ListCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53+                                         , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54+                                         ]+                                     })))+                          (UnpromotedName+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56+                                     , srcInfoPoints = []+                                     }+                                   "$")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58+                                  , srcInfoPoints = []+                                  }+                                "a"))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 178 14 178 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11+                     , srcInfoPoints = []+                     }+                   "P7"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 18+                      , srcInfoPoints = []+                      }+                    "P7")+                 [ TyTuple+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 25+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 20+                           , SrcSpan "tests/examples/DerivingVia.hs" 178 21 178 22+                           , SrcSpan "tests/examples/DerivingVia.hs" 178 24 178 25+                           ]+                       }+                     Boxed+                     [ TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21+                              , srcInfoPoints = []+                              }+                            "a")+                     , TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24+                              , srcInfoPoints = []+                              }+                            "a")+                     ]+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 46+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 41 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 178 47 178 50+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 70+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 52+                             , SrcSpan "tests/examples/DerivingVia.hs" 178 69 178 70+                             ]+                         }+                       (TyInfix+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 69+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60+                                     , srcInfoPoints = []+                                     }+                                   "Identity")))+                          (UnpromotedName+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62+                                     , srcInfoPoints = []+                                     }+                                   "$")))+                          (TyTuple+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 69+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 64+                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 65 178 66+                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 68 178 69+                                   ]+                               }+                             Boxed+                             [ TyVar+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65+                                      , srcInfoPoints = []+                                      }+                                    "a")+                             , TyVar+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68+                                      , srcInfoPoints = []+                                      }+                                    "a")+                             ])))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 49+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 179 14 179 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11+                     , srcInfoPoints = []+                     }+                   "P8"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 18+                      , srcInfoPoints = []+                      }+                    "P8")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 32+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 20+                           , SrcSpan "tests/examples/DerivingVia.hs" 179 31 179 32+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 31+                          , srcInfoPoints = []+                          }+                        (TyApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 29+                             , srcInfoPoints = []+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26+                                      , srcInfoPoints = []+                                      }+                                    "Either")))+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28+                                    , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29+                                    ]+                                }+                              (Special+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28+                                       , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29+                                       ]+                                   }+                                 (UnitCon+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28+                                          , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29+                                          ]+                                      }))))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 49+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 41 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 179 50 179 53+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 71+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 55+                             , SrcSpan "tests/examples/DerivingVia.hs" 179 70 179 71+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 70+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56+                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57+                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56+                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57+                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57+                                     , srcInfoPoints = []+                                     }+                                   "$")))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 70+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 60+                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 69 179 70+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 69+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66+                                           , srcInfoPoints = []+                                           }+                                         "Either")))+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68+                                         , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69+                                         ]+                                     }+                                   (Special+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68+                                            , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69+                                            ]+                                        }+                                      (UnitCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69+                                           , srcInfoPoints =+                                               [ SrcSpan+                                                   "tests/examples/DerivingVia.hs" 179 67 179 68+                                               , SrcSpan+                                                   "tests/examples/DerivingVia.hs" 179 68 179 69+                                               ]+                                           })))))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49+                             , srcInfoPoints = []+                             }+                           "Functor")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 73+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 181 15 181 16 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14+               , srcInfoPoints = []+               }+             (DHInfix+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14+                  , srcInfoPoints = []+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10+                        , srcInfoPoints = []+                        }+                      "f"))+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 181 11 181 12+                     , srcInfoPoints = []+                     }+                   "$"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 20+                      , srcInfoPoints = []+                      }+                    "APP")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 26+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 22+                           , SrcSpan "tests/examples/DerivingVia.hs" 181 25 181 26+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 25+                          , srcInfoPoints = []+                          }+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23+                                , srcInfoPoints = []+                                }+                              "f"))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 48+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 35 ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 181 36 181 43+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          , Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 73+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 57 ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 181 58 181 65+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73+                             , srcInfoPoints = []+                             }+                           "Functor")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 190 1 191 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 190 29 190 30 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 28+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 26+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24+                        , srcInfoPoints = []+                        }+                      "WrapApplicative"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26+                        , srcInfoPoints = []+                        }+                      "f")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 49+                      , srcInfoPoints = []+                      }+                    "WrappedApplicative")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 55+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 51+                           , SrcSpan "tests/examples/DerivingVia.hs" 190 54 190 55+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 54+                          , srcInfoPoints = []+                          }+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52+                                , srcInfoPoints = []+                                }+                              "f"))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 34+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 191 12 191 13+                    , SrcSpan "tests/examples/DerivingVia.hs" 191 20 191 21+                    , SrcSpan "tests/examples/DerivingVia.hs" 191 33 191 34+                    ]+                }+              Nothing+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20+                             , srcInfoPoints = []+                             }+                           "Functor")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33+                             , srcInfoPoints = []+                             }+                           "Applicative")))+              ]+          ]+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 193 1 201 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 9+                , SrcSpan "tests/examples/DerivingVia.hs" 193 62 193 67+                , SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 3+                , SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 3+                , SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 3+                , SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 3+                , SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 3+                , SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 3+                , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 61+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 35+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 24 193 25+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 31 193 32+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 33 193 35+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22+                                     , srcInfoPoints = []+                                     }+                                   "Applicative")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24+                                  , srcInfoPoints = []+                                  }+                                "f")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29+                                     , srcInfoPoints = []+                                     }+                                   "Num")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 61+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39+                           , srcInfoPoints = []+                           }+                         "Num")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 61+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 41+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 60 193 61+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 60+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 58+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56+                                    , srcInfoPoints = []+                                    }+                                  "WrapApplicative")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58+                                 , srcInfoPoints = []+                                 }+                               "f")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 6+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5+                             , SrcSpan "tests/examples/DerivingVia.hs" 194 5 194 6+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5+                            , srcInfoPoints = []+                            }+                          "+"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 16 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 27+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23+                                     , srcInfoPoints = []+                                     }+                                   "liftA2")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25+                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26+                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25+                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26+                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26+                                     , srcInfoPoints = []+                                     }+                                   "+")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 6+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5+                             , SrcSpan "tests/examples/DerivingVia.hs" 195 5 195 6+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5+                            , srcInfoPoints = []+                            }+                          "*"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 16 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 27+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23+                                     , srcInfoPoints = []+                                     }+                                   "liftA2")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25+                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26+                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25+                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26+                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26+                                     , srcInfoPoints = []+                                     }+                                   "*")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9+                            , srcInfoPoints = []+                            }+                          "negate"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 16 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 28+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28+                                     , srcInfoPoints = []+                                     }+                                   "negate")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14+                            , srcInfoPoints = []+                            }+                          "fromInteger"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 35+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 16 ]+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 35+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21+                                     , srcInfoPoints = []+                                     }+                                   "pure")))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23+                                     , srcInfoPoints = []+                                     }+                                   ".")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35+                                     , srcInfoPoints = []+                                     }+                                   "fromInteger")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6+                            , srcInfoPoints = []+                            }+                          "abs"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 25+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 16 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 25+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25+                                     , srcInfoPoints = []+                                     }+                                   "abs")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9+                            , srcInfoPoints = []+                            }+                          "signum"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 16 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 28+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28+                                     , srcInfoPoints = []+                                     }+                                   "signum")))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 201 1 205 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 9+                , SrcSpan "tests/examples/DerivingVia.hs" 201 76 201 81+                , SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 3+                , SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 3+                , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 75+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 42+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 24 201 25+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 38 201 39+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 40 201 42+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22+                                     , srcInfoPoints = []+                                     }+                                   "Applicative")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24+                                  , srcInfoPoints = []+                                  }+                                "f")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36+                                     , srcInfoPoints = []+                                     }+                                   "Fractional")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 75+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53+                           , srcInfoPoints = []+                           }+                         "Fractional")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 75+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 55+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 74 201 75+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 74+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 72+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70+                                    , srcInfoPoints = []+                                    }+                                  "WrapApplicative")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72+                                 , srcInfoPoints = []+                                 }+                               "f")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8+                            , srcInfoPoints = []+                            }+                          "recip"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 17 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 28+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28+                                     , srcInfoPoints = []+                                     }+                                   "recip")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15+                            , srcInfoPoints = []+                            }+                          "fromRational"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 37+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 17 ]+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 37+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22+                                     , srcInfoPoints = []+                                     }+                                   "pure")))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24+                                     , srcInfoPoints = []+                                     }+                                   ".")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37+                                     , srcInfoPoints = []+                                     }+                                   "fromRational")))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 205 1 221 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 9+                , SrcSpan "tests/examples/DerivingVia.hs" 205 72 205 77+                , SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 3+                , SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 3+                , SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 3+                , SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 3+                , SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 3+                , SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 3+                , SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 3+                , SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 3+                , SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 3+                , SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 3+                , SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 3+                , SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 3+                , SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 3+                , SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 3+                , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 71+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 24 205 25+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 36 205 37+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 38 205 40+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22+                                     , srcInfoPoints = []+                                     }+                                   "Applicative")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24+                                  , srcInfoPoints = []+                                  }+                                "f")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34+                                     , srcInfoPoints = []+                                     }+                                   "Floating")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 71+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49+                           , srcInfoPoints = []+                           }+                         "Floating")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 71+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 51+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 70 205 71+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 70+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 68+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66+                                    , srcInfoPoints = []+                                    }+                                  "WrapApplicative")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68+                                 , srcInfoPoints = []+                                 }+                               "f")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5+                            , srcInfoPoints = []+                            }+                          "pi"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 18+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15+                                     , srcInfoPoints = []+                                     }+                                   "pure")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18+                                     , srcInfoPoints = []+                                     }+                                   "pi")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7+                            , srcInfoPoints = []+                            }+                          "sqrt"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 20+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20+                                     , srcInfoPoints = []+                                     }+                                   "sqrt")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6+                            , srcInfoPoints = []+                            }+                          "exp"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 19+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19+                                     , srcInfoPoints = []+                                     }+                                   "exp")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6+                            , srcInfoPoints = []+                            }+                          "log"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 19+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19+                                     , srcInfoPoints = []+                                     }+                                   "log")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6+                            , srcInfoPoints = []+                            }+                          "sin"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 19+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19+                                     , srcInfoPoints = []+                                     }+                                   "sin")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6+                            , srcInfoPoints = []+                            }+                          "cos"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 19+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19+                                     , srcInfoPoints = []+                                     }+                                   "cos")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7+                            , srcInfoPoints = []+                            }+                          "asin"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 20+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20+                                     , srcInfoPoints = []+                                     }+                                   "asin")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7+                            , srcInfoPoints = []+                            }+                          "atan"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 20+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20+                                     , srcInfoPoints = []+                                     }+                                   "atan")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7+                            , srcInfoPoints = []+                            }+                          "acos"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 20+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20+                                     , srcInfoPoints = []+                                     }+                                   "acos")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7+                            , srcInfoPoints = []+                            }+                          "sinh"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 20+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20+                                     , srcInfoPoints = []+                                     }+                                   "sinh")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7+                            , srcInfoPoints = []+                            }+                          "cosh"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 20+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20+                                     , srcInfoPoints = []+                                     }+                                   "cosh")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8+                            , srcInfoPoints = []+                            }+                          "asinh"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 21+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21+                                     , srcInfoPoints = []+                                     }+                                   "asinh")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8+                            , srcInfoPoints = []+                            }+                          "atanh"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 21+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21+                                     , srcInfoPoints = []+                                     }+                                   "atanh")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8+                            , srcInfoPoints = []+                            }+                          "acosh"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 21+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15+                                     , srcInfoPoints = []+                                     }+                                   "fmap")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21+                                     , srcInfoPoints = []+                                     }+                                   "acosh")))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 221 1 224 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 9+                , SrcSpan "tests/examples/DerivingVia.hs" 221 74 221 79+                , SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 3+                , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 73+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 41+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 24 221 25+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 37 221 38+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 39 221 41+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22+                                     , srcInfoPoints = []+                                     }+                                   "Applicative")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24+                                  , srcInfoPoints = []+                                  }+                                "f")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35+                                     , srcInfoPoints = []+                                     }+                                   "Semigroup")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37+                                  , srcInfoPoints = []+                                  }+                                "s")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 73+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51+                           , srcInfoPoints = []+                           }+                         "Semigroup")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 73+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 53+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 72 221 73+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 72+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 70+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68+                                    , srcInfoPoints = []+                                    }+                                  "WrapApplicative")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70+                                 , srcInfoPoints = []+                                 }+                               "f")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72+                              , srcInfoPoints = []+                              }+                            "s"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 7+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6+                             , SrcSpan "tests/examples/DerivingVia.hs" 222 6 222 7+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6+                            , srcInfoPoints = []+                            }+                          "<>"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 9 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 21+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16+                                     , srcInfoPoints = []+                                     }+                                   "liftA2")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18+                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20+                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18+                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20+                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20+                                     , srcInfoPoints = []+                                     }+                                   "<>")))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 224 1 230 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 9+                , SrcSpan "tests/examples/DerivingVia.hs" 224 68 224 73+                , SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 3+                , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 67+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 38+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 24 224 25+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 34 224 35+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 36 224 38+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22+                                     , srcInfoPoints = []+                                     }+                                   "Applicative")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24+                                  , srcInfoPoints = []+                                  }+                                "f")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32+                                     , srcInfoPoints = []+                                     }+                                   "Monoid")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34+                                  , srcInfoPoints = []+                                  }+                                "m")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 67+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45+                           , srcInfoPoints = []+                           }+                         "Monoid")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 67+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 47+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 66 224 67+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 66+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 64+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62+                                    , srcInfoPoints = []+                                    }+                                  "WrapApplicative")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64+                                 , srcInfoPoints = []+                                 }+                               "f")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66+                              , srcInfoPoints = []+                              }+                            "m"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9+                            , srcInfoPoints = []+                            }+                          "mempty"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 23+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 11 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 23+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16+                                     , srcInfoPoints = []+                                     }+                                   "pure")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23+                                     , srcInfoPoints = []+                                     }+                                   "mempty")))))+                    Nothing)+             ])+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 230 1 231 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 6+                , SrcSpan "tests/examples/DerivingVia.hs" 230 17 230 22+                , SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 3+                , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 16+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14+                     , srcInfoPoints = []+                     }+                   "Pointed"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16+                     , srcInfoPoints = []+                     }+                   "p")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 10+                          , srcInfoPoints = []+                          }+                        "pointed"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 22+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 231 16 231 18 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 22+                            , srcInfoPoints = []+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20+                                  , srcInfoPoints = []+                                  }+                                "p"))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22+                                  , srcInfoPoints = []+                                  }+                                "a")))))+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 233 1 234 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 233 23 233 24 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 22+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 20+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18+                        , srcInfoPoints = []+                        }+                      "WrapMonad"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20+                        , srcInfoPoints = []+                        }+                      "f")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 37+                      , srcInfoPoints = []+                      }+                    "WrappedMonad")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 43+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 39+                           , SrcSpan "tests/examples/DerivingVia.hs" 233 42 233 43+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 42+                          , srcInfoPoints = []+                          }+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40+                                , srcInfoPoints = []+                                }+                              "f"))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 36+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 234 20 234 21+                    , SrcSpan "tests/examples/DerivingVia.hs" 234 28 234 29+                    , SrcSpan "tests/examples/DerivingVia.hs" 234 35 234 36+                    ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 234 12 234 19+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28+                             , srcInfoPoints = []+                             }+                           "Pointed")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35+                             , srcInfoPoints = []+                             }+                           "Monad")))+              ]+          ]+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 236 1 239 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 9+                , SrcSpan "tests/examples/DerivingVia.hs" 236 56 236 61+                , SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 3+                , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 55+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 33+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 18 236 19+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 29 236 30+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 31 236 33+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16+                                     , srcInfoPoints = []+                                     }+                                   "Monad")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18+                                  , srcInfoPoints = []+                                  }+                                "m")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27+                                     , srcInfoPoints = []+                                     }+                                   "Pointed")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29+                                  , srcInfoPoints = []+                                  }+                                "m")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 55+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41+                           , srcInfoPoints = []+                           }+                         "Functor")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 55+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 43+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 54 236 55+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 54+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52+                                 , srcInfoPoints = []+                                 }+                               "WrapMonad")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54+                              , srcInfoPoints = []+                              }+                            "m"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7+                            , srcInfoPoints = []+                            }+                          "fmap"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 15+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 9 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15+                                  , srcInfoPoints = []+                                  }+                                "liftM"))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 239 1 244 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 9+                , SrcSpan "tests/examples/DerivingVia.hs" 239 60 239 65+                , SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 3+                , SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 3+                , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 59+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 33+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 18 239 19+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 29 239 30+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 31 239 33+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16+                                     , srcInfoPoints = []+                                     }+                                   "Monad")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18+                                  , srcInfoPoints = []+                                  }+                                "m")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27+                                     , srcInfoPoints = []+                                     }+                                   "Pointed")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29+                                  , srcInfoPoints = []+                                  }+                                "m")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 59+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45+                           , srcInfoPoints = []+                           }+                         "Applicative")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 59+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 47+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 58 239 59+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 58+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56+                                 , srcInfoPoints = []+                                 }+                               "WrapMonad")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58+                              , srcInfoPoints = []+                              }+                            "m"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7+                            , srcInfoPoints = []+                            }+                          "pure"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 10 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18+                                  , srcInfoPoints = []+                                  }+                                "pointed"))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 8+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7+                             , SrcSpan "tests/examples/DerivingVia.hs" 241 7 241 8+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7+                            , srcInfoPoints = []+                            }+                          "<*>"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 13+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 10 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13+                                  , srcInfoPoints = []+                                  }+                                "ap"))))+                    Nothing)+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 244 1 247 58+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 244 15 244 16 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 14+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12+                     , srcInfoPoints = []+                     }+                   "Sorted"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 23+                      , srcInfoPoints = []+                      }+                    "Sorted")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25+                          , srcInfoPoints = []+                          }+                        "a")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27+                          , srcInfoPoints = []+                          }+                        "a")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 34+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 245 12 245 13+                    , SrcSpan "tests/examples/DerivingVia.hs" 245 20 245 21+                    , SrcSpan "tests/examples/DerivingVia.hs" 245 33 245 34+                    ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 246 5 246 8+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 10+                             , SrcSpan "tests/examples/DerivingVia.hs" 246 26 246 27+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 26+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19+                                     , srcInfoPoints = []+                                     }+                                   "WrapMonad")))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26+                                     , srcInfoPoints = []+                                     }+                                   "Sorted")))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20+                             , srcInfoPoints = []+                             }+                           "Functor")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33+                             , srcInfoPoints = []+                             }+                           "Applicative")))+              ]+          , Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 58+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 12 247 13+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 16 247 17+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 28 247 29+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 38 247 39+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 49 247 50+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 57 247 58+                    ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 248 5 248 8+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 35+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 10+                             , SrcSpan "tests/examples/DerivingVia.hs" 248 34 248 35+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 34+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 32+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25+                                        , srcInfoPoints = []+                                        }+                                      "WrapApplicative")))+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32+                                        , srcInfoPoints = []+                                        }+                                      "Sorted"))))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34+                                  , srcInfoPoints = []+                                  }+                                "a"))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16+                             , srcInfoPoints = []+                             }+                           "Num")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28+                             , srcInfoPoints = []+                             }+                           "Fractional")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38+                             , srcInfoPoints = []+                             }+                           "Floating")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49+                             , srcInfoPoints = []+                             }+                           "Semigroup")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57+                             , srcInfoPoints = []+                             }+                           "Monoid")))+              ]+          ]+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 251 1 258 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 9+                , SrcSpan "tests/examples/DerivingVia.hs" 251 23 251 28+                , SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 3+                , SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 3+                , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15+                           , srcInfoPoints = []+                           }+                         "Monad")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22+                           , srcInfoPoints = []+                           }+                         "Sorted")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 8+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 4+                              , SrcSpan "tests/examples/DerivingVia.hs" 252 4 252 7+                              , SrcSpan "tests/examples/DerivingVia.hs" 252 7 252 8+                              ]+                          }+                        ">>="+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 51+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 252 21 252 23 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 20+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18+                                     , srcInfoPoints = []+                                     }+                                   "Sorted")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20+                                  , srcInfoPoints = []+                                  }+                                "a")))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 51+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 252 40 252 42 ]+                            }+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 39+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 25+                                   , SrcSpan "tests/examples/DerivingVia.hs" 252 38 252 39+                                   ]+                               }+                             (TyFun+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 38+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 252 27 252 29 ]+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26+                                        , srcInfoPoints = []+                                        }+                                      "a"))+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 38+                                     , srcInfoPoints = []+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 252 30 252 36+                                              , srcInfoPoints = []+                                              }+                                            "Sorted")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38+                                           , srcInfoPoints = []+                                           }+                                         "b")))))+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 51+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49+                                        , srcInfoPoints = []+                                        }+                                      "Sorted")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51+                                     , srcInfoPoints = []+                                     }+                                   "b"))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]+                      }+                    [ InfixMatch+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]+                          }+                        (PApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 15+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9+                                   , srcInfoPoints = []+                                   }+                                 "Sorted"))+                           [ PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11+                                    , srcInfoPoints = []+                                    }+                                  "a")+                           , PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13+                                    , srcInfoPoints = []+                                    }+                                  "b")+                           , PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15+                                    , srcInfoPoints = []+                                    }+                                  "c")+                           ])+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 253 16 253 19+                             , srcInfoPoints = []+                             }+                           ">>=")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21+                                 , srcInfoPoints = []+                                 }+                               "f")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 39+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 23 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 39+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 36+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 33+                                      , srcInfoPoints = []+                                      }+                                    (Con+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 30+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 253 24 253 30+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 253 24 253 30+                                               , srcInfoPoints = []+                                               }+                                             "Sorted")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 31 253 33+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 253 31 253 33+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 253 31 253 33+                                               , srcInfoPoints = []+                                               }+                                             "a'"))))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 253 34 253 36+                                            , srcInfoPoints = []+                                            }+                                          "b'"))))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39+                                         , srcInfoPoints = []+                                         }+                                       "c'")))))+                        (Just+                           (BDecls+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 254 5 256 26+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 5+                                    , SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 5+                                    , SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 5+                                    , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0+                                    ]+                                }+                              [ PatBind+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 26+                                    , srcInfoPoints = []+                                    }+                                  (PApp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 19+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 11+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 254 5 254 11+                                             , srcInfoPoints = []+                                             }+                                           "Sorted"))+                                     [ PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 254 12 254 14+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 254 12 254 14+                                              , srcInfoPoints = []+                                              }+                                            "a'")+                                     , PWildCard+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 254 15 254 16+                                           , srcInfoPoints = []+                                           }+                                     , PWildCard+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 254 18 254 19+                                           , srcInfoPoints = []+                                           }+                                     ])+                                  (UnGuardedRhs+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 26+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 22 ]+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 254 23 254 26+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 254 23 254 24+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 254 23 254 24+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DerivingVia.hs"+                                                         254+                                                         23+                                                         254+                                                         24+                                                   , srcInfoPoints = []+                                                   }+                                                 "f")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 254 25 254 26+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 254 25 254 26+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DerivingVia.hs"+                                                         254+                                                         25+                                                         254+                                                         26+                                                   , srcInfoPoints = []+                                                   }+                                                 "a")))))+                                  Nothing+                              , PatBind+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 26+                                    , srcInfoPoints = []+                                    }+                                  (PApp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 19+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 11+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 255 5 255 11+                                             , srcInfoPoints = []+                                             }+                                           "Sorted"))+                                     [ PWildCard+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 255 12 255 13+                                           , srcInfoPoints = []+                                           }+                                     , PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 255 15 255 17+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 255 15 255 17+                                              , srcInfoPoints = []+                                              }+                                            "b'")+                                     , PWildCard+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 255 18 255 19+                                           , srcInfoPoints = []+                                           }+                                     ])+                                  (UnGuardedRhs+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 26+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 22 ]+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 255 23 255 26+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 255 23 255 24+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 255 23 255 24+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DerivingVia.hs"+                                                         255+                                                         23+                                                         255+                                                         24+                                                   , srcInfoPoints = []+                                                   }+                                                 "f")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 255 25 255 26+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 255 25 255 26+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DerivingVia.hs"+                                                         255+                                                         25+                                                         255+                                                         26+                                                   , srcInfoPoints = []+                                                   }+                                                 "b")))))+                                  Nothing+                              , PatBind+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 26+                                    , srcInfoPoints = []+                                    }+                                  (PApp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 20+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 11+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 256 5 256 11+                                             , srcInfoPoints = []+                                             }+                                           "Sorted"))+                                     [ PWildCard+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 256 12 256 13+                                           , srcInfoPoints = []+                                           }+                                     , PWildCard+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 256 15 256 16+                                           , srcInfoPoints = []+                                           }+                                     , PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 256 18 256 20+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 256 18 256 20+                                              , srcInfoPoints = []+                                              }+                                            "c'")+                                     ])+                                  (UnGuardedRhs+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 26+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 22 ]+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 256 23 256 26+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 256 23 256 24+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 256 23 256 24+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DerivingVia.hs"+                                                         256+                                                         23+                                                         256+                                                         24+                                                   , srcInfoPoints = []+                                                   }+                                                 "f")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 256 25 256 26+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 256 25 256 26+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DerivingVia.hs"+                                                         256+                                                         25+                                                         256+                                                         26+                                                   , srcInfoPoints = []+                                                   }+                                                 "c")))))+                                  Nothing+                              ]))+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 258 1 265 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 9+                , SrcSpan "tests/examples/DerivingVia.hs" 258 25 258 30+                , SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 3+                , SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 3+                , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17+                           , srcInfoPoints = []+                           }+                         "Pointed")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24+                           , srcInfoPoints = []+                           }+                         "Sorted")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 10+                          , srcInfoPoints = []+                          }+                        "pointed"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 259 16 259 18 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 27+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25+                                     , srcInfoPoints = []+                                     }+                                   "Sorted")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27+                                  , srcInfoPoints = []+                                  }+                                "a")))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 10+                             , srcInfoPoints = []+                             }+                           "pointed")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12+                                 , srcInfoPoints = []+                                 }+                               "a")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 27+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 14 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 27+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 25+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 23+                                      , srcInfoPoints = []+                                      }+                                    (Con+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 21+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 260 15 260 21+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 260 15 260 21+                                               , srcInfoPoints = []+                                               }+                                             "Sorted")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 22 260 23+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 260 22 260 23+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 260 22 260 23+                                               , srcInfoPoints = []+                                               }+                                             "a"))))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 260 24 260 25+                                            , srcInfoPoints = []+                                            }+                                          "a"))))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27+                                         , srcInfoPoints = []+                                         }+                                       "a")))))+                        Nothing+                    ])+             ])+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 265 1 266 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 6+                , SrcSpan "tests/examples/DerivingVia.hs" 265 16 265 21+                , SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 3+                , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 15+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13+                     , srcInfoPoints = []+                     }+                   "IsZero"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 9+                          , srcInfoPoints = []+                          }+                        "isZero"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 22+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 266 15 266 17 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22+                                  , srcInfoPoints = []+                                  }+                                "Bool")))))+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 268 25 268 26 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 24+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21+                     , srcInfoPoints = []+                     }+                   "WrappedNumEq"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 39+                      , srcInfoPoints = []+                      }+                    "WrappedNumEq")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 269 25 269 26 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 24+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20+                     , srcInfoPoints = []+                     }+                   "WrappedShow"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 38+                      , srcInfoPoints = []+                      }+                    "WrappedShow")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 270 25 270 26 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 24+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22+                     , srcInfoPoints = []+                     }+                   "WrappedNumEq2"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 40+                      , srcInfoPoints = []+                      }+                    "WrappedNumEq2")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 272 1 276 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 9+                , SrcSpan "tests/examples/DerivingVia.hs" 272 51 272 56+                , SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 3+                , SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 3+                , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 50+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 16 272 17+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 22 272 23+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 24 272 26+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14+                                     , srcInfoPoints = []+                                     }+                                   "Num")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20+                                     , srcInfoPoints = []+                                     }+                                   "Eq")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 50+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33+                           , srcInfoPoints = []+                           }+                         "IsZero")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 50+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 35+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 49 272 50+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 49+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47+                                 , srcInfoPoints = []+                                 }+                               "WrappedNumEq")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 9+                          , srcInfoPoints = []+                          }+                        "isZero"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 35+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 273 28 273 30 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 27+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25+                                     , srcInfoPoints = []+                                     }+                                   "WrappedNumEq")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27+                                  , srcInfoPoints = []+                                  }+                                "a")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35+                                  , srcInfoPoints = []+                                  }+                                "Bool")))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 9+                             , srcInfoPoints = []+                             }+                           "isZero")+                        [ PParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 26+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 11+                                  , SrcSpan "tests/examples/DerivingVia.hs" 274 25 274 26+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 25+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23+                                       , srcInfoPoints = []+                                       }+                                     "WrappedNumEq"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25+                                        , srcInfoPoints = []+                                        }+                                      "a")+                               ])+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 35+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 28 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 35+                                , srcInfoPoints = []+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30+                                      , srcInfoPoints = []+                                      }+                                    0+                                    "0"))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33+                                         , srcInfoPoints = []+                                         }+                                       "==")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35+                                         , srcInfoPoints = []+                                         }+                                       "a")))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 276 1 280 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 9+                , SrcSpan "tests/examples/DerivingVia.hs" 276 43 276 48+                , SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 3+                , SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 3+                , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 42+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14+                                    , srcInfoPoints = []+                                    }+                                  "Show")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 42+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26+                           , srcInfoPoints = []+                           }+                         "IsZero")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 42+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 28+                         , SrcSpan "tests/examples/DerivingVia.hs" 276 41 276 42+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 41+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39+                                 , srcInfoPoints = []+                                 }+                               "WrappedShow")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 9+                          , srcInfoPoints = []+                          }+                        "isZero"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 34+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 277 27 277 29 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 26+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24+                                     , srcInfoPoints = []+                                     }+                                   "WrappedShow")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26+                                  , srcInfoPoints = []+                                  }+                                "a")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34+                                  , srcInfoPoints = []+                                  }+                                "Bool")))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 9+                             , srcInfoPoints = []+                             }+                           "isZero")+                        [ PParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 25+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 11+                                  , SrcSpan "tests/examples/DerivingVia.hs" 278 24 278 25+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 24+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22+                                       , srcInfoPoints = []+                                       }+                                     "WrappedShow"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24+                                        , srcInfoPoints = []+                                        }+                                      "a")+                               ])+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 41+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 27 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 41+                                , srcInfoPoints = []+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31+                                   , srcInfoPoints = []+                                   }+                                 (String+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31+                                      , srcInfoPoints = []+                                      }+                                    "0"+                                    "0"))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34+                                         , srcInfoPoints = []+                                         }+                                       "==")))+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 41+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 278 35 278 39+                                            , srcInfoPoints = []+                                            }+                                          "show")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 278 40 278 41+                                            , srcInfoPoints = []+                                            }+                                          "a"))))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 280 1 284 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 9+                , SrcSpan "tests/examples/DerivingVia.hs" 280 52 280 57+                , SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 3+                , SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 3+                , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 51+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 16 280 17+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 22 280 23+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 24 280 26+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14+                                     , srcInfoPoints = []+                                     }+                                   "Num")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20+                                     , srcInfoPoints = []+                                     }+                                   "Eq")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 51+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33+                           , srcInfoPoints = []+                           }+                         "IsZero")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 51+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 35+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 50 280 51+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 50+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48+                                 , srcInfoPoints = []+                                 }+                               "WrappedNumEq2")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 9+                          , srcInfoPoints = []+                          }+                        "isZero"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 36+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 281 29 281 31 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 28+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26+                                     , srcInfoPoints = []+                                     }+                                   "WrappedNumEq2")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28+                                  , srcInfoPoints = []+                                  }+                                "a")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36+                                  , srcInfoPoints = []+                                  }+                                "Bool")))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 9+                             , srcInfoPoints = []+                             }+                           "isZero")+                        [ PParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 27+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 11+                                  , SrcSpan "tests/examples/DerivingVia.hs" 282 26 282 27+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 26+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24+                                       , srcInfoPoints = []+                                       }+                                     "WrappedNumEq2"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26+                                        , srcInfoPoints = []+                                        }+                                      "a")+                               ])+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 40+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 29 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 40+                                , srcInfoPoints = []+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 35+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 282 30 282 31+                                            , srcInfoPoints = []+                                            }+                                          "a")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 282 32 282 33+                                            , srcInfoPoints = []+                                            }+                                          "+")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 282 34 282 35+                                            , srcInfoPoints = []+                                            }+                                          "a"))))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38+                                         , srcInfoPoints = []+                                         }+                                       "==")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40+                                         , srcInfoPoints = []+                                         }+                                       "a")))))+                        Nothing+                    ])+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 284 1 286 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 284 13 284 14 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 8+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12+                  , srcInfoPoints = []+                  }+                "INT"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 18+                      , srcInfoPoints = []+                      }+                    "INT")+                 [ TyCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22+                             , srcInfoPoints = []+                             }+                           "Int"))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 24+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 11 ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 285 12 285 19+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          , Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 18+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 11 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 286 19 286 22+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 41+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 24+                             , SrcSpan "tests/examples/DerivingVia.hs" 286 40 286 41+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 40+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36+                                     , srcInfoPoints = []+                                     }+                                   "WrappedNumEq")))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40+                                     , srcInfoPoints = []+                                     }+                                   "Int")))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18+                             , srcInfoPoints = []+                             }+                           "IsZero")))+              ]+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 288 14 288 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 8+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13+                  , srcInfoPoints = []+                  }+                "VOID"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 20+                      , srcInfoPoints = []+                      }+                    "VOID")+                 [ TyCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25+                             , srcInfoPoints = []+                             }+                           "Void"))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 41+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 34 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 288 42 288 45+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 64+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 47+                             , SrcSpan "tests/examples/DerivingVia.hs" 288 63 288 64+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 63+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58+                                     , srcInfoPoints = []+                                     }+                                   "WrappedShow")))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63+                                     , srcInfoPoints = []+                                     }+                                   "Void")))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41+                             , srcInfoPoints = []+                             }+                           "IsZero")))+              ]+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 293 1 301 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 6+                , SrcSpan "tests/examples/DerivingVia.hs" 293 38 293 43+                , SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 3+                , SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 3+                , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 0+                ]+            }+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]+                  }+                (TypeA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16+                                 , srcInfoPoints = []+                                 }+                               "Bifunctor")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18+                              , srcInfoPoints = []+                              }+                            "p"))))))+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 37+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35+                     , srcInfoPoints = []+                     }+                   "Biapplicative"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37+                     , srcInfoPoints = []+                     }+                   "p")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 9+                          , srcInfoPoints = []+                          }+                        "bipure"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 294 15 294 17 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 28+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 294 20 294 22 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19+                                  , srcInfoPoints = []+                                  }+                                "b"))+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 28+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 26+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24+                                        , srcInfoPoints = []+                                        }+                                      "p"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26+                                        , srcInfoPoints = []+                                        }+                                      "a")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28+                                     , srcInfoPoints = []+                                     }+                                   "b"))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 11+                          , srcInfoPoints = []+                          }+                        "biliftA2"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 297 8 301 14+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 298 5 298 7 ]+                         }+                       (TyParen+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 23+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 9+                                , SrcSpan "tests/examples/DerivingVia.hs" 297 22 297 23+                                ]+                            }+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 22+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 297 12 297 14 ]+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10+                                     , srcInfoPoints = []+                                     }+                                   "a"))+                             (TyFun+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 22+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 297 18 297 20 ]+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16+                                        , srcInfoPoints = []+                                        }+                                      "b"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22+                                        , srcInfoPoints = []+                                        }+                                      "c")))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 298 8 301 14+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 299 5 299 7 ]+                            }+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 24+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 9+                                   , SrcSpan "tests/examples/DerivingVia.hs" 298 23 298 24+                                   ]+                               }+                             (TyFun+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 23+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 298 12 298 14 ]+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11+                                        , srcInfoPoints = []+                                        }+                                      "a'"))+                                (TyFun+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 23+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 298 18 298 20 ]+                                     }+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17+                                           , srcInfoPoints = []+                                           }+                                         "b'"))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23+                                           , srcInfoPoints = []+                                           }+                                         "c'")))))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 299 8 301 14+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 300 5 300 7 ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 14+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 11+                                     , srcInfoPoints = []+                                     }+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9+                                           , srcInfoPoints = []+                                           }+                                         "p"))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11+                                           , srcInfoPoints = []+                                           }+                                         "a")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14+                                        , srcInfoPoints = []+                                        }+                                      "a'")))+                             (TyFun+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 300 8 301 14+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 301 5 301 7 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 14+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 11+                                        , srcInfoPoints = []+                                        }+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 9+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 300 8 300 9+                                              , srcInfoPoints = []+                                              }+                                            "p"))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 300 10 300 11+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 300 10 300 11+                                              , srcInfoPoints = []+                                              }+                                            "b")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14+                                           , srcInfoPoints = []+                                           }+                                         "b'")))+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 14+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 11+                                        , srcInfoPoints = []+                                        }+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 9+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 301 8 301 9+                                              , srcInfoPoints = []+                                              }+                                            "p"))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 301 10 301 11+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 301 10 301 11+                                              , srcInfoPoints = []+                                              }+                                            "c")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14+                                           , srcInfoPoints = []+                                           }+                                         "c'"))))))))+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 303 1 309 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 9+                , SrcSpan "tests/examples/DerivingVia.hs" 303 28 303 33+                , SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 3+                , SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 3+                , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23+                           , srcInfoPoints = []+                           }+                         "Biapplicative")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25+                         , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26+                         , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25+                            , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26+                            , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27+                            ]+                        }+                      (TupleCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25+                               , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26+                               , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27+                               ]+                           }+                         Boxed+                         2)))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9+                            , srcInfoPoints = []+                            }+                          "bipure"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 15+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 11 ]+                         }+                       (Con+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13+                                , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14+                                , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15+                                ]+                            }+                          (Special+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13+                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14+                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15+                                   ]+                               }+                             (TupleCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13+                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14+                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15+                                      ]+                                  }+                                Boxed+                                2))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 11+                             , srcInfoPoints = []+                             }+                           "biliftA2")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13+                                 , srcInfoPoints = []+                                 }+                               "f")+                        , PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16+                                 , srcInfoPoints = []+                                 }+                               "f'")+                        , PTuple+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 24+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 18+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 19 306 20+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 23 306 24+                                  ]+                              }+                            Boxed+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19+                                     , srcInfoPoints = []+                                     }+                                   "a")+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23+                                     , srcInfoPoints = []+                                     }+                                   "a'")+                            ]+                        , PTuple+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 32+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 26+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 27 306 28+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 31 306 32+                                  ]+                              }+                            Boxed+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27+                                     , srcInfoPoints = []+                                     }+                                   "b")+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31+                                     , srcInfoPoints = []+                                     }+                                   "b'")+                            ]+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 306 33 307 22+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 306 33 306 34 ]+                             }+                           (Tuple+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 22+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 6+                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 11 307 12+                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 21 307 22+                                    ]+                                }+                              Boxed+                              [ App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 11+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 9+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 307 6 307 7+                                                , srcInfoPoints = []+                                                }+                                              "f")))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 307 8 307 9+                                                , srcInfoPoints = []+                                                }+                                              "a"))))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 307 10 307 11+                                             , srcInfoPoints = []+                                             }+                                           "b")))+                              , App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 21+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 18+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 15+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 307 13 307 15+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 307 13 307 15+                                                , srcInfoPoints = []+                                                }+                                              "f'")))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 16 307 18+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 307 16 307 18+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DerivingVia.hs" 307 16 307 18+                                                , srcInfoPoints = []+                                                }+                                              "a'"))))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia.hs" 307 19 307 21+                                             , srcInfoPoints = []+                                             }+                                           "b'")))+                              ]))+                        Nothing+                    ])+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 309 1 310 50+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 309 25 309 26 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 24+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 22+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 20+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18+                           , srcInfoPoints = []+                           }+                         "WrapBiapp"))+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20+                           , srcInfoPoints = []+                           }+                         "p")))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24+                     , srcInfoPoints = []+                     }+                   "b")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 35+                      , srcInfoPoints = []+                      }+                    "WrapBiap")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 43+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 37+                           , SrcSpan "tests/examples/DerivingVia.hs" 309 42 309 43+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 42+                          , srcInfoPoints = []+                          }+                        (TyApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 40+                             , srcInfoPoints = []+                             }+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38+                                   , srcInfoPoints = []+                                   }+                                 "p"))+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42+                                , srcInfoPoints = []+                                }+                              "b")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 50+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 20 310 21+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 30 310 31+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 45 310 46+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 49 310 50+                    ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 310 12 310 19+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30+                             , srcInfoPoints = []+                             }+                           "Bifunctor")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45+                             , srcInfoPoints = []+                             }+                           "Biapplicative")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49+                             , srcInfoPoints = []+                             }+                           "Eq")))+              ]+          ]+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 312 1 321 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 9+                , SrcSpan "tests/examples/DerivingVia.hs" 312 67 312 72+                , SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 3+                , SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 3+                , SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 3+                , SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 3+                , SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 3+                , SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 3+                , SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 3+                , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 66+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 44+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 26 312 27+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 33 312 34+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 40 312 41+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 42 312 44+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24+                                     , srcInfoPoints = []+                                     }+                                   "Biapplicative")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26+                                  , srcInfoPoints = []+                                  }+                                "p")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31+                                     , srcInfoPoints = []+                                     }+                                   "Num")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38+                                     , srcInfoPoints = []+                                     }+                                   "Num")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40+                                  , srcInfoPoints = []+                                  }+                                "b")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 66+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48+                           , srcInfoPoints = []+                           }+                         "Num")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 66+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 50+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 65 312 66+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 65+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 63+                           , srcInfoPoints = []+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 61+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59+                                       , srcInfoPoints = []+                                       }+                                     "WrapBiapp")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61+                                    , srcInfoPoints = []+                                    }+                                  "p")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65+                              , srcInfoPoints = []+                              }+                            "b"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 6+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5+                             , SrcSpan "tests/examples/DerivingVia.hs" 313 5 313 6+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5+                            , srcInfoPoints = []+                            }+                          "+"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 25+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 8 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 25+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 21+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17+                                        , srcInfoPoints = []+                                        }+                                      "biliftA2")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21+                                      ]+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19+                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20+                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21+                                         ]+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20+                                        , srcInfoPoints = []+                                        }+                                      "+"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23+                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24+                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24+                                     , srcInfoPoints = []+                                     }+                                   "+")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 6+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5+                             , SrcSpan "tests/examples/DerivingVia.hs" 314 5 314 6+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5+                            , srcInfoPoints = []+                            }+                          "-"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 25+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 8 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 25+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 21+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17+                                        , srcInfoPoints = []+                                        }+                                      "biliftA2")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21+                                      ]+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19+                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20+                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21+                                         ]+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20+                                        , srcInfoPoints = []+                                        }+                                      "*"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23+                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24+                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24+                                     , srcInfoPoints = []+                                     }+                                   "*")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 6+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5+                             , SrcSpan "tests/examples/DerivingVia.hs" 315 5 315 6+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5+                            , srcInfoPoints = []+                            }+                          "*"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 25+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 8 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 25+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 21+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17+                                        , srcInfoPoints = []+                                        }+                                      "biliftA2")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21+                                      ]+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19+                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20+                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21+                                         ]+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20+                                        , srcInfoPoints = []+                                        }+                                      "*"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23+                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24+                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24+                                     , srcInfoPoints = []+                                     }+                                   "*")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9+                            , srcInfoPoints = []+                            }+                          "negate"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 31+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 11 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 31+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 24+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17+                                        , srcInfoPoints = []+                                        }+                                      "bimap")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24+                                        , srcInfoPoints = []+                                        }+                                      "negate"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31+                                     , srcInfoPoints = []+                                     }+                                   "negate")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6+                            , srcInfoPoints = []+                            }+                          "abs"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 22+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 8 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 22+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 18+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14+                                        , srcInfoPoints = []+                                        }+                                      "bimap")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18+                                        , srcInfoPoints = []+                                        }+                                      "abs"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22+                                     , srcInfoPoints = []+                                     }+                                   "abs")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9+                            , srcInfoPoints = []+                            }+                          "signum"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 31+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 11 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 31+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 24+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17+                                        , srcInfoPoints = []+                                        }+                                      "bimap")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24+                                        , srcInfoPoints = []+                                        }+                                      "signum"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31+                                     , srcInfoPoints = []+                                     }+                                   "signum")))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 14+                             , srcInfoPoints = []+                             }+                           "fromInteger")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16+                                 , srcInfoPoints = []+                                 }+                               "n")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 55+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 18 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 55+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 32+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 319 19 319 30+                                            , srcInfoPoints = []+                                            }+                                          "fromInteger")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 319 31 319 32+                                            , srcInfoPoints = []+                                            }+                                          "n"))))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34+                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40+                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41+                                       ]+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34+                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40+                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41+                                          ]+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40+                                         , srcInfoPoints = []+                                         }+                                       "bipure")))+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 55+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 319 42 319 53+                                            , srcInfoPoints = []+                                            }+                                          "fromInteger")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 319 54 319 55+                                            , srcInfoPoints = []+                                            }+                                          "n"))))))+                        Nothing+                    ])+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 321 1 322 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 321 14 321 15 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 8+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13+                  , srcInfoPoints = []+                  }+                "INT2"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 20+                      , srcInfoPoints = []+                      }+                    "INT2")+                 [ TyTuple+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 31+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 22+                           , SrcSpan "tests/examples/DerivingVia.hs" 321 25 321 26+                           , SrcSpan "tests/examples/DerivingVia.hs" 321 30 321 31+                           ]+                       }+                     Boxed+                     [ TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25+                                 , srcInfoPoints = []+                                 }+                               "Int"))+                     , TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30+                                 , srcInfoPoints = []+                                 }+                               "Int"))+                     ]+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 18+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 11 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 322 19 322 22+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 62+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 24+                             , SrcSpan "tests/examples/DerivingVia.hs" 322 61 322 62+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 61+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37+                                     , srcInfoPoints = []+                                     }+                                   "WrappedNumEq2")))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 61+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 39+                                   , SrcSpan "tests/examples/DerivingVia.hs" 322 60 322 61+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 60+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 56+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 52+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 48+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 322 39 322 48+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 322 39 322 48+                                                 , srcInfoPoints = []+                                                 }+                                               "WrapBiapp")))+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 49 322 52+                                           , srcInfoPoints =+                                               [ SrcSpan+                                                   "tests/examples/DerivingVia.hs" 322 49 322 50+                                               , SrcSpan+                                                   "tests/examples/DerivingVia.hs" 322 50 322 51+                                               , SrcSpan+                                                   "tests/examples/DerivingVia.hs" 322 51 322 52+                                               ]+                                           }+                                         (Special+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 322 49 322 52+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/DerivingVia.hs" 322 49 322 50+                                                  , SrcSpan+                                                      "tests/examples/DerivingVia.hs" 322 50 322 51+                                                  , SrcSpan+                                                      "tests/examples/DerivingVia.hs" 322 51 322 52+                                                  ]+                                              }+                                            (TupleCon+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 322 49 322 52+                                                 , srcInfoPoints =+                                                     [ SrcSpan+                                                         "tests/examples/DerivingVia.hs"+                                                         322+                                                         49+                                                         322+                                                         50+                                                     , SrcSpan+                                                         "tests/examples/DerivingVia.hs"+                                                         322+                                                         50+                                                         322+                                                         51+                                                     , SrcSpan+                                                         "tests/examples/DerivingVia.hs"+                                                         322+                                                         51+                                                         322+                                                         52+                                                     ]+                                                 }+                                               Boxed+                                               2))))+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 322 53 322 56+                                              , srcInfoPoints = []+                                              }+                                            "Int"))))+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60+                                           , srcInfoPoints = []+                                           }+                                         "Int")))))))))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18+                             , srcInfoPoints = []+                             }+                           "IsZero")))+              ]+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 327 1 328 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 6+                , SrcSpan "tests/examples/DerivingVia.hs" 327 32 327 37+                , SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 3+                , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 0+                ]+            }+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]+                  }+                (TypeA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13+                                 , srcInfoPoints = []+                                 }+                               "Monoid")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 31+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29+                     , srcInfoPoints = []+                     }+                   "MonoidNull"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 7+                          , srcInfoPoints = []+                          }+                        "null"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 328 13 328 15 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20+                                  , srcInfoPoints = []+                                  }+                                "Bool")))))+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 62+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 330 22 330 23 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 21+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19+                     , srcInfoPoints = []+                     }+                   "WrpMonNull"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 27+                      , srcInfoPoints = []+                      }+                    "WRM")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 62+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 38+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 39 330 40+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 42 330 43+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 53 330 54+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 61 330 62+                    ]+                }+              Nothing+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42+                             , srcInfoPoints = []+                             }+                           "Eq")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53+                             , srcInfoPoints = []+                             }+                           "Semigroup")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61+                             , srcInfoPoints = []+                             }+                           "Monoid")))+              ]+          ]+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 332 1 336 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 9+                , SrcSpan "tests/examples/DerivingVia.hs" 332 56 332 61+                , SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 3+                , SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 3+                , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 55+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 11+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 15 332 16+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 25 332 26+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 27 332 29+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13+                                     , srcInfoPoints = []+                                     }+                                   "Eq")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23+                                     , srcInfoPoints = []+                                     }+                                   "Monoid")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 55+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40+                           , srcInfoPoints = []+                           }+                         "MonoidNull")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 55+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 42+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 54 332 55+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 54+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52+                                 , srcInfoPoints = []+                                 }+                               "WrpMonNull")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 7+                          , srcInfoPoints = []+                          }+                        "null"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 31+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 333 24 333 26 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 23+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21+                                     , srcInfoPoints = []+                                     }+                                   "WrpMonNull")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23+                                  , srcInfoPoints = []+                                  }+                                "a")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31+                                  , srcInfoPoints = []+                                  }+                                "Bool")))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7+                            , srcInfoPoints = []+                            }+                          "null"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 9 ]+                         }+                       (RightSection+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 21+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 11+                                , SrcSpan "tests/examples/DerivingVia.hs" 334 20 334 21+                                ]+                            }+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13+                                     , srcInfoPoints = []+                                     }+                                   "==")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20+                                     , srcInfoPoints = []+                                     }+                                   "mempty")))))+                    Nothing)+             ])+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 54+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 9+                , SrcSpan "tests/examples/DerivingVia.hs" 336 31 336 39+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 336 10 336 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 30+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 336 29 336 30+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 29+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25+                                 , srcInfoPoints = []+                                 }+                               "WrpMonNull")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29+                                 , srcInfoPoints = []+                                 }+                               "Any")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50+                           , srcInfoPoints = []+                           }+                         "MonoidNull")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54+                           , srcInfoPoints = []+                           }+                         "Any")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 53+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 9+                , SrcSpan "tests/examples/DerivingVia.hs" 337 31 337 39+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 337 10 337 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15+                            , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15+                               , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16+                               ]+                           })))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50+                           , srcInfoPoints = []+                           }+                         "MonoidNull")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52+                         , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52+                            , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52+                               , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53+                               ]+                           })))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 59+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 9+                , SrcSpan "tests/examples/DerivingVia.hs" 338 31 338 39+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 338 10 338 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22+                           , srcInfoPoints = []+                           }+                         "Ordering")))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50+                           , srcInfoPoints = []+                           }+                         "MonoidNull")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59+                           , srcInfoPoints = []+                           }+                         "Ordering")))))+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 345 1 348 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 6+                , SrcSpan "tests/examples/DerivingVia.hs" 345 17 345 22+                , SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 3+                , SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 3+                , SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 3+                , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 16+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14+                     , srcInfoPoints = []+                     }+                   "Lattice"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 6+                          , srcInfoPoints = []+                          }+                        "sup"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 23+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 346 14 346 16 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 23+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 346 19 346 21 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23+                                  , srcInfoPoints = []+                                  }+                                "a")))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 8+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 4+                              , SrcSpan "tests/examples/DerivingVia.hs" 347 4 347 7+                              , SrcSpan "tests/examples/DerivingVia.hs" 347 7 347 8+                              ]+                          }+                        ".>="+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 26+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 347 14 347 16 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 26+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 347 19 347 21 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26+                                     , srcInfoPoints = []+                                     }+                                   "Bool"))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 7+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 4+                              , SrcSpan "tests/examples/DerivingVia.hs" 348 4 348 6+                              , SrcSpan "tests/examples/DerivingVia.hs" 348 6 348 7+                              ]+                          }+                        ".>"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 26+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 348 14 348 16 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 26+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 348 19 348 21 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26+                                     , srcInfoPoints = []+                                     }+                                   "Bool"))))))+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 350 1 351 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 350 19 350 20 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 18+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16+                     , srcInfoPoints = []+                     }+                   "WrapOrd"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 31+                      , srcInfoPoints = []+                      }+                    "WrappedOrd")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 29+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 11+                    , SrcSpan "tests/examples/DerivingVia.hs" 351 20 351 21+                    , SrcSpan "tests/examples/DerivingVia.hs" 351 23 351 24+                    , SrcSpan "tests/examples/DerivingVia.hs" 351 28 351 29+                    ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 351 12 351 19+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23+                             , srcInfoPoints = []+                             }+                           "Eq")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28+                             , srcInfoPoints = []+                             }+                           "Ord")))+              ]+          ]+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 353 1 358 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 9+                , SrcSpan "tests/examples/DerivingVia.hs" 353 39 353 44+                , SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 3+                , SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 3+                , SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 3+                , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 38+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13+                                    , srcInfoPoints = []+                                    }+                                  "Ord")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 38+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 38+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 28+                         , SrcSpan "tests/examples/DerivingVia.hs" 353 37 353 38+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 37+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35+                                 , srcInfoPoints = []+                                 }+                               "WrapOrd")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6+                            , srcInfoPoints = []+                            }+                          "sup"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 14+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 10 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14+                                  , srcInfoPoints = []+                                  }+                                "max"))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 8+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7+                             , SrcSpan "tests/examples/DerivingVia.hs" 355 7 355 8+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7+                            , srcInfoPoints = []+                            }+                          ".>="))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 15+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 10 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12+                                , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14+                                , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15+                                ]+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12+                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14+                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15+                                   ]+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14+                                  , srcInfoPoints = []+                                  }+                                ">="))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 7+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6+                             , SrcSpan "tests/examples/DerivingVia.hs" 356 6 356 7+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6+                            , srcInfoPoints = []+                            }+                          ".>"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 14+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 10 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12+                                , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13+                                , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14+                                ]+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12+                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13+                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14+                                   ]+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13+                                  , srcInfoPoints = []+                                  }+                                ">"))))+                    Nothing)+             ])+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 59+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 9+                , SrcSpan "tests/examples/DerivingVia.hs" 358 21 358 29+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 358 10 358 13+                  , srcInfoPoints = []+                  }+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 358 16 358 17+                         ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16+                           , srcInfoPoints = []+                           }+                         "a")))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 59+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33+                                    , srcInfoPoints = []+                                    }+                                  "Ord")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 59+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 59+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 57+                         , SrcSpan "tests/examples/DerivingVia.hs" 358 58 358 59+                         ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58+                           , srcInfoPoints = []+                           }+                         "a")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 62+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 9+                , SrcSpan "tests/examples/DerivingVia.hs" 359 21 359 29+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 359 10 359 13+                  , srcInfoPoints = []+                  }+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 20+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 16 359 17+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 19 359 20+                         ]+                     }+                   Boxed+                   [ TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16+                            , srcInfoPoints = []+                            }+                          "a")+                   , TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19+                            , srcInfoPoints = []+                            }+                          "b")+                   ])))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 62+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 47+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 31+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 36 359 37+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 43 359 44+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 45 359 47+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34+                                     , srcInfoPoints = []+                                     }+                                   "Ord")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41+                                     , srcInfoPoints = []+                                     }+                                   "Ord")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43+                                  , srcInfoPoints = []+                                  }+                                "b")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 62+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 62+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 57+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 58 359 59+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 61 359 62+                         ]+                     }+                   Boxed+                   [ TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58+                            , srcInfoPoints = []+                            }+                          "a")+                   , TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61+                            , srcInfoPoints = []+                            }+                          "b")+                   ])))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 9+                , SrcSpan "tests/examples/DerivingVia.hs" 361 19 361 27+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 361 10 361 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18+                           , srcInfoPoints = []+                           }+                         "Bool")))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40+                           , srcInfoPoints = []+                           }+                         "Bool")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 9+                , SrcSpan "tests/examples/DerivingVia.hs" 363 19 363 27+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 363 10 363 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18+                           , srcInfoPoints = []+                           }+                         "Char")))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40+                           , srcInfoPoints = []+                           }+                         "Char")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 9+                , SrcSpan "tests/examples/DerivingVia.hs" 365 18 365 26+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 365 10 365 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17+                           , srcInfoPoints = []+                           }+                         "Int")))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 9+                , SrcSpan "tests/examples/DerivingVia.hs" 367 22 367 30+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 367 10 367 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21+                           , srcInfoPoints = []+                           }+                         "Integer")))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46+                           , srcInfoPoints = []+                           }+                         "Integer")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 9+                , SrcSpan "tests/examples/DerivingVia.hs" 369 20 369 28+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 369 10 369 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19+                           , srcInfoPoints = []+                           }+                         "Float")))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42+                           , srcInfoPoints = []+                           }+                         "Float")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 9+                , SrcSpan "tests/examples/DerivingVia.hs" 371 21 371 29+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 371 10 371 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20+                           , srcInfoPoints = []+                           }+                         "Double")))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44+                           , srcInfoPoints = []+                           }+                         "Double")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 48+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 9+                , SrcSpan "tests/examples/DerivingVia.hs" 373 23 373 31+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 373 10 373 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22+                           , srcInfoPoints = []+                           }+                         "Rational")))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39+                           , srcInfoPoints = []+                           }+                         "Lattice")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48+                           , srcInfoPoints = []+                           }+                         "Rational")))))+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 380 1 386 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 6+                , SrcSpan "tests/examples/DerivingVia.hs" 380 31 380 36+                , SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 3+                , SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 3+                , SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 3+                , SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 3+                , SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 3+                , SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 3+                , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 0+                ]+            }+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]+                  }+                (TypeA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14+                                 , srcInfoPoints = []+                                 }+                               "Functor")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16+                              , srcInfoPoints = []+                              }+                            "f"))))))+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 30+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28+                     , srcInfoPoints = []+                     }+                   "Additive"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30+                     , srcInfoPoints = []+                     }+                   "f")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 7+                          , srcInfoPoints = []+                          }+                        "zero"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 23+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 14+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 381 11 381 14+                                              , srcInfoPoints = []+                                              }+                                            "Num")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16+                                           , srcInfoPoints = []+                                           }+                                         "a"))))))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 23+                            , srcInfoPoints = []+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21+                                  , srcInfoPoints = []+                                  }+                                "f"))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23+                                  , srcInfoPoints = []+                                  }+                                "a")))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 8+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 4+                              , SrcSpan "tests/examples/DerivingVia.hs" 382 4 382 7+                              , SrcSpan "tests/examples/DerivingVia.hs" 382 7 382 8+                              ]+                          }+                        "^+^"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 38+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 15+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 382 12 382 15+                                              , srcInfoPoints = []+                                              }+                                            "Num")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17+                                           , srcInfoPoints = []+                                           }+                                         "a"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 38+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 382 25 382 27 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 24+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22+                                     , srcInfoPoints = []+                                     }+                                   "f"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 38+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 32 382 34 ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 31+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29+                                        , srcInfoPoints = []+                                        }+                                      "f"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31+                                        , srcInfoPoints = []+                                        }+                                      "a")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 38+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36+                                        , srcInfoPoints = []+                                        }+                                      "f"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38+                                        , srcInfoPoints = []+                                        }+                                      "a")))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 8+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 4+                             , SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7+                             , SrcSpan "tests/examples/DerivingVia.hs" 383 7 383 8+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7+                            , srcInfoPoints = []+                            }+                          "^+^"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 21+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17+                                     , srcInfoPoints = []+                                     }+                                   "liftU2")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19+                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20+                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19+                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20+                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20+                                     , srcInfoPoints = []+                                     }+                                   "+")))))+                    Nothing)+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 8+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 4+                              , SrcSpan "tests/examples/DerivingVia.hs" 384 4 384 7+                              , SrcSpan "tests/examples/DerivingVia.hs" 384 7 384 8+                              ]+                          }+                        "^-^"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 38+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 15+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 384 12 384 15+                                              , srcInfoPoints = []+                                              }+                                            "Num")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17+                                           , srcInfoPoints = []+                                           }+                                         "a"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 38+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 384 25 384 27 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 24+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22+                                     , srcInfoPoints = []+                                     }+                                   "f"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 38+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 32 384 34 ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 31+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29+                                        , srcInfoPoints = []+                                        }+                                      "f"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31+                                        , srcInfoPoints = []+                                        }+                                      "a")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 38+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36+                                        , srcInfoPoints = []+                                        }+                                      "f"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38+                                        , srcInfoPoints = []+                                        }+                                      "a")))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32+                      , srcInfoPoints = []+                      }+                    [ InfixMatch+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4+                                , srcInfoPoints = []+                                }+                              "x"))+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 5 385 8+                             , srcInfoPoints = []+                             }+                           "^-^")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10+                                 , srcInfoPoints = []+                                 }+                               "y")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 32+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 12 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 32+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14+                                         , srcInfoPoints = []+                                         }+                                       "x")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18+                                         , srcInfoPoints = []+                                         }+                                       "^+^")))+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 32+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 30+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 23+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 385 19 385 23+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 385 19 385 23+                                               , srcInfoPoints = []+                                               }+                                             "fmap")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 24 385 30+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 385 24 385 30+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 385 24 385 30+                                               , srcInfoPoints = []+                                               }+                                             "negate"))))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 385 31 385 32+                                            , srcInfoPoints = []+                                            }+                                          "y"))))))+                        Nothing+                    ])+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 9+                          , srcInfoPoints = []+                          }+                        "liftU2"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 47+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 386 27 386 29 ]+                         }+                       (TyParen+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 26+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 14+                                , SrcSpan "tests/examples/DerivingVia.hs" 386 25 386 26+                                ]+                            }+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 25+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 16 386 18 ]+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15+                                     , srcInfoPoints = []+                                     }+                                   "a"))+                             (TyFun+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 25+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 386 21 386 23 ]+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20+                                        , srcInfoPoints = []+                                        }+                                      "a"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25+                                        , srcInfoPoints = []+                                        }+                                      "a")))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 47+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 34 386 36 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 33+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31+                                     , srcInfoPoints = []+                                     }+                                   "f"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 47+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 41 386 43 ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 40+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38+                                        , srcInfoPoints = []+                                        }+                                      "f"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40+                                        , srcInfoPoints = []+                                        }+                                      "a")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 47+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45+                                        , srcInfoPoints = []+                                        }+                                      "f"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47+                                        , srcInfoPoints = []+                                        }+                                      "a")))))))+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 388 1 395 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 9+                , SrcSpan "tests/examples/DerivingVia.hs" 388 22 388 27+                , SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 3+                , SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 3+                , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18+                           , srcInfoPoints = []+                           }+                         "Additive")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20+                         , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20+                            , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21+                            ]+                        }+                      (ListCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20+                               , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21+                               ]+                           })))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7+                            , srcInfoPoints = []+                            }+                          "zero"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 12+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 9 ]+                         }+                       (List+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 12+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 11+                                , SrcSpan "tests/examples/DerivingVia.hs" 389 11 389 12+                                ]+                            }+                          []))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 9+                             , srcInfoPoints = []+                             }+                           "liftU2")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11+                                 , srcInfoPoints = []+                                 }+                               "f")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 16+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 13 ]+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16+                                      , srcInfoPoints = []+                                      }+                                    "go"))))+                        (Just+                           (BDecls+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 5+                                    , SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 5+                                    , SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 5+                                    , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0+                                    ]+                                }+                              [ FunBind+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18+                                    , srcInfoPoints = []+                                    }+                                  [ Match+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 40+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 7+                                           , srcInfoPoints = []+                                           }+                                         "go")+                                      [ PParen+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 391 8 391 14+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/DerivingVia.hs" 391 8 391 9+                                                , SrcSpan+                                                    "tests/examples/DerivingVia.hs" 391 13 391 14+                                                ]+                                            }+                                          (PInfixApp+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 391 9 391 13+                                               , srcInfoPoints = []+                                               }+                                             (PVar+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs" 391 9 391 10+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           391+                                                           9+                                                           391+                                                           10+                                                     , srcInfoPoints = []+                                                     }+                                                   "x"))+                                             (Special+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        391+                                                        10+                                                        391+                                                        11+                                                  , srcInfoPoints = []+                                                  }+                                                (Cons+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           391+                                                           10+                                                           391+                                                           11+                                                     , srcInfoPoints = []+                                                     }))+                                             (PVar+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        391+                                                        11+                                                        391+                                                        13+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           391+                                                           11+                                                           391+                                                           13+                                                     , srcInfoPoints = []+                                                     }+                                                   "xs")))+                                      , PParen+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 391 15 391 21+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/DerivingVia.hs" 391 15 391 16+                                                , SrcSpan+                                                    "tests/examples/DerivingVia.hs" 391 20 391 21+                                                ]+                                            }+                                          (PInfixApp+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 391 16 391 20+                                               , srcInfoPoints = []+                                               }+                                             (PVar+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        391+                                                        16+                                                        391+                                                        17+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           391+                                                           16+                                                           391+                                                           17+                                                     , srcInfoPoints = []+                                                     }+                                                   "y"))+                                             (Special+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        391+                                                        17+                                                        391+                                                        18+                                                  , srcInfoPoints = []+                                                  }+                                                (Cons+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           391+                                                           17+                                                           391+                                                           18+                                                     , srcInfoPoints = []+                                                     }))+                                             (PVar+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        391+                                                        18+                                                        391+                                                        20+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           391+                                                           18+                                                           391+                                                           20+                                                     , srcInfoPoints = []+                                                     }+                                                   "ys")))+                                      ]+                                      (UnGuardedRhs+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 391 22 391 40+                                           , srcInfoPoints =+                                               [ SrcSpan+                                                   "tests/examples/DerivingVia.hs" 391 22 391 23+                                               ]+                                           }+                                         (InfixApp+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 391 24 391 40+                                              , srcInfoPoints = []+                                              }+                                            (App+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 391 24 391 29+                                                 , srcInfoPoints = []+                                                 }+                                               (App+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          391+                                                          24+                                                          391+                                                          27+                                                    , srcInfoPoints = []+                                                    }+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/DerivingVia.hs"+                                                             391+                                                             24+                                                             391+                                                             25+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/DerivingVia.hs"+                                                                391+                                                                24+                                                                391+                                                                25+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/DerivingVia.hs"+                                                                   391+                                                                   24+                                                                   391+                                                                   25+                                                             , srcInfoPoints = []+                                                             }+                                                           "f")))+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/DerivingVia.hs"+                                                             391+                                                             26+                                                             391+                                                             27+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/DerivingVia.hs"+                                                                391+                                                                26+                                                                391+                                                                27+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/DerivingVia.hs"+                                                                   391+                                                                   26+                                                                   391+                                                                   27+                                                             , srcInfoPoints = []+                                                             }+                                                           "x"))))+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          391+                                                          28+                                                          391+                                                          29+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/DerivingVia.hs"+                                                             391+                                                             28+                                                             391+                                                             29+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/DerivingVia.hs"+                                                                391+                                                                28+                                                                391+                                                                29+                                                          , srcInfoPoints = []+                                                          }+                                                        "y"))))+                                            (QConOp+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 391 30 391 31+                                                 , srcInfoPoints = []+                                                 }+                                               (Special+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          391+                                                          30+                                                          391+                                                          31+                                                    , srcInfoPoints = []+                                                    }+                                                  (Cons+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/DerivingVia.hs"+                                                             391+                                                             30+                                                             391+                                                             31+                                                       , srcInfoPoints = []+                                                       })))+                                            (App+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 391 32 391 40+                                                 , srcInfoPoints = []+                                                 }+                                               (App+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          391+                                                          32+                                                          391+                                                          37+                                                    , srcInfoPoints = []+                                                    }+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/DerivingVia.hs"+                                                             391+                                                             32+                                                             391+                                                             34+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/DerivingVia.hs"+                                                                391+                                                                32+                                                                391+                                                                34+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/DerivingVia.hs"+                                                                   391+                                                                   32+                                                                   391+                                                                   34+                                                             , srcInfoPoints = []+                                                             }+                                                           "go")))+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/DerivingVia.hs"+                                                             391+                                                             35+                                                             391+                                                             37+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/DerivingVia.hs"+                                                                391+                                                                35+                                                                391+                                                                37+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/DerivingVia.hs"+                                                                   391+                                                                   35+                                                                   391+                                                                   37+                                                             , srcInfoPoints = []+                                                             }+                                                           "xs"))))+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          391+                                                          38+                                                          391+                                                          40+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/DerivingVia.hs"+                                                             391+                                                             38+                                                             391+                                                             40+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/DerivingVia.hs"+                                                                391+                                                                38+                                                                391+                                                                40+                                                          , srcInfoPoints = []+                                                          }+                                                        "ys"))))))+                                      Nothing+                                  , Match+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 18+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 7+                                           , srcInfoPoints = []+                                           }+                                         "go")+                                      [ PList+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 392 8 392 10+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/DerivingVia.hs" 392 8 392 9+                                                , SrcSpan+                                                    "tests/examples/DerivingVia.hs" 392 9 392 10+                                                ]+                                            }+                                          []+                                      , PVar+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 392 11 392 13+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 392 11 392 13+                                               , srcInfoPoints = []+                                               }+                                             "ys")+                                      ]+                                      (UnGuardedRhs+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 392 14 392 18+                                           , srcInfoPoints =+                                               [ SrcSpan+                                                   "tests/examples/DerivingVia.hs" 392 14 392 15+                                               ]+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 392 16 392 18+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 392 16 392 18+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          392+                                                          16+                                                          392+                                                          18+                                                    , srcInfoPoints = []+                                                    }+                                                  "ys"))))+                                      Nothing+                                  , Match+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 18+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 7+                                           , srcInfoPoints = []+                                           }+                                         "go")+                                      [ PVar+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DerivingVia.hs" 393 8 393 10+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 393 8 393 10+                                               , srcInfoPoints = []+                                               }+                                             "xs")+                                      , PList+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 393 11 393 13+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/DerivingVia.hs" 393 11 393 12+                                                , SrcSpan+                                                    "tests/examples/DerivingVia.hs" 393 12 393 13+                                                ]+                                            }+                                          []+                                      ]+                                      (UnGuardedRhs+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 393 14 393 18+                                           , srcInfoPoints =+                                               [ SrcSpan+                                                   "tests/examples/DerivingVia.hs" 393 14 393 15+                                               ]+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 393 16 393 18+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DerivingVia.hs" 393 16 393 18+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DerivingVia.hs"+                                                          393+                                                          16+                                                          393+                                                          18+                                                    , srcInfoPoints = []+                                                    }+                                                  "xs"))))+                                      Nothing+                                  ]+                              ]))+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 395 1 401 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 9+                , SrcSpan "tests/examples/DerivingVia.hs" 395 25 395 30+                , SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 3+                , SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 3+                , SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 3+                , SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 3+                , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18+                           , srcInfoPoints = []+                           }+                         "Additive")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24+                           , srcInfoPoints = []+                           }+                         "Maybe")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7+                            , srcInfoPoints = []+                            }+                          "zero"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 17+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 9 ]+                         }+                       (Con+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17+                                  , srcInfoPoints = []+                                  }+                                "Nothing"))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 44+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 9+                             , srcInfoPoints = []+                             }+                           "liftU2")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11+                                 , srcInfoPoints = []+                                 }+                               "f")+                        , PParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 20+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 13+                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 19 397 20+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 19+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17+                                       , srcInfoPoints = []+                                       }+                                     "Just"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19+                                        , srcInfoPoints = []+                                        }+                                      "a")+                               ])+                        , PParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 29+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 22+                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 28 397 29+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 28+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26+                                       , srcInfoPoints = []+                                       }+                                     "Just"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28+                                        , srcInfoPoints = []+                                        }+                                      "b")+                               ])+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 44+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 31 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 44+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36+                                         , srcInfoPoints = []+                                         }+                                       "Just")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 44+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 38+                                       , SrcSpan "tests/examples/DerivingVia.hs" 397 43 397 44+                                       ]+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 43+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 41+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 397 38 397 39+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 397 38 397 39+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        397+                                                        38+                                                        397+                                                        39+                                                  , srcInfoPoints = []+                                                  }+                                                "f")))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 397 40 397 41+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 397 40 397 41+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        397+                                                        40+                                                        397+                                                        41+                                                  , srcInfoPoints = []+                                                  }+                                                "a"))))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 397 42 397 43+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 397 42 397 43+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 397 42 397 43+                                               , srcInfoPoints = []+                                               }+                                             "b")))))))+                        Nothing+                    , Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 27+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 9+                             , srcInfoPoints = []+                             }+                           "liftU2")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 398 10 398 11+                              , srcInfoPoints = []+                              }+                        , PApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19+                                    , srcInfoPoints = []+                                    }+                                  "Nothing"))+                            []+                        , PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22+                                 , srcInfoPoints = []+                                 }+                               "ys")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 27+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 24 ]+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27+                                      , srcInfoPoints = []+                                      }+                                    "ys"))))+                        Nothing+                    , Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 27+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 9+                             , srcInfoPoints = []+                             }+                           "liftU2")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 399 10 399 11+                              , srcInfoPoints = []+                              }+                        , PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14+                                 , srcInfoPoints = []+                                 }+                               "xs")+                        , PApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22+                                    , srcInfoPoints = []+                                    }+                                  "Nothing"))+                            []+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 27+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 24 ]+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27+                                      , srcInfoPoints = []+                                      }+                                    "xs"))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 401 1 405 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 9+                , SrcSpan "tests/examples/DerivingVia.hs" 401 56 401 61+                , SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 3+                , SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 3+                , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 55+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21+                                    , srcInfoPoints = []+                                    }+                                  "Applicative")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23+                                 , srcInfoPoints = []+                                 }+                               "f"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 55+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35+                           , srcInfoPoints = []+                           }+                         "Additive")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 55+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 37+                         , SrcSpan "tests/examples/DerivingVia.hs" 401 54 401 55+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 54+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52+                                 , srcInfoPoints = []+                                 }+                               "WrapApplicative")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54+                              , srcInfoPoints = []+                              }+                            "f"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7+                            , srcInfoPoints = []+                            }+                          "zero"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 11 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 18+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16+                                     , srcInfoPoints = []+                                     }+                                   "pure")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18+                               , srcInfoPoints = []+                               }+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18+                                  , srcInfoPoints = []+                                  }+                                0+                                "0"))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9+                            , srcInfoPoints = []+                            }+                          "liftU2"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 11 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18+                                  , srcInfoPoints = []+                                  }+                                "liftA2"))))+                    Nothing)+             ])+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 67+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 9+                , SrcSpan "tests/examples/DerivingVia.hs" 405 41 405 49+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 405 10 405 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 405 39 405 40+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 39+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30+                                 , srcInfoPoints = []+                                 }+                               "WrapApplicative")))+                      (TyParen+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 39+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 32+                               , SrcSpan "tests/examples/DerivingVia.hs" 405 38 405 39+                               ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 38+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36+                                     ]+                                 }+                               (Special+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33+                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35+                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36+                                        ]+                                    }+                                  (FunCon+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33+                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35+                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36+                                           ]+                                       })))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38+                                    , srcInfoPoints = []+                                    }+                                  "a"))))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58+                           , srcInfoPoints = []+                           }+                         "Additive")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 67+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 60+                         , SrcSpan "tests/examples/DerivingVia.hs" 405 66 405 67+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 66+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61+                               , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63+                               , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64+                               ]+                           }+                         (Special+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61+                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63+                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64+                                  ]+                              }+                            (FunCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64+                                     ]+                                 })))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66+                              , srcInfoPoints = []+                              }+                            "a"))))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 66+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 9+                , SrcSpan "tests/examples/DerivingVia.hs" 406 41 406 49+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 406 10 406 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 39+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 406 38 406 39+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 38+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30+                                 , srcInfoPoints = []+                                 }+                               "WrapApplicative")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38+                                 , srcInfoPoints = []+                                 }+                               "Complex")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58+                           , srcInfoPoints = []+                           }+                         "Additive")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66+                           , srcInfoPoints = []+                           }+                         "Complex")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 67+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 9+                , SrcSpan "tests/examples/DerivingVia.hs" 407 41 407 49+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 407 10 407 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 407 39 407 40+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 39+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30+                                 , srcInfoPoints = []+                                 }+                               "WrapApplicative")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39+                                 , srcInfoPoints = []+                                 }+                               "Identity")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58+                           , srcInfoPoints = []+                           }+                         "Additive")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67+                           , srcInfoPoints = []+                           }+                         "Identity")))))+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 409 1 413 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 9+                , SrcSpan "tests/examples/DerivingVia.hs" 409 27 409 32+                , SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 3+                , SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 3+                , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18+                           , srcInfoPoints = []+                           }+                         "Additive")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26+                           , srcInfoPoints = []+                           }+                         "ZipList")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7+                            , srcInfoPoints = []+                            }+                          "zero"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 9 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 20+                            , srcInfoPoints = []+                            }+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17+                                     , srcInfoPoints = []+                                     }+                                   "ZipList")))+                          (List+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 19+                                   , SrcSpan "tests/examples/DerivingVia.hs" 410 19 410 20+                                   ]+                               }+                             [])))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 9+                             , srcInfoPoints = []+                             }+                           "liftU2")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11+                                 , srcInfoPoints = []+                                 }+                               "f")+                        , PParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 24+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 13+                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 23 411 24+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 23+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20+                                       , srcInfoPoints = []+                                       }+                                     "ZipList"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23+                                        , srcInfoPoints = []+                                        }+                                      "xs")+                               ])+                        , PParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 37+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 26+                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 36 411 37+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 36+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33+                                       , srcInfoPoints = []+                                       }+                                     "ZipList"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36+                                        , srcInfoPoints = []+                                        }+                                      "ys")+                               ])+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 64+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 39 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 64+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47+                                         , srcInfoPoints = []+                                         }+                                       "ZipList")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 64+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 49+                                       , SrcSpan "tests/examples/DerivingVia.hs" 411 63 411 64+                                       ]+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 63+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 60+                                         , srcInfoPoints = []+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 411 49 411 57+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 411 49 411 55+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        411+                                                        49+                                                        411+                                                        55+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           411+                                                           49+                                                           411+                                                           55+                                                     , srcInfoPoints = []+                                                     }+                                                   "liftU2")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 411 56 411 57+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        411+                                                        56+                                                        411+                                                        57+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/DerivingVia.hs"+                                                           411+                                                           56+                                                           411+                                                           57+                                                     , srcInfoPoints = []+                                                     }+                                                   "f"))))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 411 58 411 60+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 411 58 411 60+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DerivingVia.hs"+                                                        411+                                                        58+                                                        411+                                                        60+                                                  , srcInfoPoints = []+                                                  }+                                                "xs"))))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 411 61 411 63+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 411 61 411 63+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 411 61 411 63+                                               , srcInfoPoints = []+                                               }+                                             "ys")))))))+                        Nothing+                    ])+             ])+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 413 1 419 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 6+                , SrcSpan "tests/examples/DerivingVia.hs" 413 37 413 42+                , SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 3+                , SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 3+                , SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 3+                , SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 3+                , SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 3+                , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 0+                ]+            }+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]+                  }+                (TypeA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15+                                 , srcInfoPoints = []+                                 }+                               "Additive")))+                      (TyParen+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 24+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 17+                               , SrcSpan "tests/examples/DerivingVia.hs" 413 23 413 24+                               ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 23+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21+                                       , srcInfoPoints = []+                                       }+                                     "Diff")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23+                                    , srcInfoPoints = []+                                    }+                                  "p"))))))))+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 36+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34+                     , srcInfoPoints = []+                     }+                   "Affine"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36+                     , srcInfoPoints = []+                     }+                   "p")))+          []+          (Just+             [ ClsTyFam+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 30+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 7 ]+                   }+                 (DHApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 14+                      , srcInfoPoints = []+                      }+                    (DHead+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12+                            , srcInfoPoints = []+                            }+                          "Diff"))+                    (UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14+                            , srcInfoPoints = []+                            }+                          "p")))+                 (Just+                    (KindSig+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 30+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 17 ]+                         }+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 30+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 414 23 414 25 ]+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22+                                     , srcInfoPoints = []+                                     }+                                   "Type")))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30+                                     , srcInfoPoints = []+                                     }+                                   "Type"))))))+                 Nothing+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 8+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 4+                              , SrcSpan "tests/examples/DerivingVia.hs" 416 4 416 7+                              , SrcSpan "tests/examples/DerivingVia.hs" 416 7 416 8+                              ]+                          }+                        ".-."+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 43+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 15+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 416 12 416 15+                                              , srcInfoPoints = []+                                              }+                                            "Num")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17+                                           , srcInfoPoints = []+                                           }+                                         "a"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 43+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 416 25 416 27 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 24+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22+                                     , srcInfoPoints = []+                                     }+                                   "p"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 43+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 32 416 34 ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 31+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29+                                        , srcInfoPoints = []+                                        }+                                      "p"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31+                                        , srcInfoPoints = []+                                        }+                                      "a")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 43+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 41+                                     , srcInfoPoints = []+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 416 35 416 39+                                              , srcInfoPoints = []+                                              }+                                            "Diff")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41+                                           , srcInfoPoints = []+                                           }+                                         "p")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43+                                        , srcInfoPoints = []+                                        }+                                      "a")))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 8+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 4+                              , SrcSpan "tests/examples/DerivingVia.hs" 417 4 417 7+                              , SrcSpan "tests/examples/DerivingVia.hs" 417 7 417 8+                              ]+                          }+                        ".+^"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 43+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 15+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 417 12 417 15+                                              , srcInfoPoints = []+                                              }+                                            "Num")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17+                                           , srcInfoPoints = []+                                           }+                                         "a"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 43+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 417 25 417 27 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 24+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22+                                     , srcInfoPoints = []+                                     }+                                   "p"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 43+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 37 417 39 ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 36+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 34+                                     , srcInfoPoints = []+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 417 28 417 32+                                              , srcInfoPoints = []+                                              }+                                            "Diff")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34+                                           , srcInfoPoints = []+                                           }+                                         "p")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36+                                        , srcInfoPoints = []+                                        }+                                      "a")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 43+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41+                                        , srcInfoPoints = []+                                        }+                                      "p"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43+                                        , srcInfoPoints = []+                                        }+                                      "a")))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 8+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 4+                              , SrcSpan "tests/examples/DerivingVia.hs" 418 4 418 7+                              , SrcSpan "tests/examples/DerivingVia.hs" 418 7 418 8+                              ]+                          }+                        ".-^"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 43+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20+                                            ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 15+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 418 12 418 15+                                              , srcInfoPoints = []+                                              }+                                            "Num")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17+                                           , srcInfoPoints = []+                                           }+                                         "a"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 43+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 418 25 418 27 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 24+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22+                                     , srcInfoPoints = []+                                     }+                                   "p"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 43+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 37 418 39 ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 36+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 34+                                     , srcInfoPoints = []+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DerivingVia.hs" 418 28 418 32+                                              , srcInfoPoints = []+                                              }+                                            "Diff")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34+                                           , srcInfoPoints = []+                                           }+                                         "p")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36+                                        , srcInfoPoints = []+                                        }+                                      "a")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 43+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41+                                        , srcInfoPoints = []+                                        }+                                      "p"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43+                                        , srcInfoPoints = []+                                        }+                                      "a")))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32+                      , srcInfoPoints = []+                      }+                    [ InfixMatch+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4+                                , srcInfoPoints = []+                                }+                              "p"))+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 5 419 8+                             , srcInfoPoints = []+                             }+                           ".-^")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10+                                 , srcInfoPoints = []+                                 }+                               "v")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 32+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 12 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 32+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14+                                         , srcInfoPoints = []+                                         }+                                       "p")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18+                                         , srcInfoPoints = []+                                         }+                                       ".+^")))+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 32+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 30+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 23+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 419 19 419 23+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 419 19 419 23+                                               , srcInfoPoints = []+                                               }+                                             "fmap")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 24 419 30+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 419 24 419 30+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 419 24 419 30+                                               , srcInfoPoints = []+                                               }+                                             "negate"))))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 419 31 419 32+                                            , srcInfoPoints = []+                                            }+                                          "v"))))))+                        Nothing+                    ])+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 49+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 425 26 425 27 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 25+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 23+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21+                        , srcInfoPoints = []+                        }+                      "WrapAdditive"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23+                        , srcInfoPoints = []+                        }+                      "f")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 43+                      , srcInfoPoints = []+                      }+                    "WrappedAdditive")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 49+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 45+                           , SrcSpan "tests/examples/DerivingVia.hs" 425 48 425 49+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 48+                          , srcInfoPoints = []+                          }+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46+                                , srcInfoPoints = []+                                }+                              "f"))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          []+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 427 1 435 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 9+                , SrcSpan "tests/examples/DerivingVia.hs" 427 48 427 53+                , SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 3+                , SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 3+                , SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 3+                , SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 3+                , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 47+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18+                                    , srcInfoPoints = []+                                    }+                                  "Additive")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20+                                 , srcInfoPoints = []+                                 }+                               "f"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 47+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30+                           , srcInfoPoints = []+                           }+                         "Affine")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 427 31 427 47+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 427 31 427 32+                         , SrcSpan "tests/examples/DerivingVia.hs" 427 46 427 47+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 46+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44+                                 , srcInfoPoints = []+                                 }+                               "WrapAdditive")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 427 45 427 46+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 45 427 46+                              , srcInfoPoints = []+                              }+                            "f"))))))+          (Just+             [ InsType+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 33+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 7+                       , SrcSpan "tests/examples/DerivingVia.hs" 428 30 428 31+                       ]+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 29+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12+                               , srcInfoPoints = []+                               }+                             "Diff")))+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 428 13 428 29+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 428 13 428 14+                             , SrcSpan "tests/examples/DerivingVia.hs" 428 28 428 29+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 28+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26+                                     , srcInfoPoints = []+                                     }+                                   "WrapAdditive")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 428 27 428 28+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 428 27 428 28+                                  , srcInfoPoints = []+                                  }+                                "f")))))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 428 32 428 33+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 428 32 428 33+                         , srcInfoPoints = []+                         }+                       "f"))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52+                      , srcInfoPoints = []+                      }+                    [ InfixMatch+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52+                          , srcInfoPoints = []+                          }+                        (PApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 18+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 18+                                   , srcInfoPoints = []+                                   }+                                 "WrappedAdditive"))+                           [ PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 430 19 430 20+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 430 19 430 20+                                    , srcInfoPoints = []+                                    }+                                  "a")+                           ])+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 430 21 430 24+                             , srcInfoPoints = []+                             }+                           ".-.")+                        [ PApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 42+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 40+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 40+                                    , srcInfoPoints = []+                                    }+                                  "WrappedAdditive"))+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 430 41 430 42+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 430 41 430 42+                                     , srcInfoPoints = []+                                     }+                                   "b")+                            ]+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 430 43 430 52+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 430 43 430 44 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 52+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46+                                         , srcInfoPoints = []+                                         }+                                       "a")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50+                                         , srcInfoPoints = []+                                         }+                                       "^-^")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52+                                         , srcInfoPoints = []+                                         }+                                       "b")))))+                        Nothing+                    ])+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54+                      , srcInfoPoints = []+                      }+                    [ InfixMatch+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54+                          , srcInfoPoints = []+                          }+                        (PApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 18+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 18+                                   , srcInfoPoints = []+                                   }+                                 "WrappedAdditive"))+                           [ PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 431 19 431 20+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 431 19 431 20+                                    , srcInfoPoints = []+                                    }+                                  "a")+                           ])+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 431 21 431 24+                             , srcInfoPoints = []+                             }+                           ".+^")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 431 25 431 26+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 431 25 431 26+                                 , srcInfoPoints = []+                                 }+                               "b")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 431 27 431 54+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 431 27 431 28 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 54+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44+                                         , srcInfoPoints = []+                                         }+                                       "WrappedAdditive")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 431 45 431 54+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 431 45 431 46+                                       , SrcSpan "tests/examples/DerivingVia.hs" 431 53 431 54+                                       ]+                                   }+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 431 46 431 53+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 431 46 431 47+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 431 46 431 47+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 431 46 431 47+                                               , srcInfoPoints = []+                                               }+                                             "a")))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 431 48 431 51+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 431 48 431 51+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 431 48 431 51+                                               , srcInfoPoints = []+                                               }+                                             "^+^")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 431 52 431 53+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 431 52 431 53+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 431 52 431 53+                                               , srcInfoPoints = []+                                               }+                                             "b")))))))+                        Nothing+                    ])+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54+                      , srcInfoPoints = []+                      }+                    [ InfixMatch+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54+                          , srcInfoPoints = []+                          }+                        (PApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 18+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 18+                                   , srcInfoPoints = []+                                   }+                                 "WrappedAdditive"))+                           [ PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 432 19 432 20+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 432 19 432 20+                                    , srcInfoPoints = []+                                    }+                                  "a")+                           ])+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 432 21 432 24+                             , srcInfoPoints = []+                             }+                           ".-^")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 432 25 432 26+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 432 25 432 26+                                 , srcInfoPoints = []+                                 }+                               "b")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 432 27 432 54+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 432 27 432 28 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 54+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44+                                         , srcInfoPoints = []+                                         }+                                       "WrappedAdditive")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 432 45 432 54+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 432 45 432 46+                                       , SrcSpan "tests/examples/DerivingVia.hs" 432 53 432 54+                                       ]+                                   }+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 432 46 432 53+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 432 46 432 47+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 432 46 432 47+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 432 46 432 47+                                               , srcInfoPoints = []+                                               }+                                             "a")))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 432 48 432 51+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 432 48 432 51+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 432 48 432 51+                                               , srcInfoPoints = []+                                               }+                                             "^-^")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 432 52 432 53+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/DerivingVia.hs" 432 52 432 53+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DerivingVia.hs" 432 52 432 53+                                               , srcInfoPoints = []+                                               }+                                             "b")))))))+                        Nothing+                    ])+             ])+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 62+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 9+                , SrcSpan "tests/examples/DerivingVia.hs" 435 38 435 46+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 435 10 435 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 435 14 435 37+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 435 14 435 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 435 36 435 37+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 36+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27+                                 , srcInfoPoints = []+                                 }+                               "WrapAdditive")))+                      (TyParen+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 435 28 435 36+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 435 28 435 29+                               , SrcSpan "tests/examples/DerivingVia.hs" 435 35 435 36+                               ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 35+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30+                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32+                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33+                                     ]+                                 }+                               (Special+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30+                                        , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32+                                        , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33+                                        ]+                                    }+                                  (FunCon+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30+                                           , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32+                                           , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33+                                           ]+                                       })))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 435 34 435 35+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 435 34 435 35+                                    , srcInfoPoints = []+                                    }+                                  "a"))))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 62+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 62+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53+                           , srcInfoPoints = []+                           }+                         "Affine")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 435 54 435 62+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 435 54 435 55+                         , SrcSpan "tests/examples/DerivingVia.hs" 435 61 435 62+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 61+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56+                               , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58+                               , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59+                               ]+                           }+                         (Special+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56+                                  , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58+                                  , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59+                                  ]+                              }+                            (FunCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56+                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58+                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59+                                     ]+                                 })))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 435 60 435 61+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 435 60 435 61+                              , srcInfoPoints = []+                              }+                            "a"))))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 56+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 9+                , SrcSpan "tests/examples/DerivingVia.hs" 437 38 437 46+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 437 10 437 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 437 14 437 31+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 437 14 437 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 437 30 437 31+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 30+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27+                                 , srcInfoPoints = []+                                 }+                               "WrapAdditive")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29+                               , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30+                               ]+                           }+                         (Special+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29+                                  , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30+                                  ]+                              }+                            (ListCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29+                                     , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30+                                     ]+                                 })))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 56+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 56+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53+                           , srcInfoPoints = []+                           }+                         "Affine")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55+                         , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55+                            , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56+                            ]+                        }+                      (ListCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55+                               , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56+                               ]+                           })))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 61+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 9+                , SrcSpan "tests/examples/DerivingVia.hs" 439 38 439 46+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 439 10 439 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 439 14 439 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 439 14 439 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 439 35 439 36+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 35+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27+                                 , srcInfoPoints = []+                                 }+                               "WrapAdditive")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35+                                 , srcInfoPoints = []+                                 }+                               "Complex")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 61+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 61+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53+                           , srcInfoPoints = []+                           }+                         "Affine")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61+                           , srcInfoPoints = []+                           }+                         "Complex")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 59+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 9+                , SrcSpan "tests/examples/DerivingVia.hs" 441 38 441 46+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 441 10 441 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 441 14 441 34+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 441 14 441 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 441 33 441 34+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 33+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27+                                 , srcInfoPoints = []+                                 }+                               "WrapAdditive")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33+                                 , srcInfoPoints = []+                                 }+                               "Maybe")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 59+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 59+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53+                           , srcInfoPoints = []+                           }+                         "Affine")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59+                           , srcInfoPoints = []+                           }+                         "Maybe")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 61+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 9+                , SrcSpan "tests/examples/DerivingVia.hs" 443 38 443 46+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 443 10 443 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 443 14 443 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 443 14 443 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 443 35 443 36+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 35+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27+                                 , srcInfoPoints = []+                                 }+                               "WrapAdditive")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35+                                 , srcInfoPoints = []+                                 }+                               "ZipList")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 61+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 61+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53+                           , srcInfoPoints = []+                           }+                         "Affine")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61+                           , srcInfoPoints = []+                           }+                         "ZipList")))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 62+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 9+                , SrcSpan "tests/examples/DerivingVia.hs" 445 38 445 46+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 445 10 445 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 445 14 445 37+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 445 14 445 15+                         , SrcSpan "tests/examples/DerivingVia.hs" 445 36 445 37+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 36+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27+                                 , srcInfoPoints = []+                                 }+                               "WrapAdditive")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36+                                 , srcInfoPoints = []+                                 }+                               "Identity")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 62+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 62+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53+                           , srcInfoPoints = []+                           }+                         "Affine")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62+                           , srcInfoPoints = []+                           }+                         "Identity")))))+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 451 1 452 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 451 1 451 6+                , SrcSpan "tests/examples/DerivingVia.hs" 451 16 451 21+                , SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 3+                , SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 15+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 13+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 11+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 9+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 9+                           , srcInfoPoints = []+                           }+                         "C2"))+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 451 10 451 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 451 10 451 11+                           , srcInfoPoints = []+                           }+                         "a")))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 451 12 451 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 451 12 451 13+                        , srcInfoPoints = []+                        }+                      "b")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 451 14 451 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 451 14 451 15+                     , srcInfoPoints = []+                     }+                   "c")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 20+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DerivingVia.hs" 452 6 452 8 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 20+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DerivingVia.hs" 452 6 452 8 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 5+                          , srcInfoPoints = []+                          }+                        "c2"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 452 11 452 13 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 10+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 10+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 20+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DerivingVia.hs" 452 16 452 18 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 15+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 15+                                  , srcInfoPoints = []+                                  }+                                "b"))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 452 19 452 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 452 19 452 20+                                  , srcInfoPoints = []+                                  }+                                "c")))))+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 454 1 457 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 9+                , SrcSpan "tests/examples/DerivingVia.hs" 454 29 454 34+                , SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 3+                , SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 28+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 28+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 16+                     , srcInfoPoints = []+                     }+                   (IHApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 14+                        , srcInfoPoints = []+                        }+                      (IHCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12+                                 , srcInfoPoints = []+                                 }+                               "C2")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 454 13 454 14+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 13 454 14+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 454 15 454 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 454 15 454 16+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 454 17 454 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia.hs" 454 17 454 18+                         , SrcSpan "tests/examples/DerivingVia.hs" 454 27 454 28+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 27+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 25+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23+                                    , srcInfoPoints = []+                                    }+                                  "Const")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 24 454 25+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia.hs" 454 24 454 25+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia.hs" 454 26 454 27+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 26 454 27+                              , srcInfoPoints = []+                              }+                            "b"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 5+                             , srcInfoPoints = []+                             }+                           "c2")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 6 455 7+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 6 455 7+                                 , srcInfoPoints = []+                                 }+                               "x")+                        , PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 8 455 9+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 455 10 455 19+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 455 10 455 11 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 19+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17+                                         , srcInfoPoints = []+                                         }+                                       "Const")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    ])+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingVia.hs" 457 1 458 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia.hs" 457 18 457 19 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 17+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 15+                     , srcInfoPoints = []+                     }+                   "Fweemp"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia.hs" 457 16 457 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia.hs" 457 16 457 17+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 28+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 28+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 26+                      , srcInfoPoints = []+                      }+                    "Fweemp")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 457 27 457 28+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 457 27 457 28+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia.hs" 458 3 458 20+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia.hs" 458 3 458 11 ]+                }+              (Just+                 (DerivVia+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia.hs" 459 8 459 11+                      , srcInfoPoints = []+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia.hs" 459 12 459 33+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia.hs" 459 12 459 13+                             , SrcSpan "tests/examples/DerivingVia.hs" 459 32 459 33+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 32+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 20+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18+                                        , srcInfoPoints = []+                                        }+                                      "Const")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 459 19 459 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 459 19 459 20+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyKind+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia.hs" 459 21 459 32+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 459 21 459 22+                                   , SrcSpan "tests/examples/DerivingVia.hs" 459 24 459 26+                                   , SrcSpan "tests/examples/DerivingVia.hs" 459 31 459 32+                                   ]+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 459 22 459 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 459 22 459 23+                                     , srcInfoPoints = []+                                     }+                                   "b"))+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31+                                        , srcInfoPoints = []+                                        }+                                      "Type"))))))))+              [ IParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia.hs" 458 12 458 20+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/DerivingVia.hs" 458 12 458 13+                        , SrcSpan "tests/examples/DerivingVia.hs" 458 19 458 20+                        ]+                    }+                  (IRule+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 19+                       , srcInfoPoints = []+                       }+                     Nothing+                     Nothing+                     (IHApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 19+                          , srcInfoPoints = []+                          }+                        (IHApp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 17+                             , srcInfoPoints = []+                             }+                           (IHCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15+                                      , srcInfoPoints = []+                                      }+                                    "C2")))+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 458 16 458 17+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia.hs" 458 16 458 17+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia.hs" 458 18 458 19+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia.hs" 458 18 458 19+                                , srcInfoPoints = []+                                }+                              "b"))))+              ]+          ]+      ]+  , [ Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 38 1 38 6) "---"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 39 1 39 18)+        " Simple example"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 40 1 40 6) "---"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 46 1 46 6) "---"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 47 1 47 25)+        " Eta reduction at work"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 48 1 48 6) "---"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 62 1 62 6) "---"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 63 1 63 22)+        " Monad transformers"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 64 1 64 6) "---"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 68 1 68 22)+        " From `constraints'"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 78 1 78 52)+        " With `-XQuantifiedConstraints' this just becomes"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 79 1 79 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 80 1 80 68)+        "    type Lifting cls  trans = forall mm. cls mm => cls (trans mm)"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 81 1 81 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 82 1 82 52)+        "    type LiftingMonad trans = Lifting Monad trans"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 83 1 83 3) ""+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 142 1 142 6) "---"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 143 1 143 32)+        " Using tuples in a `via` type"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 144 1 144 6) "---"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 153 1 153 6) "---"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 154 1 154 23)+        " Abstract data types"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 155 1 155 6) "---"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 167 1 167 5) "--"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 168 1 168 18)+        " Testing parser"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 169 1 169 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 183 1 183 5) "--"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 184 1 184 23)+        " From Baldur's notes"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 185 1 185 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 187 1 187 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 188 1 188 5) " 1"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 189 1 189 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 227 1 227 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 228 1 228 5) " 2"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 229 1 229 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 243 1 243 8) " data"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 262 1 262 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 263 1 263 5) " 3"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 264 1 264 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 290 1 290 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 291 1 291 5) " 4"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 292 1 292 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 324 1 324 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 325 1 325 5) " 5"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 326 1 326 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 340 1 340 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 341 1 341 5) " 6"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 342 1 342 5) "--"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 343 1 343 116)+        " https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 360 1 360 19)+        "mkLattice_(Bool)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 362 1 362 19)+        "mkLattice_(Char)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 364 1 364 18)+        "mkLattice_(Int)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 366 1 366 22)+        "mkLattice_(Integer)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 368 1 368 20)+        "mkLattice_(Float)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 370 1 370 21)+        "mkLattice_(Double)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 372 1 372 23)+        "mkLattice_(Rational)"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 375 1 375 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 376 1 376 5) " 7"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 377 1 377 5) "--"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 378 1 378 81)+        " https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 421 1 421 79)+        " #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \\"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 422 1 422 85)+        "   (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \\"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 423 1 423 42)+        "   (.-^) = (^-^) ; {-# INLINE (.-^) #-}"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 424 1 424 40)+        " #define ADDITIVE(T) ADDITIVEC((), T)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 434 1 434 22)+        " ADDITIVE(((->) a))"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 436 1 436 16)+        " ADDITIVE([])"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 438 1 438 21)+        " ADDITIVE(Complex)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 440 1 440 19)+        " ADDITIVE(Maybe)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 442 1 442 21)+        " ADDITIVE(ZipList)"+    , Comment+        False+        (SrcSpan "tests/examples/DerivingVia.hs" 444 1 444 22)+        " ADDITIVE(Identity)"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 447 1 447 5) "--"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 448 1 448 5) " 8"+    , Comment+        False (SrcSpan "tests/examples/DerivingVia.hs" 449 1 449 5) "--"+    ]+  )
+ tests/examples/DerivingVia.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingVia.hs.prettyprinter.golden view
@@ -0,0 +1,418 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeInType #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE UndecidableInstances #-}+module DerivingVia where+import Data.Void+import Data.Complex+import Data.Functor.Const+import Data.Functor.Identity+import Data.Ratio+import Control.Monad.Reader+import Control.Monad.State+import Control.Monad.Writer+import Control.Applicative hiding (WrappedMonad(..))+import Data.Bifunctor+import Data.Monoid+import Data.Kind++type f ~> g = forall xx . f xx -> g xx++data Foo a = MkFoo a a+               deriving Show via (Identity (Foo a))++newtype Flip p a b = Flip{runFlip :: p b a}++instance Bifunctor p => Bifunctor (Flip p) where+        bimap f g = Flip . bimap g f . runFlip++instance Bifunctor p => Functor (Flip p a) where+        fmap f = Flip . first f . runFlip++newtype Bar a = MkBar (Either a Int)+                  deriving Functor via (Flip Either Int)++type MTrans = (Type -> Type) -> (Type -> Type)++data Dict c where+        Dict :: c => Dict c++newtype a :- b = Sub (a => Dict b)++infixl 1 \\++(\\) :: a => (b => r) -> (a :- b) -> r+r \\ Sub Dict = r++class LiftingMonad (trans :: MTrans) where+        proof :: Monad m :- Monad (trans m)++instance LiftingMonad (StateT s :: MTrans) where+        proof :: Monad m :- Monad (StateT s m)+        proof = Sub Dict++instance Monoid w => LiftingMonad (WriterT w :: MTrans) where+        proof :: Monad m :- Monad (WriterT w m)+        proof = Sub Dict++instance (LiftingMonad trans, LiftingMonad trans') =>+         LiftingMonad (ComposeT trans trans' :: MTrans)+         where+        proof :: forall m . Monad m :- Monad (ComposeT trans trans' m)+        proof = Sub (Dict \\ proof @trans @(trans' m) \\ proof @trans' @m)++newtype Stack :: MTrans where+        Stack ::+          ReaderT Int (StateT Bool (WriterT String m)) a -> Stack m a+    deriving newtype (Functor, Applicative, Monad, MonadReader Int,+                      MonadState Bool, MonadWriter String)+    deriving (MonadTrans, MFunctor) via (ReaderT Int `ComposeT`+                                           StateT Bool `ComposeT` WriterT String)++class MFunctor (trans :: MTrans) where+        hoist :: Monad m => (m ~> m') -> (trans m ~> trans m')++instance MFunctor (ReaderT r :: MTrans) where+        hoist :: Monad m => (m ~> m') -> (ReaderT r m ~> ReaderT r m')+        hoist nat = ReaderT . fmap nat . runReaderT++instance MFunctor (StateT s :: MTrans) where+        hoist :: Monad m => (m ~> m') -> (StateT s m ~> StateT s m')+        hoist nat = StateT . fmap nat . runStateT++instance MFunctor (WriterT w :: MTrans) where+        hoist :: Monad m => (m ~> m') -> (WriterT w m ~> WriterT w m')+        hoist nat = WriterT . nat . runWriterT++infixr 9 `ComposeT`++newtype ComposeT :: MTrans -> MTrans -> MTrans where+        ComposeT :: {getComposeT :: f (g m) a} -> ComposeT f g m a+    deriving newtype (Functor, Applicative, Monad)++instance (MonadTrans f, MonadTrans g, LiftingMonad g) =>+         MonadTrans (ComposeT f g)+         where+        lift :: forall m . Monad m => m ~> ComposeT f g m+        lift = ComposeT . lift . lift \\ proof @g @m++instance (MFunctor f, MFunctor g, LiftingMonad g) =>+         MFunctor (ComposeT f g)+         where+        hoist ::+              forall m m' . Monad m =>+                (m ~> m') -> (ComposeT f g m ~> ComposeT f g m')+        hoist f = ComposeT . hoist (hoist f) . getComposeT \\ proof @g @m++newtype X a = X (a, a)+                deriving (Semigroup, Monoid) via (Product a, Sum a)+                deriving (Show, Eq) via (a, a)++class C f where+        c :: f a -> Int++newtype X2 f a = X2 (f a)++instance C (X2 f) where+        c = const 0++deriving via (X2 IO) instance C IO++newtype P0 a = P0 a+                 deriving Show via a++newtype P1 a = P1 [a]+                 deriving Show via [a]++newtype P2 a = P2 (a, a)+                 deriving Show via (a, a)++newtype P3 a = P3 (Maybe a)+                 deriving Show via (First a)++newtype P4 a = P4 (Maybe a)+                 deriving Show via (First $ a)++newtype P5 a = P5 a+                 deriving Show via (Identity $ a)++newtype P6 a = P6 [a]+                 deriving Show via ([] $ a)++newtype P7 a = P7 (a, a)+                 deriving Show via (Identity $ (a, a))++newtype P8 a = P8 (Either () a)+                 deriving Functor via (($) (Either ()))++newtype f $ a = APP (f a)+                  deriving newtype Show+                  deriving newtype Functor++newtype WrapApplicative f a = WrappedApplicative (f a)+                                deriving (Functor, Applicative)++instance (Applicative f, Num a) => Num (WrapApplicative f a) where+        (+) = liftA2 (+)+        (*) = liftA2 (*)+        negate = fmap negate+        fromInteger = pure . fromInteger+        abs = fmap abs+        signum = fmap signum++instance (Applicative f, Fractional a) =>+         Fractional (WrapApplicative f a)+         where+        recip = fmap recip+        fromRational = pure . fromRational++instance (Applicative f, Floating a) =>+         Floating (WrapApplicative f a)+         where+        pi = pure pi+        sqrt = fmap sqrt+        exp = fmap exp+        log = fmap log+        sin = fmap sin+        cos = fmap cos+        asin = fmap asin+        atan = fmap atan+        acos = fmap acos+        sinh = fmap sinh+        cosh = fmap cosh+        asinh = fmap asinh+        atanh = fmap atanh+        acosh = fmap acosh++instance (Applicative f, Semigroup s) =>+         Semigroup (WrapApplicative f s)+         where+        (<>) = liftA2 (<>)++instance (Applicative f, Monoid m) => Monoid (WrapApplicative f m)+         where+        mempty = pure mempty++class Pointed p where+        pointed :: a -> p a++newtype WrapMonad f a = WrappedMonad (f a)+                          deriving newtype (Pointed, Monad)++instance (Monad m, Pointed m) => Functor (WrapMonad m) where+        fmap = liftM++instance (Monad m, Pointed m) => Applicative (WrapMonad m) where+        pure = pointed+        (<*>) = ap++data Sorted a = Sorted a a a+                  deriving (Functor, Applicative) via (WrapMonad Sorted)+                  deriving (Num, Fractional, Floating, Semigroup,+                            Monoid) via (WrapApplicative Sorted a)++instance Monad Sorted where+        (>>=) :: Sorted a -> (a -> Sorted b) -> Sorted b+        Sorted a b c >>= f = Sorted a' b' c'+          where Sorted a' _ _ = f a+                Sorted _ b' _ = f b+                Sorted _ _ c' = f c++instance Pointed Sorted where+        pointed :: a -> Sorted a+        pointed a = Sorted a a a++class IsZero a where+        isZero :: a -> Bool++newtype WrappedNumEq a = WrappedNumEq a++newtype WrappedShow a = WrappedShow a++newtype WrappedNumEq2 a = WrappedNumEq2 a++instance (Num a, Eq a) => IsZero (WrappedNumEq a) where+        isZero :: WrappedNumEq a -> Bool+        isZero (WrappedNumEq a) = 0 == a++instance Show a => IsZero (WrappedShow a) where+        isZero :: WrappedShow a -> Bool+        isZero (WrappedShow a) = "0" == show a++instance (Num a, Eq a) => IsZero (WrappedNumEq2 a) where+        isZero :: WrappedNumEq2 a -> Bool+        isZero (WrappedNumEq2 a) = a + a == a++newtype INT = INT Int+                deriving newtype Show+                deriving IsZero via (WrappedNumEq Int)++newtype VOID = VOID Void+                 deriving IsZero via (WrappedShow Void)++class Bifunctor p => Biapplicative p where+        bipure :: a -> b -> p a b+        +        biliftA2 ::+                 (a -> b -> c) -> (a' -> b' -> c') -> p a a' -> p b b' -> p c c'++instance Biapplicative (,) where+        bipure = (,)+        biliftA2 f f' (a, a') (b, b') = (f a b, f' a' b')++newtype WrapBiapp p a b = WrapBiap (p a b)+                            deriving newtype (Bifunctor, Biapplicative, Eq)++instance (Biapplicative p, Num a, Num b) => Num (WrapBiapp p a b)+         where+        (+) = biliftA2 (+) (+)+        (-) = biliftA2 (*) (*)+        (*) = biliftA2 (*) (*)+        negate = bimap negate negate+        abs = bimap abs abs+        signum = bimap signum signum+        fromInteger n = fromInteger n `bipure` fromInteger n++newtype INT2 = INT2 (Int, Int)+                 deriving IsZero via (WrappedNumEq2 (WrapBiapp (,) Int Int))++class Monoid a => MonoidNull a where+        null :: a -> Bool++newtype WrpMonNull a = WRM a+                         deriving (Eq, Semigroup, Monoid)++instance (Eq a, Monoid a) => MonoidNull (WrpMonNull a) where+        null :: WrpMonNull a -> Bool+        null = (== mempty)++deriving via (WrpMonNull Any) instance MonoidNull Any++deriving via () instance MonoidNull ()++deriving via Ordering instance MonoidNull Ordering++class Lattice a where+        sup :: a -> a -> a+        +        (.>=) :: a -> a -> Bool+        +        (.>) :: a -> a -> Bool++newtype WrapOrd a = WrappedOrd a+                      deriving newtype (Eq, Ord)++instance Ord a => Lattice (WrapOrd a) where+        sup = max+        (.>=) = (>=)+        (.>) = (>)++deriving via [a] instance Ord a => Lattice [a]++deriving via (a, b) instance (Ord a, Ord b) => Lattice (a, b)++deriving via Bool instance Lattice Bool++deriving via Char instance Lattice Char++deriving via Int instance Lattice Int++deriving via Integer instance Lattice Integer++deriving via Float instance Lattice Float++deriving via Double instance Lattice Double++deriving via Rational instance Lattice Rational++class Functor f => Additive f where+        zero :: Num a => f a+        +        (^+^) :: Num a => f a -> f a -> f a+        (^+^) = liftU2 (+)+        +        (^-^) :: Num a => f a -> f a -> f a+        x ^-^ y = x ^+^ fmap negate y+        +        liftU2 :: (a -> a -> a) -> f a -> f a -> f a++instance Additive [] where+        zero = []+        liftU2 f = go+          where go (x : xs) (y : ys) = f x y : go xs ys+                go [] ys = ys+                go xs [] = xs++instance Additive Maybe where+        zero = Nothing+        liftU2 f (Just a) (Just b) = Just (f a b)+        liftU2 _ Nothing ys = ys+        liftU2 _ xs Nothing = xs++instance Applicative f => Additive (WrapApplicative f) where+        zero = pure 0+        liftU2 = liftA2++deriving via (WrapApplicative ((->) a)) instance Additive ((->) a)++deriving via (WrapApplicative Complex) instance Additive Complex++deriving via (WrapApplicative Identity) instance Additive Identity++instance Additive ZipList where+        zero = ZipList []+        liftU2 f (ZipList xs) (ZipList ys) = ZipList (liftU2 f xs ys)++class Additive (Diff p) => Affine p where+        type Diff p :: Type -> Type+        +        (.-.) :: Num a => p a -> p a -> Diff p a+        +        (.+^) :: Num a => p a -> Diff p a -> p a+        +        (.-^) :: Num a => p a -> Diff p a -> p a+        p .-^ v = p .+^ fmap negate v++newtype WrapAdditive f a = WrappedAdditive (f a)++instance Additive f => Affine (WrapAdditive f) where+        type Diff (WrapAdditive f) = f+        WrappedAdditive a .-. WrappedAdditive b = a ^-^ b+        WrappedAdditive a .+^ b = WrappedAdditive (a ^+^ b)+        WrappedAdditive a .-^ b = WrappedAdditive (a ^-^ b)++deriving via (WrapAdditive ((->) a)) instance Affine ((->) a)++deriving via (WrapAdditive []) instance Affine []++deriving via (WrapAdditive Complex) instance Affine Complex++deriving via (WrapAdditive Maybe) instance Affine Maybe++deriving via (WrapAdditive ZipList) instance Affine ZipList++deriving via (WrapAdditive Identity) instance Affine Identity++class C2 a b c where+        c2 :: a -> b -> c++instance C2 a b (Const a b) where+        c2 x _ = Const x++newtype Fweemp a = Fweemp a+                     deriving (C2 a b) via (Const a (b :: Type))
+ tests/examples/DerivingVia2.hs view
@@ -0,0 +1,41 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingVia2 where++import Control.Applicative+import Data.Functor.Compose+import Data.Proxy+import Data.Semigroup++newtype App (f :: * -> *) a = App (f a)+  deriving newtype+    (Functor, Applicative)++instance (Applicative f, Semigroup a) => Semigroup (App f a) where+  (<>) = liftA2 (<>)++deriving via (App (Compose (f :: * -> *) g) a)+         instance (Applicative f, Applicative g, Semigroup a)+               => Semigroup (Compose f g a)++class C (a :: k -> *)+instance C Proxy++newtype MyProxy a = MyProxy (Proxy a)+deriving via (Proxy :: * -> *) instance C MyProxy++class Z a b+data T a+data X1 a+data X2 a+data X3 a++deriving via (forall a. T a) instance           Z a (X1 b)+deriving via           (T a) instance forall b. Z a (X2 b)+deriving via (forall a. T a) instance forall b. Z a (X3 b)
+ tests/examples/DerivingVia2.hs.exactprinter.golden view
@@ -0,0 +1,42 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingVia2 where++import Control.Applicative+import Data.Functor.Compose+import Data.Proxy+import Data.Semigroup++newtype App (f :: * -> *) a = App (f a)+  deriving newtype+    (Functor, Applicative)++instance (Applicative f, Semigroup a) => Semigroup (App f a) where+  (<>) = liftA2 (<>)++deriving via( App (Compose (f :: * -> *) g) a)+         instance (Applicative f, Applicative g, Semigroup a)+               => Semigroup (Compose f g a)++class C (a :: k -> *)+instance C Proxy++newtype MyProxy a = MyProxy (Proxy a)+deriving via( Proxy :: * -> *) instance C MyProxy++class Z a b+data T a+data X1 a+data X2 a+data X3 a++deriving via( forall a. T a) instance           Z a (X1 b)+deriving via(           T a) instance forall b. Z a (X2 b)+deriving via( forall a. T a) instance forall b. Z a (X3 b)+
+ tests/examples/DerivingVia2.hs.parser.golden view
@@ -0,0 +1,2346 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 1 42 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 16 1 16 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 20 1 20 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 42 1 42 1+            , SrcSpan "tests/examples/DerivingVia2.hs" 42 1 42 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 26+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 7+                  , SrcSpan "tests/examples/DerivingVia2.hs" 9 21 9 26+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 9 8 9 20+                 , srcInfoPoints = []+                 }+               "DerivingVia2")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 13+                , SrcSpan "tests/examples/DerivingVia2.hs" 1 33 1 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 14 1 32+                , srcInfoPoints = []+                }+              "DerivingStrategies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 13+                , SrcSpan "tests/examples/DerivingVia2.hs" 2 26 2 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 2 14 2 25+                , srcInfoPoints = []+                }+              "DerivingVia"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 13+                , SrcSpan "tests/examples/DerivingVia2.hs" 3 32 3 35+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 3 14 3 31+                , srcInfoPoints = []+                }+              "FlexibleInstances"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 13+                , SrcSpan "tests/examples/DerivingVia2.hs" 4 41 4 44+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 4 14 4 40+                , srcInfoPoints = []+                }+              "GeneralizedNewtypeDeriving"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 13+                , SrcSpan "tests/examples/DerivingVia2.hs" 5 36 5 39+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 5 14 5 35+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 13+                , SrcSpan "tests/examples/DerivingVia2.hs" 6 24 6 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 6 14 6 23+                , srcInfoPoints = []+                }+              "PolyKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 13+                , SrcSpan "tests/examples/DerivingVia2.hs" 7 25 7 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 7 14 7 24+                , srcInfoPoints = []+                }+              "RankNTypes"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 13+                , SrcSpan "tests/examples/DerivingVia2.hs" 8 33 8 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 8 14 8 32+                , srcInfoPoints = []+                }+              "StandaloneDeriving"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 11 8 11 27+                  , srcInfoPoints = []+                  }+                "Control.Applicative"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 28+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 12 8 12 28+                  , srcInfoPoints = []+                  }+                "Data.Functor.Compose"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 18+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 13 8 13 18+                  , srcInfoPoints = []+                  }+                "Data.Proxy"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 22+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 14 8 14 22+                  , srcInfoPoints = []+                  }+                "Data.Semigroup"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 1 18 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 16 29 16 30 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 1 16 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 28+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 26+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 12+                        , srcInfoPoints = []+                        }+                      "App"))+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 16 13 16 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 16 13 16 14+                         , SrcSpan "tests/examples/DerivingVia2.hs" 16 16 16 18+                         , SrcSpan "tests/examples/DerivingVia2.hs" 16 25 16 26+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 16 14 16 15+                        , srcInfoPoints = []+                        }+                      "f")+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 16 19 16 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia2.hs" 16 21 16 23 ]+                        }+                      (TyStar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 16 19 16 20+                           , srcInfoPoints = []+                           })+                      (TyStar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 16 24 16 25+                           , srcInfoPoints = []+                           }))))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 16 27 16 28+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 16 27 16 28+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 40+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 40+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 34+                      , srcInfoPoints = []+                      }+                    "App")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia2.hs" 16 35 16 40+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia2.hs" 16 35 16 36+                           , SrcSpan "tests/examples/DerivingVia2.hs" 16 39 16 40+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 39+                          , srcInfoPoints = []+                          }+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 37+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 37+                                , srcInfoPoints = []+                                }+                              "f"))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia2.hs" 16 38 16 39+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia2.hs" 16 38 16 39+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 17 3 18 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 17 3 17 11+                    , SrcSpan "tests/examples/DerivingVia2.hs" 18 5 18 6+                    , SrcSpan "tests/examples/DerivingVia2.hs" 18 13 18 14+                    , SrcSpan "tests/examples/DerivingVia2.hs" 18 26 18 27+                    ]+                }+              (Just+                 (DerivNewtype+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia2.hs" 17 12 17 19+                      , srcInfoPoints = []+                      }))+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13+                             , srcInfoPoints = []+                             }+                           "Functor")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26+                             , srcInfoPoints = []+                             }+                           "Applicative")))+              ]+          ]+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 20 1 23 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 20 1 20 9+                , SrcSpan "tests/examples/DerivingVia2.hs" 20 62 20 67+                , SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 3+                , SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 61+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 41+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 11+                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 24 20 25+                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 37 20 38+                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 39 20 41+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22+                                     , srcInfoPoints = []+                                     }+                                   "Applicative")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24+                                  , srcInfoPoints = []+                                  }+                                "f")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35+                                     , srcInfoPoints = []+                                     }+                                   "Semigroup")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 61+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51+                           , srcInfoPoints = []+                           }+                         "Semigroup")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 20 52 20 61+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 20 52 20 53+                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 60 20 61+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 60+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 58+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56+                                    , srcInfoPoints = []+                                    }+                                  "App")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 20 57 20 58+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 20 57 20 58+                                 , srcInfoPoints = []+                                 }+                               "f")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 20 59 20 60+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 20 59 20 60+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 21+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 7+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 4+                             , SrcSpan "tests/examples/DerivingVia2.hs" 21 4 21 6+                             , SrcSpan "tests/examples/DerivingVia2.hs" 21 6 21 7+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 4 21 6+                            , srcInfoPoints = []+                            }+                          "<>"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 8 21 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/DerivingVia2.hs" 21 8 21 9 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 21+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16+                                     , srcInfoPoints = []+                                     }+                                   "liftA2")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 21+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 18+                                   , SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20+                                   , SrcSpan "tests/examples/DerivingVia2.hs" 21 20 21 21+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 21+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 18+                                      , SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20+                                      , SrcSpan "tests/examples/DerivingVia2.hs" 21 20 21 21+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20+                                     , srcInfoPoints = []+                                     }+                                   "<>")))))+                    Nothing)+             ])+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 23 1 25 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 9+                , SrcSpan "tests/examples/DerivingVia2.hs" 24 10 24 18+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 23 10 23 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 23 14 23 47+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 23 14 23 15+                         , SrcSpan "tests/examples/DerivingVia2.hs" 23 46 23 47+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 46+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 44+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18+                                    , srcInfoPoints = []+                                    }+                                  "App")))+                         (TyParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 23 19 23 44+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/DerivingVia2.hs" 23 19 23 20+                                  , SrcSpan "tests/examples/DerivingVia2.hs" 23 43 23 44+                                  ]+                              }+                            (TyApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 43+                                 , srcInfoPoints = []+                                 }+                               (TyApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 41+                                    , srcInfoPoints = []+                                    }+                                  (TyCon+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 27+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 27+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia2.hs" 23 20 23 27+                                             , srcInfoPoints = []+                                             }+                                           "Compose")))+                                  (TyKind+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia2.hs" 23 28 23 41+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/DerivingVia2.hs" 23 28 23 29+                                           , SrcSpan "tests/examples/DerivingVia2.hs" 23 31 23 33+                                           , SrcSpan "tests/examples/DerivingVia2.hs" 23 40 23 41+                                           ]+                                       }+                                     (TyVar+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia2.hs" 23 29 23 30+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia2.hs" 23 29 23 30+                                             , srcInfoPoints = []+                                             }+                                           "f"))+                                     (TyFun+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DerivingVia2.hs" 23 34 23 40+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/DerivingVia2.hs" 23 36 23 38+                                              ]+                                          }+                                        (TyStar+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia2.hs" 23 34 23 35+                                             , srcInfoPoints = []+                                             })+                                        (TyStar+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DerivingVia2.hs" 23 39 23 40+                                             , srcInfoPoints = []+                                             }))))+                               (TyVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia2.hs" 23 42 23 43+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia2.hs" 23 42 23 43+                                       , srcInfoPoints = []+                                       }+                                     "g")))))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 23 45 23 46+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 23 45 23 46+                              , srcInfoPoints = []+                              }+                            "a"))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia2.hs" 24 19 25 44+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 24 19 25 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 24 19 24 20+                         , SrcSpan "tests/examples/DerivingVia2.hs" 24 33 24 34+                         , SrcSpan "tests/examples/DerivingVia2.hs" 24 48 24 49+                         , SrcSpan "tests/examples/DerivingVia2.hs" 24 61 24 62+                         , SrcSpan "tests/examples/DerivingVia2.hs" 25 16 25 18+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31+                                     , srcInfoPoints = []+                                     }+                                   "Applicative")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33+                                  , srcInfoPoints = []+                                  }+                                "f")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46+                                     , srcInfoPoints = []+                                     }+                                   "Applicative")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48+                                  , srcInfoPoints = []+                                  }+                                "g")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59+                                     , srcInfoPoints = []+                                     }+                                   "Semigroup")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   ]))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 44+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28+                           , srcInfoPoints = []+                           }+                         "Semigroup")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 25 29 25 44+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 25 29 25 30+                         , SrcSpan "tests/examples/DerivingVia2.hs" 25 43 25 44+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 43+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 41+                           , srcInfoPoints = []+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 39+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37+                                       , srcInfoPoints = []+                                       }+                                     "Compose")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 25 38 25 39+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia2.hs" 25 38 25 39+                                    , srcInfoPoints = []+                                    }+                                  "f")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 25 40 25 41+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 25 40 25 41+                                 , srcInfoPoints = []+                                 }+                               "g")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 25 42 25 43+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 25 42 25 43+                              , srcInfoPoints = []+                              }+                            "a"))))))+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 6 ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 22+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 8+                     , srcInfoPoints = []+                     }+                   "C"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 9 27 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingVia2.hs" 27 9 27 10+                      , SrcSpan "tests/examples/DerivingVia2.hs" 27 12 27 14+                      , SrcSpan "tests/examples/DerivingVia2.hs" 27 21 27 22+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 27 10 27 11+                     , srcInfoPoints = []+                     }+                   "a")+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 27 17 27 19 ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 16+                           , srcInfoPoints = []+                           }+                         "k"))+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 27 20 27 21+                        , srcInfoPoints = []+                        }))))+          []+          Nothing+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 9 ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 17+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 17+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11+                           , srcInfoPoints = []+                           }+                         "C")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17+                           , srcInfoPoints = []+                           }+                         "Proxy")))))+          Nothing+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 30 19 30 20 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 18+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 16+                     , srcInfoPoints = []+                     }+                   "MyProxy"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 30 17 30 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 30 17 30 18+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 38+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 38+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 28+                      , srcInfoPoints = []+                      }+                    "MyProxy")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DerivingVia2.hs" 30 29 30 38+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/DerivingVia2.hs" 30 29 30 30+                           , SrcSpan "tests/examples/DerivingVia2.hs" 30 37 30 38+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 37+                          , srcInfoPoints = []+                          }+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35+                                   , srcInfoPoints = []+                                   }+                                 "Proxy")))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DerivingVia2.hs" 30 36 30 37+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DerivingVia2.hs" 30 36 30 37+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          []+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 50+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 9+                , SrcSpan "tests/examples/DerivingVia2.hs" 31 32 31 40+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 31 10 31 13+                  , srcInfoPoints = []+                  }+                (TyKind+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 31 14 31 31+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 31 14 31 15+                         , SrcSpan "tests/examples/DerivingVia2.hs" 31 21 31 23+                         , SrcSpan "tests/examples/DerivingVia2.hs" 31 30 31 31+                         ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20+                              , srcInfoPoints = []+                              }+                            "Proxy")))+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 31 24 31 30+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia2.hs" 31 26 31 28 ]+                        }+                      (TyStar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 24 31 25+                           , srcInfoPoints = []+                           })+                      (TyStar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 29 31 30+                           , srcInfoPoints = []+                           })))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 50+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 50+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42+                           , srcInfoPoints = []+                           }+                         "C")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50+                           , srcInfoPoints = []+                           }+                         "MyProxy")))))+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 12+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 6 ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 12+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 10+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 8+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 8+                        , srcInfoPoints = []+                        }+                      "Z"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 9 33 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 9 33 10+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 33 11 33 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 33 11 33 12+                     , srcInfoPoints = []+                     }+                   "b")))+          []+          Nothing+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 5+            , srcInfoPoints = []+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 9+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 7+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 7+                     , srcInfoPoints = []+                     }+                   "T"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 8 34 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 8 34 9+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 5+            , srcInfoPoints = []+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 8+                     , srcInfoPoints = []+                     }+                   "X1"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 9 35 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 9 35 10+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 5+            , srcInfoPoints = []+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 8+                     , srcInfoPoints = []+                     }+                   "X2"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 9 36 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 9 36 10+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 5+            , srcInfoPoints = []+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 8+                     , srcInfoPoints = []+                     }+                   "X3"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 9 37 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 9 37 10+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          []+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 59+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 9+                , SrcSpan "tests/examples/DerivingVia2.hs" 39 30 39 38+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 39 10 39 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 39 14 39 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 39 14 39 15+                         , SrcSpan "tests/examples/DerivingVia2.hs" 39 28 39 29+                         ]+                     }+                   (TyForall+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 39 15 39 28+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia2.hs" 39 15 39 21+                            , SrcSpan "tests/examples/DerivingVia2.hs" 39 23 39 24+                            ]+                        }+                      (Just+                         [ UnkindedVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 39 22 39 23+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 39 22 39 23+                                  , srcInfoPoints = []+                                  }+                                "a")+                         ])+                      Nothing+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 28+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26+                                    , srcInfoPoints = []+                                    }+                                  "T")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 27 39 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 39 27 39 28+                                 , srcInfoPoints = []+                                 }+                               "a")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 59+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 59+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 52+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50+                              , srcInfoPoints = []+                              }+                            "Z")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 39 51 39 52+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 51 39 52+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 39 53 39 59+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 39 53 39 54+                         , SrcSpan "tests/examples/DerivingVia2.hs" 39 58 39 59+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 58+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56+                                 , srcInfoPoints = []+                                 }+                               "X1")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 57 39 58+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 57 39 58+                              , srcInfoPoints = []+                              }+                            "b"))))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 59+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 9+                , SrcSpan "tests/examples/DerivingVia2.hs" 40 30 40 38+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 40 10 40 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 40 24 40 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 40 24 40 25+                         , SrcSpan "tests/examples/DerivingVia2.hs" 40 28 40 29+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 28+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26+                                 , srcInfoPoints = []+                                 }+                               "T")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 27 40 28+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 27 40 28+                              , srcInfoPoints = []+                              }+                            "a"))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia2.hs" 40 39 40 59+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DerivingVia2.hs" 40 39 40 45+                   , SrcSpan "tests/examples/DerivingVia2.hs" 40 47 40 48+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia2.hs" 40 46 40 47+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia2.hs" 40 46 40 47+                         , srcInfoPoints = []+                         }+                       "b")+                ])+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 59+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 52+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50+                              , srcInfoPoints = []+                              }+                            "Z")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 40 51 40 52+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 51 40 52+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 40 53 40 59+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 40 53 40 54+                         , SrcSpan "tests/examples/DerivingVia2.hs" 40 58 40 59+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 58+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56+                                 , srcInfoPoints = []+                                 }+                               "X2")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 57 40 58+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 57 40 58+                              , srcInfoPoints = []+                              }+                            "b"))))))+      , DerivDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 59+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 9+                , SrcSpan "tests/examples/DerivingVia2.hs" 41 30 41 38+                ]+            }+          (Just+             (DerivVia+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 41 10 41 13+                  , srcInfoPoints = []+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 41 14 41 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 41 14 41 15+                         , SrcSpan "tests/examples/DerivingVia2.hs" 41 28 41 29+                         ]+                     }+                   (TyForall+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 41 15 41 28+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingVia2.hs" 41 15 41 21+                            , SrcSpan "tests/examples/DerivingVia2.hs" 41 23 41 24+                            ]+                        }+                      (Just+                         [ UnkindedVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DerivingVia2.hs" 41 22 41 23+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DerivingVia2.hs" 41 22 41 23+                                  , srcInfoPoints = []+                                  }+                                "a")+                         ])+                      Nothing+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 28+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26+                                    , srcInfoPoints = []+                                    }+                                  "T")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 27 41 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 41 27 41 28+                                 , srcInfoPoints = []+                                 }+                               "a")))))))+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingVia2.hs" 41 39 41 59+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DerivingVia2.hs" 41 39 41 45+                   , SrcSpan "tests/examples/DerivingVia2.hs" 41 47 41 48+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DerivingVia2.hs" 41 46 41 47+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DerivingVia2.hs" 41 46 41 47+                         , srcInfoPoints = []+                         }+                       "b")+                ])+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 59+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 52+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50+                              , srcInfoPoints = []+                              }+                            "Z")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 41 51 41 52+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 51 41 52+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingVia2.hs" 41 53 41 59+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 41 53 41 54+                         , SrcSpan "tests/examples/DerivingVia2.hs" 41 58 41 59+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 58+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56+                                 , srcInfoPoints = []+                                 }+                               "X3")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 57 41 58+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 57 41 58+                              , srcInfoPoints = []+                              }+                            "b"))))))+      ]+  , []+  )
+ tests/examples/DerivingVia2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingVia2.hs.prettyprinter.golden view
@@ -0,0 +1,47 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingVia2 where+import Control.Applicative+import Data.Functor.Compose+import Data.Proxy+import Data.Semigroup++newtype App (f :: * -> *) a = App (f a)+                                deriving newtype (Functor, Applicative)++instance (Applicative f, Semigroup a) => Semigroup (App f a) where+        (<>) = liftA2 (<>)++deriving via (App (Compose (f :: * -> *) g) a) instance+         (Applicative f, Applicative g, Semigroup a) =>+         Semigroup (Compose f g a)++class C (a :: k -> *)++instance C Proxy++newtype MyProxy a = MyProxy (Proxy a)++deriving via (Proxy :: * -> *) instance C MyProxy++class Z a b++data T a++data X1 a++data X2 a++data X3 a++deriving via (forall a . T a) instance Z a (X1 b)++deriving via (T a) instance forall b . Z a (X2 b)++deriving via (forall a . T a) instance forall b . Z a (X3 b)
+ tests/examples/DerivingViaStealing.hs view
@@ -0,0 +1,5 @@+module DerivingViaStealing where++via = ()+stock = ()+anyclass = ()
+ tests/examples/DerivingViaStealing.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingViaStealing.hs.parser.golden view
@@ -0,0 +1,201 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 1+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 1+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 1+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 1+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 1+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 6 1 6 1+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 6 1 6 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 33+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 7+                  , SrcSpan "tests/examples/DerivingViaStealing.hs" 1 28 1 33+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/DerivingViaStealing.hs" 1 8 1 27+                 , srcInfoPoints = []+                 }+               "DerivingViaStealing")+            Nothing+            Nothing))+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 9+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 4+                  , srcInfoPoints = []+                  }+                "via"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 3 5 3 9+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 5 3 6 ]+               }+             (Con+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 9+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 8+                      , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 8 3 9+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 9+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 8+                         , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 8 3 9+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 9+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 8+                            , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 8 3 9+                            ]+                        }))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 11+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 6+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 6+                  , srcInfoPoints = []+                  }+                "stock"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 4 7 4 11+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 7 4 8 ]+               }+             (Con+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 11+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 10+                      , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 10 4 11+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 11+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 10+                         , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 10 4 11+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 11+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 10+                            , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 10 4 11+                            ]+                        }))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 9+                  , srcInfoPoints = []+                  }+                "anyclass"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 5 10 5 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 10 5 11 ]+               }+             (Con+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 13+                      , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 13 5 14+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 13+                         , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 13 5 14+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 13+                            , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 13 5 14+                            ]+                        }))))+          Nothing+      ]+  , []+  )
+ tests/examples/DerivingViaStealing.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingViaStealing.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+module DerivingViaStealing where+via = ()+stock = ()+anyclass = ()
+ tests/examples/Directory.hs view
@@ -0,0 +1,913 @@+{-# LANGUAGE ForeignFunctionInterface, NondecreasingIndentation #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  System.Directory+-- Copyright   :  (c) The University of Glasgow 2001+-- License     :  BSD-style (see the file libraries/base/LICENSE)+--+-- Maintainer  :  libraries@haskell.org+-- Stability   :  stable+-- Portability :  portable+--+-- System-independent interface to directory manipulation.+--+-----------------------------------------------------------------------------++module System.Directory+   (+    -- $intro++    -- * Actions on directories+      createDirectory       -- :: FilePath -> IO ()+    , createDirectoryIfMissing  -- :: Bool -> FilePath -> IO ()+    , removeDirectory       -- :: FilePath -> IO ()+    , removeDirectoryRecursive  -- :: FilePath -> IO ()+    , renameDirectory       -- :: FilePath -> FilePath -> IO ()++    , getDirectoryContents      -- :: FilePath -> IO [FilePath]+    , getCurrentDirectory       -- :: IO FilePath+    , setCurrentDirectory       -- :: FilePath -> IO ()++    -- * Pre-defined directories+    , getHomeDirectory+    , getAppUserDataDirectory+    , getUserDocumentsDirectory+    , getTemporaryDirectory++    -- * Actions on files+    , removeFile        -- :: FilePath -> IO ()+    , renameFile                -- :: FilePath -> FilePath -> IO ()+    , copyFile                  -- :: FilePath -> FilePath -> IO ()++    , canonicalizePath+    , makeRelativeToCurrentDirectory+    , findExecutable++    -- * Existence tests+    , doesFileExist     -- :: FilePath -> IO Bool+    , doesDirectoryExist        -- :: FilePath -> IO Bool++    -- * Permissions++    -- $permissions++    , Permissions(+    Permissions,+    readable,       -- :: Permissions -> Bool+    writable,       -- :: Permissions -> Bool+    executable,     -- :: Permissions -> Bool+    searchable      -- :: Permissions -> Bool+      )++    , getPermissions            -- :: FilePath -> IO Permissions+    , setPermissions            -- :: FilePath -> Permissions -> IO ()+    , copyPermissions++    -- * Timestamps++    , getModificationTime       -- :: FilePath -> IO ClockTime+   ) where++import Prelude hiding ( catch )+import qualified Prelude++import Control.Monad (guard)+import System.Environment      ( getEnv )+import System.FilePath+import System.IO+import System.IO.Error hiding ( catch, try )+import Control.Monad           ( when, unless )+import Control.Exception.Base++import Foreign+import Foreign.C++{-# CFILES cbits/directory.c #-}++import System.Time             ( ClockTime(..) )++import GHC.IO.Exception ( IOException(..), IOErrorType(..), ioException )++import System.Posix.Types+import System.Posix.Internals+import qualified System.Win32 as Win32++{- $intro+A directory contains a series of entries, each of which is a named+reference to a file system object (file, directory etc.).  Some+entries may be hidden, inaccessible, or have some administrative+function (e.g. `.' or `..' under POSIX+<http://www.opengroup.org/onlinepubs/009695399/>), but in+this standard all such entries are considered to form part of the+directory contents. Entries in sub-directories are not, however,+considered to form part of the directory contents.++Each file system object is referenced by a /path/.  There is+normally at least one absolute path to each file system object.  In+some operating systems, it may also be possible to have paths which+are relative to the current directory.+-}++-----------------------------------------------------------------------------+-- Permissions++{- $permissions++ The 'Permissions' type is used to record whether certain operations are+ permissible on a file\/directory. 'getPermissions' and 'setPermissions'+ get and set these permissions, respectively. Permissions apply both to+ files and directories. For directories, the executable field will be+ 'False', and for files the searchable field will be 'False'. Note that+ directories may be searchable without being readable, if permission has+ been given to use them as part of a path, but not to examine the+ directory contents.++Note that to change some, but not all permissions, a construct on the following lines must be used.++>  makeReadable f = do+>     p <- getPermissions f+>     setPermissions f (p {readable = True})++-}++data Permissions+ = Permissions {+    readable,   writable,+    executable, searchable :: Bool+   } deriving (Eq, Ord, Read, Show)++{- |The 'getPermissions' operation returns the+permissions for the file or directory.++The operation may fail with:++* 'isPermissionError' if the user is not permitted to access+  the permissions; or++* 'isDoesNotExistError' if the file or directory does not exist.++-}++getPermissions :: FilePath -> IO Permissions+getPermissions name = do+  withFilePath name $ \s -> do+  -- stat() does a better job of guessing the permissions on Windows+  -- than access() does.  e.g. for execute permission, it looks at the+  -- filename extension :-)+  --+  -- I tried for a while to do this properly, using the Windows security API,+  -- and eventually gave up.  getPermissions is a flawed API anyway. -- SimonM+  allocaBytes sizeof_stat $ \ p_stat -> do+  throwErrnoIfMinus1_ "getPermissions" $ c_stat s p_stat+  mode <- st_mode p_stat+  let usr_read   = mode .&. s_IRUSR+  let usr_write  = mode .&. s_IWUSR+  let usr_exec   = mode .&. s_IXUSR+  let is_dir = mode .&. s_IFDIR+  return (+    Permissions {+      readable   = usr_read  /= 0,+      writable   = usr_write /= 0,+      executable = is_dir == 0 && usr_exec /= 0,+      searchable = is_dir /= 0 && usr_exec /= 0+    }+   )++{- |The 'setPermissions' operation sets the+permissions for the file or directory.++The operation may fail with:++* 'isPermissionError' if the user is not permitted to set+  the permissions; or++* 'isDoesNotExistError' if the file or directory does not exist.++-}++setPermissions :: FilePath -> Permissions -> IO ()+setPermissions name (Permissions r w e s) = do+  allocaBytes sizeof_stat $ \ p_stat -> do+  withFilePath name $ \p_name -> do+    throwErrnoIfMinus1_ "setPermissions" $ do+      c_stat p_name p_stat+      mode <- st_mode p_stat+      let mode1 = modifyBit r mode s_IRUSR+      let mode2 = modifyBit w mode1 s_IWUSR+      let mode3 = modifyBit (e || s) mode2 s_IXUSR+      c_wchmod p_name mode3+ where+   modifyBit :: Bool -> CMode -> CMode -> CMode+   modifyBit False m b = m .&. (complement b)+   modifyBit True  m b = m .|. b++foreign import ccall unsafe "_wchmod"+   c_wchmod :: CWString -> CMode -> IO CInt++copyPermissions :: FilePath -> FilePath -> IO ()+copyPermissions source dest = do+  allocaBytes sizeof_stat $ \ p_stat -> do+  withFilePath source $ \p_source -> do+  withFilePath dest $ \p_dest -> do+    throwErrnoIfMinus1_ "copyPermissions" $ c_stat p_source p_stat+    mode <- st_mode p_stat+    throwErrnoIfMinus1_ "copyPermissions" $ c_wchmod p_dest mode++-----------------------------------------------------------------------------+-- Implementation++{- |@'createDirectory' dir@ creates a new directory @dir@ which is+initially empty, or as near to empty as the operating system+allows.++The operation may fail with:++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES]@++* 'isAlreadyExistsError' \/ 'AlreadyExists'+The operand refers to a directory that already exists.+@ [EEXIST]@++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+The operand is not a valid directory name.+@[ENAMETOOLONG, ELOOP]@++* 'NoSuchThing'+There is no path to the directory.+@[ENOENT, ENOTDIR]@++* 'ResourceExhausted'+Insufficient resources (virtual memory, process file descriptors,+physical disk space, etc.) are available to perform the operation.+@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@++* 'InappropriateType'+The path refers to an existing non-directory object.+@[EEXIST]@++-}++createDirectory :: FilePath -> IO ()+createDirectory path = do+  Win32.createDirectory path Nothing++-- | @'createDirectoryIfMissing' parents dir@ creates a new directory+-- @dir@ if it doesn\'t exist. If the first argument is 'True'+-- the function will also create all parent directories if they are missing.+createDirectoryIfMissing :: Bool     -- ^ Create its parents too?+                 -> FilePath -- ^ The path to the directory you want to make+                 -> IO ()+createDirectoryIfMissing create_parents path0+  | create_parents = createDirs (parents path0)+  | otherwise      = createDirs (take 1 (parents path0))+  where+    parents = reverse . scanl1 (</>) . splitDirectories . normalise++    createDirs []         = return ()+    createDirs (dir:[])   = createDir dir throw+    createDirs (dir:dirs) =+      createDir dir $ \_ -> do+        createDirs dirs+        createDir dir throw++    createDir :: FilePath -> (IOException -> IO ()) -> IO ()+    createDir dir notExistHandler = do+      r <- try $ createDirectory dir+      case (r :: Either IOException ()) of+        Right ()                   -> return ()+        Left  e+          | isDoesNotExistError  e -> notExistHandler e+          -- createDirectory (and indeed POSIX mkdir) does not distinguish+          -- between a dir already existing and a file already existing. So we+          -- check for it here. Unfortunately there is a slight race condition+          -- here, but we think it is benign. It could report an exeption in+          -- the case that the dir did exist but another process deletes the+          -- directory and creates a file in its place before we can check+          -- that the directory did indeed exist.+          | isAlreadyExistsError e -> (do+              withFileStatus "createDirectoryIfMissing" dir $ \st -> do+                 isDir <- isDirectory st+                 if isDir then return ()+                          else throw e+              ) `catch` ((\_ -> return ()) :: IOException -> IO ())+          | otherwise              -> throw e++{- | @'removeDirectory' dir@ removes an existing directory /dir/.  The+implementation may specify additional constraints which must be+satisfied before a directory can be removed (e.g. the directory has to+be empty, or may not be in use by other processes).  It is not legal+for an implementation to partially remove a directory unless the+entire directory is removed. A conformant implementation need not+support directory removal in all situations (e.g. removal of the root+directory).++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+EIO++* 'InvalidArgument'+The operand is not a valid directory name.+[ENAMETOOLONG, ELOOP]++* 'isDoesNotExistError' \/ 'NoSuchThing'+The directory does not exist.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES, EPERM]@++* 'UnsatisfiedConstraints'+Implementation-dependent constraints are not satisfied.+@[EBUSY, ENOTEMPTY, EEXIST]@++* 'UnsupportedOperation'+The implementation does not support removal in this situation.+@[EINVAL]@++* 'InappropriateType'+The operand refers to an existing non-directory object.+@[ENOTDIR]@++-}++removeDirectory :: FilePath -> IO ()+removeDirectory path =+  Win32.removeDirectory path++-- | @'removeDirectoryRecursive' dir@  removes an existing directory /dir/+-- together with its content and all subdirectories. Be careful,+-- if the directory contains symlinks, the function will follow them.+removeDirectoryRecursive :: FilePath -> IO ()+removeDirectoryRecursive startLoc = do+  cont <- getDirectoryContents startLoc+  sequence_ [rm (startLoc </> x) | x <- cont, x /= "." && x /= ".."]+  removeDirectory startLoc+  where+    rm :: FilePath -> IO ()+    rm f = do temp <- try (removeFile f)+              case temp of+                Left e  -> do isDir <- doesDirectoryExist f+                              -- If f is not a directory, re-throw the error+                              unless isDir $ throw (e :: SomeException)+                              removeDirectoryRecursive f+                Right _ -> return ()++{- |'removeFile' /file/ removes the directory entry for an existing file+/file/, where /file/ is not itself a directory. The+implementation may specify additional constraints which must be+satisfied before a file can be removed (e.g. the file may not be in+use by other processes).++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+The operand is not a valid file name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The file does not exist.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES, EPERM]@++* 'UnsatisfiedConstraints'+Implementation-dependent constraints are not satisfied.+@[EBUSY]@++* 'InappropriateType'+The operand refers to an existing directory.+@[EPERM, EINVAL]@++-}++removeFile :: FilePath -> IO ()+removeFile path =+  Win32.deleteFile path++{- |@'renameDirectory' old new@ changes the name of an existing+directory from /old/ to /new/.  If the /new/ directory+already exists, it is atomically replaced by the /old/ directory.+If the /new/ directory is neither the /old/ directory nor an+alias of the /old/ directory, it is removed as if by+'removeDirectory'.  A conformant implementation need not support+renaming directories in all situations (e.g. renaming to an existing+directory, or across different physical devices), but the constraints+must be documented.++On Win32 platforms, @renameDirectory@ fails if the /new/ directory already+exists.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+Either operand is not a valid directory name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The original directory does not exist, or there is no path to the target.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES, EPERM]@++* 'ResourceExhausted'+Insufficient resources are available to perform the operation.+@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@++* 'UnsatisfiedConstraints'+Implementation-dependent constraints are not satisfied.+@[EBUSY, ENOTEMPTY, EEXIST]@++* 'UnsupportedOperation'+The implementation does not support renaming in this situation.+@[EINVAL, EXDEV]@++* 'InappropriateType'+Either path refers to an existing non-directory object.+@[ENOTDIR, EISDIR]@++-}++renameDirectory :: FilePath -> FilePath -> IO ()+renameDirectory opath npath = do+   -- XXX this test isn't performed atomically with the following rename+   -- ToDo: use Win32 API+   withFileStatus "renameDirectory" opath $ \st -> do+   is_dir <- isDirectory st+   if (not is_dir)+    then ioException (ioeSetErrorString+                          (mkIOError InappropriateType "renameDirectory" Nothing (Just opath))+                          "not a directory")+    else do+   Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING++{- |@'renameFile' old new@ changes the name of an existing file system+object from /old/ to /new/.  If the /new/ object already+exists, it is atomically replaced by the /old/ object.  Neither+path may refer to an existing directory.  A conformant implementation+need not support renaming files in all situations (e.g. renaming+across different physical devices), but the constraints must be+documented.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+Either operand is not a valid file name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The original file does not exist, or there is no path to the target.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES, EPERM]@++* 'ResourceExhausted'+Insufficient resources are available to perform the operation.+@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@++* 'UnsatisfiedConstraints'+Implementation-dependent constraints are not satisfied.+@[EBUSY]@++* 'UnsupportedOperation'+The implementation does not support renaming in this situation.+@[EXDEV]@++* 'InappropriateType'+Either path refers to an existing directory.+@[ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]@++-}++renameFile :: FilePath -> FilePath -> IO ()+renameFile opath npath = do+   -- XXX this test isn't performed atomically with the following rename+   -- ToDo: use Win32 API+   withFileOrSymlinkStatus "renameFile" opath $ \st -> do+   is_dir <- isDirectory st+   if is_dir+    then ioException (ioeSetErrorString+              (mkIOError InappropriateType "renameFile" Nothing (Just opath))+              "is a directory")+    else do+   Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING++{- |@'copyFile' old new@ copies the existing file from /old/ to /new/.+If the /new/ file already exists, it is atomically replaced by the /old/ file.+Neither path may refer to an existing directory.  The permissions of /old/ are+copied to /new/, if possible.+-}++copyFile :: FilePath -> FilePath -> IO ()+copyFile fromFPath toFPath =+    copy `Prelude.catch` (\exc -> throw $ ioeSetLocation exc "copyFile")+    where copy = bracket (openBinaryFile fromFPath ReadMode) hClose $ \hFrom ->+                 bracketOnError openTmp cleanTmp $ \(tmpFPath, hTmp) ->+                 do allocaBytes bufferSize $ copyContents hFrom hTmp+                    hClose hTmp+                    ignoreIOExceptions $ copyPermissions fromFPath tmpFPath+                    renameFile tmpFPath toFPath+          openTmp = openBinaryTempFile (takeDirectory toFPath) ".copyFile.tmp"+          cleanTmp (tmpFPath, hTmp)+              = do ignoreIOExceptions $ hClose hTmp+                   ignoreIOExceptions $ removeFile tmpFPath+          bufferSize = 1024++          copyContents hFrom hTo buffer = do+                  count <- hGetBuf hFrom buffer bufferSize+                  when (count > 0) $ do+                          hPutBuf hTo buffer count+                          copyContents hFrom hTo buffer++          ignoreIOExceptions io = io `catch` ioExceptionIgnorer+          ioExceptionIgnorer :: IOException -> IO ()+          ioExceptionIgnorer _ = return ()++-- | Given path referring to a file or directory, returns a+-- canonicalized path, with the intent that two paths referring+-- to the same file\/directory will map to the same canonicalized+-- path. Note that it is impossible to guarantee that the+-- implication (same file\/dir \<=\> same canonicalizedPath) holds+-- in either direction: this function can make only a best-effort+-- attempt.+canonicalizePath :: FilePath -> IO FilePath+canonicalizePath fpath =+    do path <- Win32.getFullPathName fpath+       return (normalise path)+        -- normalise does more stuff, like upper-casing the drive letter+++-- | 'makeRelative' the current directory.+makeRelativeToCurrentDirectory :: FilePath -> IO FilePath+makeRelativeToCurrentDirectory x = do+    cur <- getCurrentDirectory+    return $ makeRelative cur x++-- | Given an executable file name, searches for such file in the+-- directories listed in system PATH. The returned value is the path+-- to the found executable or Nothing if an executable with the given+-- name was not found. For example (findExecutable \"ghc\") gives you+-- the path to GHC.+--+-- The path returned by 'findExecutable' corresponds to the+-- program that would be executed by 'System.Process.createProcess'+-- when passed the same string (as a RawCommand, not a ShellCommand).+--+-- On Windows, 'findExecutable' calls the Win32 function 'SearchPath',+-- which may search other places before checking the directories in+-- @PATH@.  Where it actually searches depends on registry settings,+-- but notably includes the directory containing the current+-- executable. See+-- <http://msdn.microsoft.com/en-us/library/aa365527.aspx> for more+-- details.+--+findExecutable :: String -> IO (Maybe FilePath)+findExecutable binary =+  Win32.searchPath Nothing binary ('.':exeExtension)+++{- |@'getDirectoryContents' dir@ returns a list of /all/ entries+in /dir/.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+The operand is not a valid directory name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The directory does not exist.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EACCES]@++* 'ResourceExhausted'+Insufficient resources are available to perform the operation.+@[EMFILE, ENFILE]@++* 'InappropriateType'+The path refers to an existing non-directory object.+@[ENOTDIR]@++-}++getDirectoryContents :: FilePath -> IO [FilePath]+getDirectoryContents path =+  modifyIOError ((`ioeSetFileName` path) .+                 (`ioeSetLocation` "getDirectoryContents")) $ do+  bracket+     (Win32.findFirstFile (path </> "*"))+     (\(h,_) -> Win32.findClose h)+     (\(h,fdat) -> loop h fdat [])+  where+        -- we needn't worry about empty directories: adirectory always+        -- has at least "." and ".." entries+    loop :: Win32.HANDLE -> Win32.FindData -> [FilePath] -> IO [FilePath]+    loop h fdat acc = do+       filename <- Win32.getFindDataFileName fdat+       more <- Win32.findNextFile h fdat+       if more+          then loop h fdat (filename:acc)+          else return (filename:acc)+                 -- no need to reverse, ordering is undefined++{- |If the operating system has a notion of current directories,+'getCurrentDirectory' returns an absolute path to the+current directory of the calling process.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+There is no path referring to the current directory.+@[EPERM, ENOENT, ESTALE...]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EACCES]@++* 'ResourceExhausted'+Insufficient resources are available to perform the operation.++* 'UnsupportedOperation'+The operating system has no notion of current directory.++-}+getCurrentDirectory :: IO FilePath+getCurrentDirectory = do+  Win32.getCurrentDirectory++{- |If the operating system has a notion of current directories,+@'setCurrentDirectory' dir@ changes the current+directory of the calling process to /dir/.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+The operand is not a valid directory name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The directory does not exist.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EACCES]@++* 'UnsupportedOperation'+The operating system has no notion of current directory, or the+current directory cannot be dynamically changed.++* 'InappropriateType'+The path refers to an existing non-directory object.+@[ENOTDIR]@++-}++setCurrentDirectory :: FilePath -> IO ()+setCurrentDirectory path =+  Win32.setCurrentDirectory path++{- |The operation 'doesDirectoryExist' returns 'True' if the argument file+exists and is a directory, and 'False' otherwise.+-}++doesDirectoryExist :: FilePath -> IO Bool+doesDirectoryExist name =+   (withFileStatus "doesDirectoryExist" name $ \st -> isDirectory st)+   `catch` ((\ _ -> return False) :: IOException -> IO Bool)++{- |The operation 'doesFileExist' returns 'True'+if the argument file exists and is not a directory, and 'False' otherwise.+-}++doesFileExist :: FilePath -> IO Bool+doesFileExist name =+   (withFileStatus "doesFileExist" name $ \st -> do b <- isDirectory st; return (not b))+   `catch` ((\ _ -> return False) :: IOException -> IO Bool)++{- |The 'getModificationTime' operation returns the+clock time at which the file or directory was last modified.++The operation may fail with:++* 'isPermissionError' if the user is not permitted to access+  the modification time; or++* 'isDoesNotExistError' if the file or directory does not exist.++-}++getModificationTime :: FilePath -> IO ClockTime+getModificationTime name = do+ -- ToDo: use Win32 API+ withFileStatus "getModificationTime" name $ \ st -> do+ modificationTime st+++withFileStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a+withFileStatus loc name f = do+  modifyIOError (`ioeSetFileName` name) $+    allocaBytes sizeof_stat $ \p ->+      withFilePath (fileNameEndClean name) $ \s -> do+        throwErrnoIfMinus1Retry_ loc (c_stat s p)++withFileOrSymlinkStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a+withFileOrSymlinkStatus loc name f = do+  modifyIOError (`ioeSetFileName` name) $+    allocaBytes sizeof_stat $ \p ->+      withFilePath name $ \s -> do+        throwErrnoIfMinus1Retry_ loc (lstat s p)++modificationTime :: Ptr CStat -> IO ClockTime+modificationTime stat = do+    mtime <- st_mtime stat+    let realToInteger = round . realToFrac :: Real a => a -> Integer+    return (TOD (realToInteger (mtime :: CTime)) 0)++isDirectory :: Ptr CStat -> IO Bool+isDirectory stat = do+  mode <- st_mode stat+  return (s_isdir mode)++fileNameEndClean :: String -> String+fileNameEndClean name = if isDrive name then addTrailingPathSeparator name+                                        else dropTrailingPathSeparator name++foreign import ccall unsafe "HsDirectory.h __hscore_S_IRUSR" s_IRUSR :: CMode+foreign import ccall unsafe "HsDirectory.h __hscore_S_IWUSR" s_IWUSR :: CMode+foreign import ccall unsafe "HsDirectory.h __hscore_S_IXUSR" s_IXUSR :: CMode+foreign import ccall unsafe "__hscore_S_IFDIR" s_IFDIR :: CMode+++foreign import ccall unsafe "__hscore_long_path_size"+  long_path_size :: Int++{- | Returns the current user's home directory.++The directory returned is expected to be writable by the current user,+but note that it isn't generally considered good practice to store+application-specific data here; use 'getAppUserDataDirectory'+instead.++On Unix, 'getHomeDirectory' returns the value of the @HOME@+environment variable.  On Windows, the system is queried for a+suitable path; a typical path might be+@C:/Documents And Settings/user@.++The operation may fail with:++* 'UnsupportedOperation'+The operating system has no notion of home directory.++* 'isDoesNotExistError'+The home directory for the current user does not exist, or+cannot be found.+-}+getHomeDirectory :: IO FilePath+getHomeDirectory =+  modifyIOError ((`ioeSetLocation` "getHomeDirectory")) $ do+  r <- try $ Win32.sHGetFolderPath nullPtr Win32.cSIDL_PROFILE nullPtr 0+  case (r :: Either IOException String) of+    Right s -> return s+    Left  _ -> do+      r1 <- try $ Win32.sHGetFolderPath nullPtr Win32.cSIDL_WINDOWS nullPtr 0+      case r1 of+        Right s -> return s+        Left  e -> ioError (e :: IOException)++{- | Returns the pathname of a directory in which application-specific+data for the current user can be stored.  The result of+'getAppUserDataDirectory' for a given application is specific to+the current user.++The argument should be the name of the application, which will be used+to construct the pathname (so avoid using unusual characters that+might result in an invalid pathname).++Note: the directory may not actually exist, and may need to be created+first.  It is expected that the parent directory exists and is+writable.++On Unix, this function returns @$HOME\/.appName@.  On Windows, a+typical path might be++> C:/Documents And Settings/user/Application Data/appName++The operation may fail with:++* 'UnsupportedOperation'+The operating system has no notion of application-specific data directory.++* 'isDoesNotExistError'+The home directory for the current user does not exist, or+cannot be found.+-}+getAppUserDataDirectory :: String -> IO FilePath+getAppUserDataDirectory appName = do+  modifyIOError ((`ioeSetLocation` "getAppUserDataDirectory")) $ do+  s <- Win32.sHGetFolderPath nullPtr Win32.cSIDL_APPDATA nullPtr 0+  return (s++'\\':appName)++{- | Returns the current user's document directory.++The directory returned is expected to be writable by the current user,+but note that it isn't generally considered good practice to store+application-specific data here; use 'getAppUserDataDirectory'+instead.++On Unix, 'getUserDocumentsDirectory' returns the value of the @HOME@+environment variable.  On Windows, the system is queried for a+suitable path; a typical path might be+@C:\/Documents and Settings\/user\/My Documents@.++The operation may fail with:++* 'UnsupportedOperation'+The operating system has no notion of document directory.++* 'isDoesNotExistError'+The document directory for the current user does not exist, or+cannot be found.+-}+getUserDocumentsDirectory :: IO FilePath+getUserDocumentsDirectory = do+  modifyIOError ((`ioeSetLocation` "getUserDocumentsDirectory")) $ do+  Win32.sHGetFolderPath nullPtr Win32.cSIDL_PERSONAL nullPtr 0++{- | Returns the current directory for temporary files.++On Unix, 'getTemporaryDirectory' returns the value of the @TMPDIR@+environment variable or \"\/tmp\" if the variable isn\'t defined.+On Windows, the function checks for the existence of environment variables in+the following order and uses the first path found:++*+TMP environment variable.++*+TEMP environment variable.++*+USERPROFILE environment variable.++*+The Windows directory++The operation may fail with:++* 'UnsupportedOperation'+The operating system has no notion of temporary directory.++The function doesn\'t verify whether the path exists.+-}+getTemporaryDirectory :: IO FilePath+getTemporaryDirectory = do+  Win32.getTemporaryDirectory++-- ToDo: This should be determined via autoconf (AC_EXEEXT)+-- | Extension for executable files+-- (typically @\"\"@ on Unix and @\"exe\"@ on Windows or OS\/2)+exeExtension :: String+exeExtension = "exe"
+ tests/examples/Directory.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Directory.hs.parser.golden view
@@ -0,0 +1,29264 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 1 1 914 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Directory.hs" 1 1 1 1+            , SrcSpan "tests/examples/Directory.hs" 17 1 17 1+            , SrcSpan "tests/examples/Directory.hs" 17 1 17 1+            , SrcSpan "tests/examples/Directory.hs" 72 1 72 1+            , SrcSpan "tests/examples/Directory.hs" 73 1 73 1+            , SrcSpan "tests/examples/Directory.hs" 75 1 75 1+            , SrcSpan "tests/examples/Directory.hs" 76 1 76 1+            , SrcSpan "tests/examples/Directory.hs" 77 1 77 1+            , SrcSpan "tests/examples/Directory.hs" 78 1 78 1+            , SrcSpan "tests/examples/Directory.hs" 79 1 79 1+            , SrcSpan "tests/examples/Directory.hs" 80 1 80 1+            , SrcSpan "tests/examples/Directory.hs" 81 1 81 1+            , SrcSpan "tests/examples/Directory.hs" 83 1 83 1+            , SrcSpan "tests/examples/Directory.hs" 84 1 84 1+            , SrcSpan "tests/examples/Directory.hs" 88 1 88 1+            , SrcSpan "tests/examples/Directory.hs" 90 1 90 1+            , SrcSpan "tests/examples/Directory.hs" 92 1 92 1+            , SrcSpan "tests/examples/Directory.hs" 93 1 93 1+            , SrcSpan "tests/examples/Directory.hs" 94 1 94 1+            , SrcSpan "tests/examples/Directory.hs" 134 1 134 1+            , SrcSpan "tests/examples/Directory.hs" 152 1 152 1+            , SrcSpan "tests/examples/Directory.hs" 153 1 153 1+            , SrcSpan "tests/examples/Directory.hs" 189 1 189 1+            , SrcSpan "tests/examples/Directory.hs" 190 1 190 1+            , SrcSpan "tests/examples/Directory.hs" 205 1 205 1+            , SrcSpan "tests/examples/Directory.hs" 208 1 208 1+            , SrcSpan "tests/examples/Directory.hs" 209 1 209 1+            , SrcSpan "tests/examples/Directory.hs" 257 1 257 1+            , SrcSpan "tests/examples/Directory.hs" 258 1 258 1+            , SrcSpan "tests/examples/Directory.hs" 264 1 264 1+            , SrcSpan "tests/examples/Directory.hs" 267 1 267 1+            , SrcSpan "tests/examples/Directory.hs" 343 1 343 1+            , SrcSpan "tests/examples/Directory.hs" 344 1 344 1+            , SrcSpan "tests/examples/Directory.hs" 350 1 350 1+            , SrcSpan "tests/examples/Directory.hs" 351 1 351 1+            , SrcSpan "tests/examples/Directory.hs" 399 1 399 1+            , SrcSpan "tests/examples/Directory.hs" 400 1 400 1+            , SrcSpan "tests/examples/Directory.hs" 452 1 452 1+            , SrcSpan "tests/examples/Directory.hs" 453 1 453 1+            , SrcSpan "tests/examples/Directory.hs" 509 1 509 1+            , SrcSpan "tests/examples/Directory.hs" 510 1 510 1+            , SrcSpan "tests/examples/Directory.hs" 528 1 528 1+            , SrcSpan "tests/examples/Directory.hs" 529 1 529 1+            , SrcSpan "tests/examples/Directory.hs" 560 1 560 1+            , SrcSpan "tests/examples/Directory.hs" 561 1 561 1+            , SrcSpan "tests/examples/Directory.hs" 568 1 568 1+            , SrcSpan "tests/examples/Directory.hs" 569 1 569 1+            , SrcSpan "tests/examples/Directory.hs" 591 1 591 1+            , SrcSpan "tests/examples/Directory.hs" 592 1 592 1+            , SrcSpan "tests/examples/Directory.hs" 627 1 627 1+            , SrcSpan "tests/examples/Directory.hs" 628 1 628 1+            , SrcSpan "tests/examples/Directory.hs" 672 1 672 1+            , SrcSpan "tests/examples/Directory.hs" 673 1 673 1+            , SrcSpan "tests/examples/Directory.hs" 708 1 708 1+            , SrcSpan "tests/examples/Directory.hs" 709 1 709 1+            , SrcSpan "tests/examples/Directory.hs" 716 1 716 1+            , SrcSpan "tests/examples/Directory.hs" 717 1 717 1+            , SrcSpan "tests/examples/Directory.hs" 725 1 725 1+            , SrcSpan "tests/examples/Directory.hs" 726 1 726 1+            , SrcSpan "tests/examples/Directory.hs" 742 1 742 1+            , SrcSpan "tests/examples/Directory.hs" 743 1 743 1+            , SrcSpan "tests/examples/Directory.hs" 749 1 749 1+            , SrcSpan "tests/examples/Directory.hs" 750 1 750 1+            , SrcSpan "tests/examples/Directory.hs" 756 1 756 1+            , SrcSpan "tests/examples/Directory.hs" 757 1 757 1+            , SrcSpan "tests/examples/Directory.hs" 763 1 763 1+            , SrcSpan "tests/examples/Directory.hs" 764 1 764 1+            , SrcSpan "tests/examples/Directory.hs" 769 1 769 1+            , SrcSpan "tests/examples/Directory.hs" 770 1 770 1+            , SrcSpan "tests/examples/Directory.hs" 774 1 774 1+            , SrcSpan "tests/examples/Directory.hs" 775 1 775 1+            , SrcSpan "tests/examples/Directory.hs" 778 1 778 1+            , SrcSpan "tests/examples/Directory.hs" 779 1 779 1+            , SrcSpan "tests/examples/Directory.hs" 780 1 780 1+            , SrcSpan "tests/examples/Directory.hs" 781 1 781 1+            , SrcSpan "tests/examples/Directory.hs" 784 1 784 1+            , SrcSpan "tests/examples/Directory.hs" 808 1 808 1+            , SrcSpan "tests/examples/Directory.hs" 809 1 809 1+            , SrcSpan "tests/examples/Directory.hs" 847 1 847 1+            , SrcSpan "tests/examples/Directory.hs" 848 1 848 1+            , SrcSpan "tests/examples/Directory.hs" 874 1 874 1+            , SrcSpan "tests/examples/Directory.hs" 875 1 875 1+            , SrcSpan "tests/examples/Directory.hs" 905 1 905 1+            , SrcSpan "tests/examples/Directory.hs" 906 1 906 1+            , SrcSpan "tests/examples/Directory.hs" 912 1 912 1+            , SrcSpan "tests/examples/Directory.hs" 913 1 913 1+            , SrcSpan "tests/examples/Directory.hs" 914 1 914 1+            , SrcSpan "tests/examples/Directory.hs" 914 1 914 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 17 1 70 11+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/Directory.hs" 17 1 17 7+                  , SrcSpan "tests/examples/Directory.hs" 70 6 70 11+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 17 8 17 24+                 , srcInfoPoints = []+                 }+               "System.Directory")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 18 4 70 5+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Directory.hs" 18 4 18 5+                        , SrcSpan "tests/examples/Directory.hs" 23 5 23 6+                        , SrcSpan "tests/examples/Directory.hs" 24 5 24 6+                        , SrcSpan "tests/examples/Directory.hs" 25 5 25 6+                        , SrcSpan "tests/examples/Directory.hs" 26 5 26 6+                        , SrcSpan "tests/examples/Directory.hs" 28 5 28 6+                        , SrcSpan "tests/examples/Directory.hs" 29 5 29 6+                        , SrcSpan "tests/examples/Directory.hs" 30 5 30 6+                        , SrcSpan "tests/examples/Directory.hs" 33 5 33 6+                        , SrcSpan "tests/examples/Directory.hs" 34 5 34 6+                        , SrcSpan "tests/examples/Directory.hs" 35 5 35 6+                        , SrcSpan "tests/examples/Directory.hs" 36 5 36 6+                        , SrcSpan "tests/examples/Directory.hs" 39 5 39 6+                        , SrcSpan "tests/examples/Directory.hs" 40 5 40 6+                        , SrcSpan "tests/examples/Directory.hs" 41 5 41 6+                        , SrcSpan "tests/examples/Directory.hs" 43 5 43 6+                        , SrcSpan "tests/examples/Directory.hs" 44 5 44 6+                        , SrcSpan "tests/examples/Directory.hs" 45 5 45 6+                        , SrcSpan "tests/examples/Directory.hs" 48 5 48 6+                        , SrcSpan "tests/examples/Directory.hs" 49 5 49 6+                        , SrcSpan "tests/examples/Directory.hs" 55 5 55 6+                        , SrcSpan "tests/examples/Directory.hs" 63 5 63 6+                        , SrcSpan "tests/examples/Directory.hs" 64 5 64 6+                        , SrcSpan "tests/examples/Directory.hs" 65 5 65 6+                        , SrcSpan "tests/examples/Directory.hs" 69 5 69 6+                        , SrcSpan "tests/examples/Directory.hs" 70 4 70 5+                        ]+                    }+                  [ EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 22 7 22 22+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 22 7 22 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 22 7 22 22+                              , srcInfoPoints = []+                              }+                            "createDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 23 7 23 31+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 23 7 23 31+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 23 7 23 31+                              , srcInfoPoints = []+                              }+                            "createDirectoryIfMissing"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 24 7 24 22+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 24 7 24 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 24 7 24 22+                              , srcInfoPoints = []+                              }+                            "removeDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 25 7 25 31+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 25 7 25 31+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 25 7 25 31+                              , srcInfoPoints = []+                              }+                            "removeDirectoryRecursive"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 26 7 26 22+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 26 7 26 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 26 7 26 22+                              , srcInfoPoints = []+                              }+                            "renameDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 28 7 28 27+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 28 7 28 27+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 28 7 28 27+                              , srcInfoPoints = []+                              }+                            "getDirectoryContents"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 29 7 29 26+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 29 7 29 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 29 7 29 26+                              , srcInfoPoints = []+                              }+                            "getCurrentDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 30 7 30 26+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 30 7 30 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 30 7 30 26+                              , srcInfoPoints = []+                              }+                            "setCurrentDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 33 7 33 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 33 7 33 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 33 7 33 23+                              , srcInfoPoints = []+                              }+                            "getHomeDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 34 7 34 30+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 34 7 34 30+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 34 7 34 30+                              , srcInfoPoints = []+                              }+                            "getAppUserDataDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 35 7 35 32+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 35 7 35 32+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 35 7 35 32+                              , srcInfoPoints = []+                              }+                            "getUserDocumentsDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 36 7 36 28+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 36 7 36 28+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 36 7 36 28+                              , srcInfoPoints = []+                              }+                            "getTemporaryDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 39 7 39 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 39 7 39 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 39 7 39 17+                              , srcInfoPoints = []+                              }+                            "removeFile"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 40 7 40 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 40 7 40 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 40 7 40 17+                              , srcInfoPoints = []+                              }+                            "renameFile"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 41 7 41 15+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 41 7 41 15+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 41 7 41 15+                              , srcInfoPoints = []+                              }+                            "copyFile"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 43 7 43 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 43 7 43 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 43 7 43 23+                              , srcInfoPoints = []+                              }+                            "canonicalizePath"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 44 7 44 37+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 44 7 44 37+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 44 7 44 37+                              , srcInfoPoints = []+                              }+                            "makeRelativeToCurrentDirectory"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 45 7 45 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 45 7 45 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 45 7 45 21+                              , srcInfoPoints = []+                              }+                            "findExecutable"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 48 7 48 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 48 7 48 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 48 7 48 20+                              , srcInfoPoints = []+                              }+                            "doesFileExist"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 49 7 49 25+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 49 7 49 25+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 49 7 49 25+                              , srcInfoPoints = []+                              }+                            "doesDirectoryExist"))+                  , EThingWith+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 55 7 61 8+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 55 18 55 19+                            , SrcSpan "tests/examples/Directory.hs" 56 16 56 17+                            , SrcSpan "tests/examples/Directory.hs" 57 13 57 14+                            , SrcSpan "tests/examples/Directory.hs" 58 13 58 14+                            , SrcSpan "tests/examples/Directory.hs" 59 15 59 16+                            , SrcSpan "tests/examples/Directory.hs" 61 7 61 8+                            ]+                        }+                      (NoWildcard+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+                           , srcInfoPoints = []+                           })+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 55 7 55 18+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 55 7 55 18+                              , srcInfoPoints = []+                              }+                            "Permissions"))+                      [ ConName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 56 5 56 16+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 56 5 56 16+                               , srcInfoPoints = []+                               }+                             "Permissions")+                      , VarName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 57 5 57 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 57 5 57 13+                               , srcInfoPoints = []+                               }+                             "readable")+                      , VarName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 58 5 58 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 58 5 58 13+                               , srcInfoPoints = []+                               }+                             "writable")+                      , VarName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 59 5 59 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 59 5 59 15+                               , srcInfoPoints = []+                               }+                             "executable")+                      , VarName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 60 5 60 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 60 5 60 15+                               , srcInfoPoints = []+                               }+                             "searchable")+                      ]+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 63 7 63 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 63 7 63 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 63 7 63 21+                              , srcInfoPoints = []+                              }+                            "getPermissions"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 64 7 64 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 64 7 64 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 64 7 64 21+                              , srcInfoPoints = []+                              }+                            "setPermissions"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 65 7 65 22+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 65 7 65 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 65 7 65 22+                              , srcInfoPoints = []+                              }+                            "copyPermissions"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 69 7 69 26+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 69 7 69 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 69 7 69 26+                              , srcInfoPoints = []+                              }+                            "getModificationTime"))+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 1 1 1 68+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 1 1 1 13+                , SrcSpan "tests/examples/Directory.hs" 1 38 1 39+                , SrcSpan "tests/examples/Directory.hs" 1 65 1 68+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 1 14 1 38+                , srcInfoPoints = []+                }+              "ForeignFunctionInterface"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 1 40 1 64+                , srcInfoPoints = []+                }+              "NondecreasingIndentation"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 1 72 32+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 72 1 72 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 8 72 15+                  , srcInfoPoints = []+                  }+                "Prelude"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 16 72 32+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 72 16 72 22+                         , SrcSpan "tests/examples/Directory.hs" 72 23 72 24+                         , SrcSpan "tests/examples/Directory.hs" 72 31 72 32+                         ]+                     }+                   True+                   [ IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 25 72 30+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 25 72 30+                            , srcInfoPoints = []+                            }+                          "catch")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 73 1 73 25+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 73 1 73 7+                    , SrcSpan "tests/examples/Directory.hs" 73 8 73 17+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 73 18 73 25+                  , srcInfoPoints = []+                  }+                "Prelude"+          , importQualified = True+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 1 75 29+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 75 1 75 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 8 75 21+                  , srcInfoPoints = []+                  }+                "Control.Monad"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 22 75 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 75 22 75 23+                         , SrcSpan "tests/examples/Directory.hs" 75 28 75 29+                         ]+                     }+                   False+                   [ IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 23 75 28+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 23 75 28+                            , srcInfoPoints = []+                            }+                          "guard")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 1 76 42+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 76 1 76 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 8 76 26+                  , srcInfoPoints = []+                  }+                "System.Environment"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 32 76 42+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 76 32 76 33+                         , SrcSpan "tests/examples/Directory.hs" 76 41 76 42+                         ]+                     }+                   False+                   [ IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 34 76 40+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 34 76 40+                            , srcInfoPoints = []+                            }+                          "getEnv")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 77 1 77 23+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 77 1 77 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 77 8 77 23+                  , srcInfoPoints = []+                  }+                "System.FilePath"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 78 1 78 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 78 1 78 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 78 8 78 17+                  , srcInfoPoints = []+                  }+                "System.IO"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 1 79 45+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 79 1 79 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 8 79 23+                  , srcInfoPoints = []+                  }+                "System.IO.Error"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 24 79 45+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 79 24 79 30+                         , SrcSpan "tests/examples/Directory.hs" 79 31 79 32+                         , SrcSpan "tests/examples/Directory.hs" 79 38 79 39+                         , SrcSpan "tests/examples/Directory.hs" 79 44 79 45+                         ]+                     }+                   True+                   [ IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 33 79 38+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 33 79 38+                            , srcInfoPoints = []+                            }+                          "catch")+                   , IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 40 79 43+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 40 79 43+                            , srcInfoPoints = []+                            }+                          "try")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 1 80 48+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 80 1 80 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 8 80 21+                  , srcInfoPoints = []+                  }+                "Control.Monad"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 32 80 48+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 80 32 80 33+                         , SrcSpan "tests/examples/Directory.hs" 80 38 80 39+                         , SrcSpan "tests/examples/Directory.hs" 80 47 80 48+                         ]+                     }+                   False+                   [ IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 34 80 38+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 34 80 38+                            , srcInfoPoints = []+                            }+                          "when")+                   , IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 40 80 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 40 80 46+                            , srcInfoPoints = []+                            }+                          "unless")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 81 1 81 30+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 81 1 81 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 81 8 81 30+                  , srcInfoPoints = []+                  }+                "Control.Exception.Base"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 83 1 83 15+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 83 1 83 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 83 8 83 15+                  , srcInfoPoints = []+                  }+                "Foreign"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 84 1 84 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 84 1 84 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 84 8 84 17+                  , srcInfoPoints = []+                  }+                "Foreign.C"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 1 88 49+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 88 1 88 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 8 88 19+                  , srcInfoPoints = []+                  }+                "System.Time"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 32 88 49+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 88 32 88 33+                         , SrcSpan "tests/examples/Directory.hs" 88 48 88 49+                         ]+                     }+                   False+                   [ IThingAll+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 34 88 47+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 88 43 88 44+                             , SrcSpan "tests/examples/Directory.hs" 88 44 88 46+                             , SrcSpan "tests/examples/Directory.hs" 88 46 88 47+                             ]+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 34 88 43+                            , srcInfoPoints = []+                            }+                          "ClockTime")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 1 90 74+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 90 1 90 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 8 90 24+                  , srcInfoPoints = []+                  }+                "GHC.IO.Exception"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 25 90 74+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 90 25 90 26+                         , SrcSpan "tests/examples/Directory.hs" 90 42 90 43+                         , SrcSpan "tests/examples/Directory.hs" 90 59 90 60+                         , SrcSpan "tests/examples/Directory.hs" 90 73 90 74+                         ]+                     }+                   False+                   [ IThingAll+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 27 90 42+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 90 38 90 39+                             , SrcSpan "tests/examples/Directory.hs" 90 39 90 41+                             , SrcSpan "tests/examples/Directory.hs" 90 41 90 42+                             ]+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 27 90 38+                            , srcInfoPoints = []+                            }+                          "IOException")+                   , IThingAll+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 44 90 59+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 90 55 90 56+                             , SrcSpan "tests/examples/Directory.hs" 90 56 90 58+                             , SrcSpan "tests/examples/Directory.hs" 90 58 90 59+                             ]+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 44 90 55+                            , srcInfoPoints = []+                            }+                          "IOErrorType")+                   , IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 61 90 72+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 61 90 72+                            , srcInfoPoints = []+                            }+                          "ioException")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 92 1 92 26+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 92 1 92 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 92 8 92 26+                  , srcInfoPoints = []+                  }+                "System.Posix.Types"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 93 1 93 30+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 93 1 93 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 93 8 93 30+                  , srcInfoPoints = []+                  }+                "System.Posix.Internals"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 94 1 94 39+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 94 1 94 7+                    , SrcSpan "tests/examples/Directory.hs" 94 8 94 17+                    , SrcSpan "tests/examples/Directory.hs" 94 31 94 33+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 94 18 94 30+                  , srcInfoPoints = []+                  }+                "System.Win32"+          , importQualified = True+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 94 34 94 39+                     , srcInfoPoints = []+                     }+                   "Win32")+          , importSpecs = Nothing+          }+      ]+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 134 1 138 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 135 2 135 3 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 134 1 134 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 134 6 134 17+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 134 6 134 17+                  , srcInfoPoints = []+                  }+                "Permissions"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 135 4 138 5+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 135 16 135 17+                    , SrcSpan "tests/examples/Directory.hs" 138 4 138 5+                    ]+                }+              Nothing+              Nothing+              (RecDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 135 4 138 5+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 135 16 135 17+                       , SrcSpan "tests/examples/Directory.hs" 138 4 138 5+                       ]+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 135 4 135 15+                      , srcInfoPoints = []+                      }+                    "Permissions")+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 136 5 137 35+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/Directory.hs" 136 13 136 14+                           , SrcSpan "tests/examples/Directory.hs" 136 25 136 26+                           , SrcSpan "tests/examples/Directory.hs" 137 15 137 16+                           , SrcSpan "tests/examples/Directory.hs" 137 28 137 30+                           ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 136 5 136 13+                           , srcInfoPoints = []+                           }+                         "readable"+                     , Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 136 17 136 25+                           , srcInfoPoints = []+                           }+                         "writable"+                     , Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 5 137 15+                           , srcInfoPoints = []+                           }+                         "executable"+                     , Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 17 137 27+                           , srcInfoPoints = []+                           }+                         "searchable"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 31 137 35+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 31 137 35+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 31 137 35+                                , srcInfoPoints = []+                                }+                              "Bool")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 6 138 36+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 138 6 138 14+                    , SrcSpan "tests/examples/Directory.hs" 138 15 138 16+                    , SrcSpan "tests/examples/Directory.hs" 138 18 138 19+                    , SrcSpan "tests/examples/Directory.hs" 138 23 138 24+                    , SrcSpan "tests/examples/Directory.hs" 138 29 138 30+                    , SrcSpan "tests/examples/Directory.hs" 138 35 138 36+                    ]+                }+              Nothing+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 16 138 18+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 16 138 18+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 16 138 18+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 16 138 18+                             , srcInfoPoints = []+                             }+                           "Eq")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 20 138 23+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 20 138 23+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 20 138 23+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 20 138 23+                             , srcInfoPoints = []+                             }+                           "Ord")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 25 138 29+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 25 138 29+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 25 138 29+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 25 138 29+                             , srcInfoPoints = []+                             }+                           "Read")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 31 138 35+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 31 138 35+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 31 138 35+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 31 138 35+                             , srcInfoPoints = []+                             }+                           "Show")))+              ]+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 1 152 45+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 152 16 152 18 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 1 152 15+                , srcInfoPoints = []+                }+              "getPermissions"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 19 152 45+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 152 28 152 30 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 19 152 27+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 19 152 27+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 19 152 27+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 31 152 45+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 31 152 33+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 31 152 33+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 31 152 33+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 34 152 45+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 34 152 45+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 34 152 45+                           , srcInfoPoints = []+                           }+                         "Permissions")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 1 175 5+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 1 175 5+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 1 153 15+                   , srcInfoPoints = []+                   }+                 "getPermissions")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 16 153 20+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 16 153 20+                       , srcInfoPoints = []+                       }+                     "name")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 21 175 5+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 153 21 153 22 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 23 175 5+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 153 23 153 25+                          , SrcSpan "tests/examples/Directory.hs" 154 3 154 3+                          , SrcSpan "tests/examples/Directory.hs" 189 1 189 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 3 175 5+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 3 175 5+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 3 154 20+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 154 3 154 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 154 3 154 15+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 154 3 154 15+                                         , srcInfoPoints = []+                                         }+                                       "withFilePath")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 154 16 154 20+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 154 16 154 20+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 154 16 154 20+                                         , srcInfoPoints = []+                                         }+                                       "name"))))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 21 154 22+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 154 21 154 22+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 154 21 154 22+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (Lambda+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 23 175 5+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 154 23 154 24+                                    , SrcSpan "tests/examples/Directory.hs" 154 26 154 28+                                    ]+                                }+                              [ PVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 154 24 154 25+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 154 24 154 25+                                       , srcInfoPoints = []+                                       }+                                     "s")+                              ]+                              (Do+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 154 29 175 5+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 154 29 154 31+                                       , SrcSpan "tests/examples/Directory.hs" 161 3 161 3+                                       , SrcSpan "tests/examples/Directory.hs" 161 3 161 3+                                       , SrcSpan "tests/examples/Directory.hs" 189 1 189 0+                                       ]+                                   }+                                 [ Qualifier+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 161 3 175 5+                                       , srcInfoPoints = []+                                       }+                                     (InfixApp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 161 3 175 5+                                          , srcInfoPoints = []+                                          }+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 161 3 161 26+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 161 3 161 14+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 161 3 161 14+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            161+                                                            3+                                                            161+                                                            14+                                                      , srcInfoPoints = []+                                                      }+                                                    "allocaBytes")))+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 161 15 161 26+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 161 15 161 26+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            161+                                                            15+                                                            161+                                                            26+                                                      , srcInfoPoints = []+                                                      }+                                                    "sizeof_stat"))))+                                        (QVarOp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 161 27 161 28+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 161 27 161 28+                                                , srcInfoPoints = []+                                                }+                                              (Symbol+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 161 27 161 28+                                                   , srcInfoPoints = []+                                                   }+                                                 "$")))+                                        (Lambda+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 161 29 175 5+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 161 29 161 30+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 161 38 161 40+                                                 ]+                                             }+                                           [ PVar+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 161 31 161 37+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          161+                                                          31+                                                          161+                                                          37+                                                    , srcInfoPoints = []+                                                    }+                                                  "p_stat")+                                           ]+                                           (Do+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 161 41 175 5+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/Directory.hs" 161 41 161 43+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 162 3 162 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 162 3 162 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 163 3 163 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 164 3 164 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 165 3 165 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 166 3 166 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 167 3 167 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 168 3 168 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 189 1 189 0+                                                    ]+                                                }+                                              [ Qualifier+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 162 3 162 57+                                                    , srcInfoPoints = []+                                                    }+                                                  (InfixApp+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             162+                                                             3+                                                             162+                                                             57+                                                       , srcInfoPoints = []+                                                       }+                                                     (App+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                162+                                                                3+                                                                162+                                                                39+                                                          , srcInfoPoints = []+                                                          }+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   162+                                                                   3+                                                                   162+                                                                   22+                                                             , srcInfoPoints = []+                                                             }+                                                           (UnQual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      162+                                                                      3+                                                                      162+                                                                      22+                                                                , srcInfoPoints = []+                                                                }+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         162+                                                                         3+                                                                         162+                                                                         22+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "throwErrnoIfMinus1_")))+                                                        (Lit+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   162+                                                                   23+                                                                   162+                                                                   39+                                                             , srcInfoPoints = []+                                                             }+                                                           (String+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      162+                                                                      23+                                                                      162+                                                                      39+                                                                , srcInfoPoints = []+                                                                }+                                                              "getPermissions"+                                                              "getPermissions")))+                                                     (QVarOp+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                162+                                                                40+                                                                162+                                                                41+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   162+                                                                   40+                                                                   162+                                                                   41+                                                             , srcInfoPoints = []+                                                             }+                                                           (Symbol+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      162+                                                                      40+                                                                      162+                                                                      41+                                                                , srcInfoPoints = []+                                                                }+                                                              "$")))+                                                     (App+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                162+                                                                42+                                                                162+                                                                57+                                                          , srcInfoPoints = []+                                                          }+                                                        (App+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   162+                                                                   42+                                                                   162+                                                                   50+                                                             , srcInfoPoints = []+                                                             }+                                                           (Var+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      162+                                                                      42+                                                                      162+                                                                      48+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         162+                                                                         42+                                                                         162+                                                                         48+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/Directory.hs"+                                                                            162+                                                                            42+                                                                            162+                                                                            48+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "c_stat")))+                                                           (Var+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      162+                                                                      49+                                                                      162+                                                                      50+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         162+                                                                         49+                                                                         162+                                                                         50+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/Directory.hs"+                                                                            162+                                                                            49+                                                                            162+                                                                            50+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "s"))))+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   162+                                                                   51+                                                                   162+                                                                   57+                                                             , srcInfoPoints = []+                                                             }+                                                           (UnQual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      162+                                                                      51+                                                                      162+                                                                      57+                                                                , srcInfoPoints = []+                                                                }+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         162+                                                                         51+                                                                         162+                                                                         57+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "p_stat")))))+                                              , Generator+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 163 3 163 25+                                                    , srcInfoPoints =+                                                        [ SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            163+                                                            8+                                                            163+                                                            10+                                                        ]+                                                    }+                                                  (PVar+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             163+                                                             3+                                                             163+                                                             7+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                163+                                                                3+                                                                163+                                                                7+                                                          , srcInfoPoints = []+                                                          }+                                                        "mode"))+                                                  (App+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             163+                                                             11+                                                             163+                                                             25+                                                       , srcInfoPoints = []+                                                       }+                                                     (Var+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                163+                                                                11+                                                                163+                                                                18+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   163+                                                                   11+                                                                   163+                                                                   18+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      163+                                                                      11+                                                                      163+                                                                      18+                                                                , srcInfoPoints = []+                                                                }+                                                              "st_mode")))+                                                     (Var+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                163+                                                                19+                                                                163+                                                                25+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   163+                                                                   19+                                                                   163+                                                                   25+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      163+                                                                      19+                                                                      163+                                                                      25+                                                                , srcInfoPoints = []+                                                                }+                                                              "p_stat"))))+                                              , LetStmt+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 164 3 164 36+                                                    , srcInfoPoints =+                                                        [ SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            164+                                                            3+                                                            164+                                                            6+                                                        ]+                                                    }+                                                  (BDecls+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             164+                                                             7+                                                             164+                                                             36+                                                       , srcInfoPoints =+                                                           [ SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               164+                                                               7+                                                               164+                                                               7+                                                           , SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               165+                                                               3+                                                               165+                                                               0+                                                           ]+                                                       }+                                                     [ PatBind+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 164+                                                                 7+                                                                 164+                                                                 36+                                                           , srcInfoPoints = []+                                                           }+                                                         (PVar+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    164+                                                                    7+                                                                    164+                                                                    15+                                                              , srcInfoPoints = []+                                                              }+                                                            (Ident+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       164+                                                                       7+                                                                       164+                                                                       15+                                                                 , srcInfoPoints = []+                                                                 }+                                                               "usr_read"))+                                                         (UnGuardedRhs+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    164+                                                                    18+                                                                    164+                                                                    36+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      164+                                                                      18+                                                                      164+                                                                      19+                                                                  ]+                                                              }+                                                            (InfixApp+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       164+                                                                       20+                                                                       164+                                                                       36+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          164+                                                                          20+                                                                          164+                                                                          24+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             164+                                                                             20+                                                                             164+                                                                             24+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                164+                                                                                20+                                                                                164+                                                                                24+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "mode")))+                                                               (QVarOp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          164+                                                                          25+                                                                          164+                                                                          28+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             164+                                                                             25+                                                                             164+                                                                             28+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Symbol+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                164+                                                                                25+                                                                                164+                                                                                28+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        ".&.")))+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          164+                                                                          29+                                                                          164+                                                                          36+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             164+                                                                             29+                                                                             164+                                                                             36+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                164+                                                                                29+                                                                                164+                                                                                36+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "s_IRUSR")))))+                                                         Nothing+                                                     ])+                                              , LetStmt+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 165 3 165 36+                                                    , srcInfoPoints =+                                                        [ SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            165+                                                            3+                                                            165+                                                            6+                                                        ]+                                                    }+                                                  (BDecls+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             165+                                                             7+                                                             165+                                                             36+                                                       , srcInfoPoints =+                                                           [ SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               165+                                                               7+                                                               165+                                                               7+                                                           , SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               166+                                                               3+                                                               166+                                                               0+                                                           ]+                                                       }+                                                     [ PatBind+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 165+                                                                 7+                                                                 165+                                                                 36+                                                           , srcInfoPoints = []+                                                           }+                                                         (PVar+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    165+                                                                    7+                                                                    165+                                                                    16+                                                              , srcInfoPoints = []+                                                              }+                                                            (Ident+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       165+                                                                       7+                                                                       165+                                                                       16+                                                                 , srcInfoPoints = []+                                                                 }+                                                               "usr_write"))+                                                         (UnGuardedRhs+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    165+                                                                    18+                                                                    165+                                                                    36+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      165+                                                                      18+                                                                      165+                                                                      19+                                                                  ]+                                                              }+                                                            (InfixApp+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       165+                                                                       20+                                                                       165+                                                                       36+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          165+                                                                          20+                                                                          165+                                                                          24+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             165+                                                                             20+                                                                             165+                                                                             24+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                165+                                                                                20+                                                                                165+                                                                                24+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "mode")))+                                                               (QVarOp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          165+                                                                          25+                                                                          165+                                                                          28+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             165+                                                                             25+                                                                             165+                                                                             28+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Symbol+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                165+                                                                                25+                                                                                165+                                                                                28+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        ".&.")))+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          165+                                                                          29+                                                                          165+                                                                          36+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             165+                                                                             29+                                                                             165+                                                                             36+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                165+                                                                                29+                                                                                165+                                                                                36+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "s_IWUSR")))))+                                                         Nothing+                                                     ])+                                              , LetStmt+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 166 3 166 36+                                                    , srcInfoPoints =+                                                        [ SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            166+                                                            3+                                                            166+                                                            6+                                                        ]+                                                    }+                                                  (BDecls+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             166+                                                             7+                                                             166+                                                             36+                                                       , srcInfoPoints =+                                                           [ SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               166+                                                               7+                                                               166+                                                               7+                                                           , SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               167+                                                               3+                                                               167+                                                               0+                                                           ]+                                                       }+                                                     [ PatBind+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 166+                                                                 7+                                                                 166+                                                                 36+                                                           , srcInfoPoints = []+                                                           }+                                                         (PVar+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    166+                                                                    7+                                                                    166+                                                                    15+                                                              , srcInfoPoints = []+                                                              }+                                                            (Ident+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       166+                                                                       7+                                                                       166+                                                                       15+                                                                 , srcInfoPoints = []+                                                                 }+                                                               "usr_exec"))+                                                         (UnGuardedRhs+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    166+                                                                    18+                                                                    166+                                                                    36+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      166+                                                                      18+                                                                      166+                                                                      19+                                                                  ]+                                                              }+                                                            (InfixApp+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       166+                                                                       20+                                                                       166+                                                                       36+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          166+                                                                          20+                                                                          166+                                                                          24+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             166+                                                                             20+                                                                             166+                                                                             24+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                166+                                                                                20+                                                                                166+                                                                                24+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "mode")))+                                                               (QVarOp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          166+                                                                          25+                                                                          166+                                                                          28+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             166+                                                                             25+                                                                             166+                                                                             28+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Symbol+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                166+                                                                                25+                                                                                166+                                                                                28+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        ".&.")))+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          166+                                                                          29+                                                                          166+                                                                          36+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             166+                                                                             29+                                                                             166+                                                                             36+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                166+                                                                                29+                                                                                166+                                                                                36+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "s_IXUSR")))))+                                                         Nothing+                                                     ])+                                              , LetStmt+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 167 3 167 32+                                                    , srcInfoPoints =+                                                        [ SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            167+                                                            3+                                                            167+                                                            6+                                                        ]+                                                    }+                                                  (BDecls+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             167+                                                             7+                                                             167+                                                             32+                                                       , srcInfoPoints =+                                                           [ SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               167+                                                               7+                                                               167+                                                               7+                                                           , SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               168+                                                               3+                                                               168+                                                               0+                                                           ]+                                                       }+                                                     [ PatBind+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 167+                                                                 7+                                                                 167+                                                                 32+                                                           , srcInfoPoints = []+                                                           }+                                                         (PVar+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    167+                                                                    7+                                                                    167+                                                                    13+                                                              , srcInfoPoints = []+                                                              }+                                                            (Ident+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       167+                                                                       7+                                                                       167+                                                                       13+                                                                 , srcInfoPoints = []+                                                                 }+                                                               "is_dir"))+                                                         (UnGuardedRhs+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    167+                                                                    14+                                                                    167+                                                                    32+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      167+                                                                      14+                                                                      167+                                                                      15+                                                                  ]+                                                              }+                                                            (InfixApp+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       167+                                                                       16+                                                                       167+                                                                       32+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          167+                                                                          16+                                                                          167+                                                                          20+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             167+                                                                             16+                                                                             167+                                                                             20+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                167+                                                                                16+                                                                                167+                                                                                20+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "mode")))+                                                               (QVarOp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          167+                                                                          21+                                                                          167+                                                                          24+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             167+                                                                             21+                                                                             167+                                                                             24+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Symbol+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                167+                                                                                21+                                                                                167+                                                                                24+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        ".&.")))+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          167+                                                                          25+                                                                          167+                                                                          32+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             167+                                                                             25+                                                                             167+                                                                             32+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                167+                                                                                25+                                                                                167+                                                                                32+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "s_IFDIR")))))+                                                         Nothing+                                                     ])+                                              , Qualifier+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 168 3 175 5+                                                    , srcInfoPoints = []+                                                    }+                                                  (App+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             168+                                                             3+                                                             175+                                                             5+                                                       , srcInfoPoints = []+                                                       }+                                                     (Var+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                168+                                                                3+                                                                168+                                                                9+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   168+                                                                   3+                                                                   168+                                                                   9+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      168+                                                                      3+                                                                      168+                                                                      9+                                                                , srcInfoPoints = []+                                                                }+                                                              "return")))+                                                     (Paren+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                168+                                                                10+                                                                175+                                                                5+                                                          , srcInfoPoints =+                                                              [ SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  168+                                                                  10+                                                                  168+                                                                  11+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  175+                                                                  4+                                                                  175+                                                                  5+                                                              ]+                                                          }+                                                        (RecConstr+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   169+                                                                   5+                                                                   174+                                                                   6+                                                             , srcInfoPoints =+                                                                 [ SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     169+                                                                     17+                                                                     169+                                                                     18+                                                                 , SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     170+                                                                     34+                                                                     170+                                                                     35+                                                                 , SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     171+                                                                     34+                                                                     171+                                                                     35+                                                                 , SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     172+                                                                     48+                                                                     172+                                                                     49+                                                                 , SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     174+                                                                     5+                                                                     174+                                                                     6+                                                                 ]+                                                             }+                                                           (UnQual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      169+                                                                      5+                                                                      169+                                                                      16+                                                                , srcInfoPoints = []+                                                                }+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         169+                                                                         5+                                                                         169+                                                                         16+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "Permissions"))+                                                           [ FieldUpdate+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       170+                                                                       7+                                                                       170+                                                                       34+                                                                 , srcInfoPoints =+                                                                     [ SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         170+                                                                         18+                                                                         170+                                                                         19+                                                                     ]+                                                                 }+                                                               (UnQual+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          170+                                                                          7+                                                                          170+                                                                          15+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Ident+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             170+                                                                             7+                                                                             170+                                                                             15+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     "readable"))+                                                               (InfixApp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          170+                                                                          20+                                                                          170+                                                                          34+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Var+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             170+                                                                             20+                                                                             170+                                                                             28+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                170+                                                                                20+                                                                                170+                                                                                28+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Ident+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   170+                                                                                   20+                                                                                   170+                                                                                   28+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "usr_read")))+                                                                  (QVarOp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             170+                                                                             30+                                                                             170+                                                                             32+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                170+                                                                                30+                                                                                170+                                                                                32+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Symbol+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   170+                                                                                   30+                                                                                   170+                                                                                   32+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "/=")))+                                                                  (Lit+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             170+                                                                             33+                                                                             170+                                                                             34+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Int+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                170+                                                                                33+                                                                                170+                                                                                34+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        0+                                                                        "0")))+                                                           , FieldUpdate+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       171+                                                                       7+                                                                       171+                                                                       34+                                                                 , srcInfoPoints =+                                                                     [ SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         171+                                                                         18+                                                                         171+                                                                         19+                                                                     ]+                                                                 }+                                                               (UnQual+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          171+                                                                          7+                                                                          171+                                                                          15+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Ident+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             171+                                                                             7+                                                                             171+                                                                             15+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     "writable"))+                                                               (InfixApp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          171+                                                                          20+                                                                          171+                                                                          34+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Var+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             171+                                                                             20+                                                                             171+                                                                             29+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                171+                                                                                20+                                                                                171+                                                                                29+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Ident+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   171+                                                                                   20+                                                                                   171+                                                                                   29+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "usr_write")))+                                                                  (QVarOp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             171+                                                                             30+                                                                             171+                                                                             32+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                171+                                                                                30+                                                                                171+                                                                                32+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Symbol+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   171+                                                                                   30+                                                                                   171+                                                                                   32+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "/=")))+                                                                  (Lit+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             171+                                                                             33+                                                                             171+                                                                             34+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Int+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                171+                                                                                33+                                                                                171+                                                                                34+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        0+                                                                        "0")))+                                                           , FieldUpdate+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       172+                                                                       7+                                                                       172+                                                                       48+                                                                 , srcInfoPoints =+                                                                     [ SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         172+                                                                         18+                                                                         172+                                                                         19+                                                                     ]+                                                                 }+                                                               (UnQual+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          172+                                                                          7+                                                                          172+                                                                          17+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Ident+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             172+                                                                             7+                                                                             172+                                                                             17+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     "executable"))+                                                               (InfixApp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          172+                                                                          20+                                                                          172+                                                                          48+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (InfixApp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             172+                                                                             20+                                                                             172+                                                                             31+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Var+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                172+                                                                                20+                                                                                172+                                                                                26+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   172+                                                                                   20+                                                                                   172+                                                                                   26+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Ident+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      172+                                                                                      20+                                                                                      172+                                                                                      26+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "is_dir")))+                                                                     (QVarOp+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                172+                                                                                27+                                                                                172+                                                                                29+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   172+                                                                                   27+                                                                                   172+                                                                                   29+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Symbol+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      172+                                                                                      27+                                                                                      172+                                                                                      29+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "==")))+                                                                     (Lit+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                172+                                                                                30+                                                                                172+                                                                                31+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Int+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   172+                                                                                   30+                                                                                   172+                                                                                   31+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           0+                                                                           "0")))+                                                                  (QVarOp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             172+                                                                             32+                                                                             172+                                                                             34+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                172+                                                                                32+                                                                                172+                                                                                34+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Symbol+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   172+                                                                                   32+                                                                                   172+                                                                                   34+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "&&")))+                                                                  (InfixApp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             172+                                                                             35+                                                                             172+                                                                             48+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Var+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                172+                                                                                35+                                                                                172+                                                                                43+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   172+                                                                                   35+                                                                                   172+                                                                                   43+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Ident+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      172+                                                                                      35+                                                                                      172+                                                                                      43+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "usr_exec")))+                                                                     (QVarOp+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                172+                                                                                44+                                                                                172+                                                                                46+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   172+                                                                                   44+                                                                                   172+                                                                                   46+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Symbol+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      172+                                                                                      44+                                                                                      172+                                                                                      46+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "/=")))+                                                                     (Lit+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                172+                                                                                47+                                                                                172+                                                                                48+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Int+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   172+                                                                                   47+                                                                                   172+                                                                                   48+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           0+                                                                           "0"))))+                                                           , FieldUpdate+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       173+                                                                       7+                                                                       173+                                                                       48+                                                                 , srcInfoPoints =+                                                                     [ SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         173+                                                                         18+                                                                         173+                                                                         19+                                                                     ]+                                                                 }+                                                               (UnQual+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          173+                                                                          7+                                                                          173+                                                                          17+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Ident+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             173+                                                                             7+                                                                             173+                                                                             17+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     "searchable"))+                                                               (InfixApp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          173+                                                                          20+                                                                          173+                                                                          48+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (InfixApp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             173+                                                                             20+                                                                             173+                                                                             31+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Var+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                173+                                                                                20+                                                                                173+                                                                                26+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   173+                                                                                   20+                                                                                   173+                                                                                   26+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Ident+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      173+                                                                                      20+                                                                                      173+                                                                                      26+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "is_dir")))+                                                                     (QVarOp+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                173+                                                                                27+                                                                                173+                                                                                29+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   173+                                                                                   27+                                                                                   173+                                                                                   29+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Symbol+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      173+                                                                                      27+                                                                                      173+                                                                                      29+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "/=")))+                                                                     (Lit+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                173+                                                                                30+                                                                                173+                                                                                31+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Int+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   173+                                                                                   30+                                                                                   173+                                                                                   31+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           0+                                                                           "0")))+                                                                  (QVarOp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             173+                                                                             32+                                                                             173+                                                                             34+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                173+                                                                                32+                                                                                173+                                                                                34+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Symbol+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   173+                                                                                   32+                                                                                   173+                                                                                   34+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "&&")))+                                                                  (InfixApp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             173+                                                                             35+                                                                             173+                                                                             48+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Var+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                173+                                                                                35+                                                                                173+                                                                                43+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   173+                                                                                   35+                                                                                   173+                                                                                   43+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Ident+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      173+                                                                                      35+                                                                                      173+                                                                                      43+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "usr_exec")))+                                                                     (QVarOp+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                173+                                                                                44+                                                                                173+                                                                                46+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   173+                                                                                   44+                                                                                   173+                                                                                   46+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Symbol+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      173+                                                                                      44+                                                                                      173+                                                                                      46+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "/=")))+                                                                     (Lit+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                173+                                                                                47+                                                                                173+                                                                                48+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Int+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   173+                                                                                   47+                                                                                   173+                                                                                   48+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           0+                                                                           "0"))))+                                                           ])))+                                              ])))+                                 ])))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 1 189 51+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 189 16 189 18 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 1 189 15+                , srcInfoPoints = []+                }+              "setPermissions"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 19 189 51+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 189 28 189 30 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 19 189 27+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 19 189 27+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 19 189 27+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 31 189 51+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 189 43 189 45 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 31 189 42+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 31 189 42+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 31 189 42+                           , srcInfoPoints = []+                           }+                         "Permissions")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 46 189 51+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 46 189 48+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 46 189 48+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 46 189 48+                              , srcInfoPoints = []+                              }+                            "IO")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 49 189 51+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 189 49 189 50+                            , SrcSpan "tests/examples/Directory.hs" 189 50 189 51+                            ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 49 189 51+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 189 49 189 50+                               , SrcSpan "tests/examples/Directory.hs" 189 50 189 51+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 49 189 51+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Directory.hs" 189 49 189 50+                                  , SrcSpan "tests/examples/Directory.hs" 189 50 189 51+                                  ]+                              }))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 1 203 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 200 2 200 7 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 1 203 33+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 200 2 200 7 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 1 190 15+                   , srcInfoPoints = []+                   }+                 "setPermissions")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 16 190 20+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 16 190 20+                       , srcInfoPoints = []+                       }+                     "name")+              , PParen+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 21 190 42+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Directory.hs" 190 21 190 22+                        , SrcSpan "tests/examples/Directory.hs" 190 41 190 42+                        ]+                    }+                  (PApp+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 22 190 41+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 22 190 33+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 22 190 33+                             , srcInfoPoints = []+                             }+                           "Permissions"))+                     [ PVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 34 190 35+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 34 190 35+                              , srcInfoPoints = []+                              }+                            "r")+                     , PVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 36 190 37+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 36 190 37+                              , srcInfoPoints = []+                              }+                            "w")+                     , PVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 38 190 39+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 38 190 39+                              , srcInfoPoints = []+                              }+                            "e")+                     , PVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 40 190 41+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 40 190 41+                              , srcInfoPoints = []+                              }+                            "s")+                     ])+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 43 199 28+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 190 43 190 44 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 45 199 28+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 190 45 190 47+                          , SrcSpan "tests/examples/Directory.hs" 191 3 191 3+                          , SrcSpan "tests/examples/Directory.hs" 200 2 200 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 3 199 28+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 3 199 28+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 3 191 26+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 191 3 191 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 191 3 191 14+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 191 3 191 14+                                         , srcInfoPoints = []+                                         }+                                       "allocaBytes")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 191 15 191 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 191 15 191 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 191 15 191 26+                                         , srcInfoPoints = []+                                         }+                                       "sizeof_stat"))))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 27 191 28+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 191 27 191 28+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 191 27 191 28+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (Lambda+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 29 199 28+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 191 29 191 30+                                    , SrcSpan "tests/examples/Directory.hs" 191 38 191 40+                                    ]+                                }+                              [ PVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 191 31 191 37+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 191 31 191 37+                                       , srcInfoPoints = []+                                       }+                                     "p_stat")+                              ]+                              (Do+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 191 41 199 28+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 191 41 191 43+                                       , SrcSpan "tests/examples/Directory.hs" 192 3 192 3+                                       , SrcSpan "tests/examples/Directory.hs" 192 3 192 3+                                       , SrcSpan "tests/examples/Directory.hs" 200 2 200 0+                                       ]+                                   }+                                 [ Qualifier+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 192 3 199 28+                                       , srcInfoPoints = []+                                       }+                                     (InfixApp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 192 3 199 28+                                          , srcInfoPoints = []+                                          }+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 192 3 192 20+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 192 3 192 15+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 192 3 192 15+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            192+                                                            3+                                                            192+                                                            15+                                                      , srcInfoPoints = []+                                                      }+                                                    "withFilePath")))+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 192 16 192 20+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 192 16 192 20+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            192+                                                            16+                                                            192+                                                            20+                                                      , srcInfoPoints = []+                                                      }+                                                    "name"))))+                                        (QVarOp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 192 21 192 22+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 192 21 192 22+                                                , srcInfoPoints = []+                                                }+                                              (Symbol+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 192 21 192 22+                                                   , srcInfoPoints = []+                                                   }+                                                 "$")))+                                        (Lambda+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 192 23 199 28+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 192 23 192 24+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 192 31 192 33+                                                 ]+                                             }+                                           [ PVar+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 192 24 192 30+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          192+                                                          24+                                                          192+                                                          30+                                                    , srcInfoPoints = []+                                                    }+                                                  "p_name")+                                           ]+                                           (Do+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 192 34 199 28+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/Directory.hs" 192 34 192 36+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 193 5 193 5+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 200 2 200 0+                                                    ]+                                                }+                                              [ Qualifier+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 193 5 199 28+                                                    , srcInfoPoints = []+                                                    }+                                                  (InfixApp+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             193+                                                             5+                                                             199+                                                             28+                                                       , srcInfoPoints = []+                                                       }+                                                     (App+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                193+                                                                5+                                                                193+                                                                41+                                                          , srcInfoPoints = []+                                                          }+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   193+                                                                   5+                                                                   193+                                                                   24+                                                             , srcInfoPoints = []+                                                             }+                                                           (UnQual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      193+                                                                      5+                                                                      193+                                                                      24+                                                                , srcInfoPoints = []+                                                                }+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         193+                                                                         5+                                                                         193+                                                                         24+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "throwErrnoIfMinus1_")))+                                                        (Lit+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   193+                                                                   25+                                                                   193+                                                                   41+                                                             , srcInfoPoints = []+                                                             }+                                                           (String+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      193+                                                                      25+                                                                      193+                                                                      41+                                                                , srcInfoPoints = []+                                                                }+                                                              "setPermissions"+                                                              "setPermissions")))+                                                     (QVarOp+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                193+                                                                42+                                                                193+                                                                43+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   193+                                                                   42+                                                                   193+                                                                   43+                                                             , srcInfoPoints = []+                                                             }+                                                           (Symbol+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      193+                                                                      42+                                                                      193+                                                                      43+                                                                , srcInfoPoints = []+                                                                }+                                                              "$")))+                                                     (Do+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                193+                                                                44+                                                                199+                                                                28+                                                          , srcInfoPoints =+                                                              [ SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  193+                                                                  44+                                                                  193+                                                                  46+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  194+                                                                  7+                                                                  194+                                                                  7+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  195+                                                                  7+                                                                  195+                                                                  7+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  196+                                                                  7+                                                                  196+                                                                  7+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  197+                                                                  7+                                                                  197+                                                                  7+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  198+                                                                  7+                                                                  198+                                                                  7+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  199+                                                                  7+                                                                  199+                                                                  7+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  200+                                                                  2+                                                                  200+                                                                  0+                                                              ]+                                                          }+                                                        [ Qualifier+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    194+                                                                    7+                                                                    194+                                                                    27+                                                              , srcInfoPoints = []+                                                              }+                                                            (App+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       194+                                                                       7+                                                                       194+                                                                       27+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (App+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          194+                                                                          7+                                                                          194+                                                                          20+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Var+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             194+                                                                             7+                                                                             194+                                                                             13+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                194+                                                                                7+                                                                                194+                                                                                13+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Ident+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   194+                                                                                   7+                                                                                   194+                                                                                   13+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "c_stat")))+                                                                  (Var+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             194+                                                                             14+                                                                             194+                                                                             20+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                194+                                                                                14+                                                                                194+                                                                                20+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Ident+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   194+                                                                                   14+                                                                                   194+                                                                                   20+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "p_name"))))+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          194+                                                                          21+                                                                          194+                                                                          27+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             194+                                                                             21+                                                                             194+                                                                             27+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                194+                                                                                21+                                                                                194+                                                                                27+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "p_stat"))))+                                                        , Generator+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    195+                                                                    7+                                                                    195+                                                                    29+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      195+                                                                      12+                                                                      195+                                                                      14+                                                                  ]+                                                              }+                                                            (PVar+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       195+                                                                       7+                                                                       195+                                                                       11+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Ident+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          195+                                                                          7+                                                                          195+                                                                          11+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  "mode"))+                                                            (App+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       195+                                                                       15+                                                                       195+                                                                       29+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          195+                                                                          15+                                                                          195+                                                                          22+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             195+                                                                             15+                                                                             195+                                                                             22+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                195+                                                                                15+                                                                                195+                                                                                22+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "st_mode")))+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          195+                                                                          23+                                                                          195+                                                                          29+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             195+                                                                             23+                                                                             195+                                                                             29+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                195+                                                                                23+                                                                                195+                                                                                29+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "p_stat"))))+                                                        , LetStmt+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    196+                                                                    7+                                                                    196+                                                                    43+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      196+                                                                      7+                                                                      196+                                                                      10+                                                                  ]+                                                              }+                                                            (BDecls+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       196+                                                                       11+                                                                       196+                                                                       43+                                                                 , srcInfoPoints =+                                                                     [ SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         196+                                                                         11+                                                                         196+                                                                         11+                                                                     , SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         197+                                                                         7+                                                                         197+                                                                         0+                                                                     ]+                                                                 }+                                                               [ PatBind+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           196+                                                                           11+                                                                           196+                                                                           43+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (PVar+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              196+                                                                              11+                                                                              196+                                                                              16+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (Ident+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 196+                                                                                 11+                                                                                 196+                                                                                 16+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         "mode1"))+                                                                   (UnGuardedRhs+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              196+                                                                              17+                                                                              196+                                                                              43+                                                                        , srcInfoPoints =+                                                                            [ SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                196+                                                                                17+                                                                                196+                                                                                18+                                                                            ]+                                                                        }+                                                                      (App+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 196+                                                                                 19+                                                                                 196+                                                                                 43+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (App+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    196+                                                                                    19+                                                                                    196+                                                                                    35+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            (App+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       196+                                                                                       19+                                                                                       196+                                                                                       30+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               (Var+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          196+                                                                                          19+                                                                                          196+                                                                                          28+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  (UnQual+                                                                                     SrcSpanInfo+                                                                                       { srcInfoSpan =+                                                                                           SrcSpan+                                                                                             "tests/examples/Directory.hs"+                                                                                             196+                                                                                             19+                                                                                             196+                                                                                             28+                                                                                       , srcInfoPoints =+                                                                                           []+                                                                                       }+                                                                                     (Ident+                                                                                        SrcSpanInfo+                                                                                          { srcInfoSpan =+                                                                                              SrcSpan+                                                                                                "tests/examples/Directory.hs"+                                                                                                196+                                                                                                19+                                                                                                196+                                                                                                28+                                                                                          , srcInfoPoints =+                                                                                              []+                                                                                          }+                                                                                        "modifyBit")))+                                                                               (Var+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          196+                                                                                          29+                                                                                          196+                                                                                          30+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  (UnQual+                                                                                     SrcSpanInfo+                                                                                       { srcInfoSpan =+                                                                                           SrcSpan+                                                                                             "tests/examples/Directory.hs"+                                                                                             196+                                                                                             29+                                                                                             196+                                                                                             30+                                                                                       , srcInfoPoints =+                                                                                           []+                                                                                       }+                                                                                     (Ident+                                                                                        SrcSpanInfo+                                                                                          { srcInfoSpan =+                                                                                              SrcSpan+                                                                                                "tests/examples/Directory.hs"+                                                                                                196+                                                                                                29+                                                                                                196+                                                                                                30+                                                                                          , srcInfoPoints =+                                                                                              []+                                                                                          }+                                                                                        "r"))))+                                                                            (Var+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       196+                                                                                       31+                                                                                       196+                                                                                       35+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               (UnQual+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          196+                                                                                          31+                                                                                          196+                                                                                          35+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  (Ident+                                                                                     SrcSpanInfo+                                                                                       { srcInfoSpan =+                                                                                           SrcSpan+                                                                                             "tests/examples/Directory.hs"+                                                                                             196+                                                                                             31+                                                                                             196+                                                                                             35+                                                                                       , srcInfoPoints =+                                                                                           []+                                                                                       }+                                                                                     "mode"))))+                                                                         (Var+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    196+                                                                                    36+                                                                                    196+                                                                                    43+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            (UnQual+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       196+                                                                                       36+                                                                                       196+                                                                                       43+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               (Ident+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          196+                                                                                          36+                                                                                          196+                                                                                          43+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  "s_IRUSR")))))+                                                                   Nothing+                                                               ])+                                                        , LetStmt+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    197+                                                                    7+                                                                    197+                                                                    44+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      197+                                                                      7+                                                                      197+                                                                      10+                                                                  ]+                                                              }+                                                            (BDecls+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       197+                                                                       11+                                                                       197+                                                                       44+                                                                 , srcInfoPoints =+                                                                     [ SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         197+                                                                         11+                                                                         197+                                                                         11+                                                                     , SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         198+                                                                         7+                                                                         198+                                                                         0+                                                                     ]+                                                                 }+                                                               [ PatBind+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           197+                                                                           11+                                                                           197+                                                                           44+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (PVar+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              197+                                                                              11+                                                                              197+                                                                              16+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (Ident+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 197+                                                                                 11+                                                                                 197+                                                                                 16+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         "mode2"))+                                                                   (UnGuardedRhs+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              197+                                                                              17+                                                                              197+                                                                              44+                                                                        , srcInfoPoints =+                                                                            [ SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                197+                                                                                17+                                                                                197+                                                                                18+                                                                            ]+                                                                        }+                                                                      (App+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 197+                                                                                 19+                                                                                 197+                                                                                 44+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (App+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    197+                                                                                    19+                                                                                    197+                                                                                    36+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            (App+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       197+                                                                                       19+                                                                                       197+                                                                                       30+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               (Var+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          197+                                                                                          19+                                                                                          197+                                                                                          28+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  (UnQual+                                                                                     SrcSpanInfo+                                                                                       { srcInfoSpan =+                                                                                           SrcSpan+                                                                                             "tests/examples/Directory.hs"+                                                                                             197+                                                                                             19+                                                                                             197+                                                                                             28+                                                                                       , srcInfoPoints =+                                                                                           []+                                                                                       }+                                                                                     (Ident+                                                                                        SrcSpanInfo+                                                                                          { srcInfoSpan =+                                                                                              SrcSpan+                                                                                                "tests/examples/Directory.hs"+                                                                                                197+                                                                                                19+                                                                                                197+                                                                                                28+                                                                                          , srcInfoPoints =+                                                                                              []+                                                                                          }+                                                                                        "modifyBit")))+                                                                               (Var+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          197+                                                                                          29+                                                                                          197+                                                                                          30+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  (UnQual+                                                                                     SrcSpanInfo+                                                                                       { srcInfoSpan =+                                                                                           SrcSpan+                                                                                             "tests/examples/Directory.hs"+                                                                                             197+                                                                                             29+                                                                                             197+                                                                                             30+                                                                                       , srcInfoPoints =+                                                                                           []+                                                                                       }+                                                                                     (Ident+                                                                                        SrcSpanInfo+                                                                                          { srcInfoSpan =+                                                                                              SrcSpan+                                                                                                "tests/examples/Directory.hs"+                                                                                                197+                                                                                                29+                                                                                                197+                                                                                                30+                                                                                          , srcInfoPoints =+                                                                                              []+                                                                                          }+                                                                                        "w"))))+                                                                            (Var+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       197+                                                                                       31+                                                                                       197+                                                                                       36+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               (UnQual+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          197+                                                                                          31+                                                                                          197+                                                                                          36+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  (Ident+                                                                                     SrcSpanInfo+                                                                                       { srcInfoSpan =+                                                                                           SrcSpan+                                                                                             "tests/examples/Directory.hs"+                                                                                             197+                                                                                             31+                                                                                             197+                                                                                             36+                                                                                       , srcInfoPoints =+                                                                                           []+                                                                                       }+                                                                                     "mode1"))))+                                                                         (Var+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    197+                                                                                    37+                                                                                    197+                                                                                    44+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            (UnQual+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       197+                                                                                       37+                                                                                       197+                                                                                       44+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               (Ident+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          197+                                                                                          37+                                                                                          197+                                                                                          44+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  "s_IWUSR")))))+                                                                   Nothing+                                                               ])+                                                        , LetStmt+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    198+                                                                    7+                                                                    198+                                                                    51+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      198+                                                                      7+                                                                      198+                                                                      10+                                                                  ]+                                                              }+                                                            (BDecls+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       198+                                                                       11+                                                                       198+                                                                       51+                                                                 , srcInfoPoints =+                                                                     [ SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         198+                                                                         11+                                                                         198+                                                                         11+                                                                     , SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         199+                                                                         7+                                                                         199+                                                                         0+                                                                     ]+                                                                 }+                                                               [ PatBind+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           198+                                                                           11+                                                                           198+                                                                           51+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (PVar+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              198+                                                                              11+                                                                              198+                                                                              16+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (Ident+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 198+                                                                                 11+                                                                                 198+                                                                                 16+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         "mode3"))+                                                                   (UnGuardedRhs+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              198+                                                                              17+                                                                              198+                                                                              51+                                                                        , srcInfoPoints =+                                                                            [ SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                198+                                                                                17+                                                                                198+                                                                                18+                                                                            ]+                                                                        }+                                                                      (App+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 198+                                                                                 19+                                                                                 198+                                                                                 51+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (App+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    198+                                                                                    19+                                                                                    198+                                                                                    43+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            (App+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       198+                                                                                       19+                                                                                       198+                                                                                       37+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               (Var+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          198+                                                                                          19+                                                                                          198+                                                                                          28+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  (UnQual+                                                                                     SrcSpanInfo+                                                                                       { srcInfoSpan =+                                                                                           SrcSpan+                                                                                             "tests/examples/Directory.hs"+                                                                                             198+                                                                                             19+                                                                                             198+                                                                                             28+                                                                                       , srcInfoPoints =+                                                                                           []+                                                                                       }+                                                                                     (Ident+                                                                                        SrcSpanInfo+                                                                                          { srcInfoSpan =+                                                                                              SrcSpan+                                                                                                "tests/examples/Directory.hs"+                                                                                                198+                                                                                                19+                                                                                                198+                                                                                                28+                                                                                          , srcInfoPoints =+                                                                                              []+                                                                                          }+                                                                                        "modifyBit")))+                                                                               (Paren+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          198+                                                                                          29+                                                                                          198+                                                                                          37+                                                                                    , srcInfoPoints =+                                                                                        [ SrcSpan+                                                                                            "tests/examples/Directory.hs"+                                                                                            198+                                                                                            29+                                                                                            198+                                                                                            30+                                                                                        , SrcSpan+                                                                                            "tests/examples/Directory.hs"+                                                                                            198+                                                                                            36+                                                                                            198+                                                                                            37+                                                                                        ]+                                                                                    }+                                                                                  (InfixApp+                                                                                     SrcSpanInfo+                                                                                       { srcInfoSpan =+                                                                                           SrcSpan+                                                                                             "tests/examples/Directory.hs"+                                                                                             198+                                                                                             30+                                                                                             198+                                                                                             36+                                                                                       , srcInfoPoints =+                                                                                           []+                                                                                       }+                                                                                     (Var+                                                                                        SrcSpanInfo+                                                                                          { srcInfoSpan =+                                                                                              SrcSpan+                                                                                                "tests/examples/Directory.hs"+                                                                                                198+                                                                                                30+                                                                                                198+                                                                                                31+                                                                                          , srcInfoPoints =+                                                                                              []+                                                                                          }+                                                                                        (UnQual+                                                                                           SrcSpanInfo+                                                                                             { srcInfoSpan =+                                                                                                 SrcSpan+                                                                                                   "tests/examples/Directory.hs"+                                                                                                   198+                                                                                                   30+                                                                                                   198+                                                                                                   31+                                                                                             , srcInfoPoints =+                                                                                                 []+                                                                                             }+                                                                                           (Ident+                                                                                              SrcSpanInfo+                                                                                                { srcInfoSpan =+                                                                                                    SrcSpan+                                                                                                      "tests/examples/Directory.hs"+                                                                                                      198+                                                                                                      30+                                                                                                      198+                                                                                                      31+                                                                                                , srcInfoPoints =+                                                                                                    []+                                                                                                }+                                                                                              "e")))+                                                                                     (QVarOp+                                                                                        SrcSpanInfo+                                                                                          { srcInfoSpan =+                                                                                              SrcSpan+                                                                                                "tests/examples/Directory.hs"+                                                                                                198+                                                                                                32+                                                                                                198+                                                                                                34+                                                                                          , srcInfoPoints =+                                                                                              []+                                                                                          }+                                                                                        (UnQual+                                                                                           SrcSpanInfo+                                                                                             { srcInfoSpan =+                                                                                                 SrcSpan+                                                                                                   "tests/examples/Directory.hs"+                                                                                                   198+                                                                                                   32+                                                                                                   198+                                                                                                   34+                                                                                             , srcInfoPoints =+                                                                                                 []+                                                                                             }+                                                                                           (Symbol+                                                                                              SrcSpanInfo+                                                                                                { srcInfoSpan =+                                                                                                    SrcSpan+                                                                                                      "tests/examples/Directory.hs"+                                                                                                      198+                                                                                                      32+                                                                                                      198+                                                                                                      34+                                                                                                , srcInfoPoints =+                                                                                                    []+                                                                                                }+                                                                                              "||")))+                                                                                     (Var+                                                                                        SrcSpanInfo+                                                                                          { srcInfoSpan =+                                                                                              SrcSpan+                                                                                                "tests/examples/Directory.hs"+                                                                                                198+                                                                                                35+                                                                                                198+                                                                                                36+                                                                                          , srcInfoPoints =+                                                                                              []+                                                                                          }+                                                                                        (UnQual+                                                                                           SrcSpanInfo+                                                                                             { srcInfoSpan =+                                                                                                 SrcSpan+                                                                                                   "tests/examples/Directory.hs"+                                                                                                   198+                                                                                                   35+                                                                                                   198+                                                                                                   36+                                                                                             , srcInfoPoints =+                                                                                                 []+                                                                                             }+                                                                                           (Ident+                                                                                              SrcSpanInfo+                                                                                                { srcInfoSpan =+                                                                                                    SrcSpan+                                                                                                      "tests/examples/Directory.hs"+                                                                                                      198+                                                                                                      35+                                                                                                      198+                                                                                                      36+                                                                                                , srcInfoPoints =+                                                                                                    []+                                                                                                }+                                                                                              "s"))))))+                                                                            (Var+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       198+                                                                                       38+                                                                                       198+                                                                                       43+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               (UnQual+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          198+                                                                                          38+                                                                                          198+                                                                                          43+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  (Ident+                                                                                     SrcSpanInfo+                                                                                       { srcInfoSpan =+                                                                                           SrcSpan+                                                                                             "tests/examples/Directory.hs"+                                                                                             198+                                                                                             38+                                                                                             198+                                                                                             43+                                                                                       , srcInfoPoints =+                                                                                           []+                                                                                       }+                                                                                     "mode2"))))+                                                                         (Var+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    198+                                                                                    44+                                                                                    198+                                                                                    51+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            (UnQual+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       198+                                                                                       44+                                                                                       198+                                                                                       51+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               (Ident+                                                                                  SrcSpanInfo+                                                                                    { srcInfoSpan =+                                                                                        SrcSpan+                                                                                          "tests/examples/Directory.hs"+                                                                                          198+                                                                                          44+                                                                                          198+                                                                                          51+                                                                                    , srcInfoPoints =+                                                                                        []+                                                                                    }+                                                                                  "s_IXUSR")))))+                                                                   Nothing+                                                               ])+                                                        , Qualifier+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    199+                                                                    7+                                                                    199+                                                                    28+                                                              , srcInfoPoints = []+                                                              }+                                                            (App+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       199+                                                                       7+                                                                       199+                                                                       28+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (App+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          199+                                                                          7+                                                                          199+                                                                          22+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Var+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             199+                                                                             7+                                                                             199+                                                                             15+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                199+                                                                                7+                                                                                199+                                                                                15+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Ident+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   199+                                                                                   7+                                                                                   199+                                                                                   15+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "c_wchmod")))+                                                                  (Var+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             199+                                                                             16+                                                                             199+                                                                             22+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                199+                                                                                16+                                                                                199+                                                                                22+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Ident+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   199+                                                                                   16+                                                                                   199+                                                                                   22+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "p_name"))))+                                                               (Var+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          199+                                                                          23+                                                                          199+                                                                          28+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (UnQual+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             199+                                                                             23+                                                                             199+                                                                             28+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Ident+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                199+                                                                                23+                                                                                199+                                                                                28+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        "mode3"))))+                                                        ]))+                                              ])))+                                 ])))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 4 203 33+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 201 4 201 4+                          , SrcSpan "tests/examples/Directory.hs" 202 4 202 4+                          , SrcSpan "tests/examples/Directory.hs" 203 4 203 4+                          , SrcSpan "tests/examples/Directory.hs" 205 1 205 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 4 201 48+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 201 14 201 16 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 4 201 13+                              , srcInfoPoints = []+                              }+                            "modifyBit"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 17 201 48+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 201 22 201 24 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 17 201 21+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 201 17 201 21+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 201 17 201 21+                                      , srcInfoPoints = []+                                      }+                                    "Bool")))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 25 201 48+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 201 31 201 33 ]+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 201 25 201 30+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 201 25 201 30+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 201 25 201 30+                                         , srcInfoPoints = []+                                         }+                                       "CMode")))+                              (TyFun+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 201 34 201 48+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 201 40 201 42 ]+                                   }+                                 (TyCon+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 201 34 201 39+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 201 34 201 39+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 201 34 201 39+                                            , srcInfoPoints = []+                                            }+                                          "CMode")))+                                 (TyCon+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 201 43 201 48+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 201 43 201 48+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 201 43 201 48+                                            , srcInfoPoints = []+                                            }+                                          "CMode"))))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 202 4 203 33+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 202 4 202 46+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 202 4 202 13+                                 , srcInfoPoints = []+                                 }+                               "modifyBit")+                            [ PApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 202 14 202 19+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 202 14 202 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 202 14 202 19+                                        , srcInfoPoints = []+                                        }+                                      "False"))+                                []+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 202 20 202 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 202 20 202 21+                                     , srcInfoPoints = []+                                     }+                                   "m")+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 202 22 202 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 202 22 202 23+                                     , srcInfoPoints = []+                                     }+                                   "b")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 202 24 202 46+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 202 24 202 25 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 202 26 202 46+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 202 26 202 27+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 202 26 202 27+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 202 26 202 27+                                             , srcInfoPoints = []+                                             }+                                           "m")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 202 28 202 31+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 202 28 202 31+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 202 28 202 31+                                             , srcInfoPoints = []+                                             }+                                           ".&.")))+                                  (Paren+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 202 32 202 46+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 202 32 202 33+                                           , SrcSpan "tests/examples/Directory.hs" 202 45 202 46+                                           ]+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 202 33 202 45+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 202 33 202 43+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 202 33 202 43+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 202 33 202 43+                                                   , srcInfoPoints = []+                                                   }+                                                 "complement")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 202 44 202 45+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 202 44 202 45+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 202 44 202 45+                                                   , srcInfoPoints = []+                                                   }+                                                 "b")))))))+                            Nothing+                        , Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 203 4 203 33+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 203 4 203 13+                                 , srcInfoPoints = []+                                 }+                               "modifyBit")+                            [ PApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 203 14 203 18+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 203 14 203 18+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 203 14 203 18+                                        , srcInfoPoints = []+                                        }+                                      "True"))+                                []+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 203 20 203 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 203 20 203 21+                                     , srcInfoPoints = []+                                     }+                                   "m")+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 203 22 203 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 203 22 203 23+                                     , srcInfoPoints = []+                                     }+                                   "b")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 203 24 203 33+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 203 24 203 25 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 203 26 203 33+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 203 26 203 27+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 203 26 203 27+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 203 26 203 27+                                             , srcInfoPoints = []+                                             }+                                           "m")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 203 28 203 31+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 203 28 203 31+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 203 28 203 31+                                             , srcInfoPoints = []+                                             }+                                           ".|.")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 203 32 203 33+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 203 32 203 33+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 203 32 203 33+                                             , srcInfoPoints = []+                                             }+                                           "b")))))+                            Nothing+                        ]+                    ]))+          ]+      , ForImp+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 205 1 206 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 205 1 205 8+                , SrcSpan "tests/examples/Directory.hs" 205 9 205 15+                , SrcSpan "tests/examples/Directory.hs" 205 29 205 38+                , SrcSpan "tests/examples/Directory.hs" 206 13 206 15+                ]+            }+          (CCall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 205 16 205 21+               , srcInfoPoints = []+               })+          (Just+             (PlayRisky+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 205 22 205 28+                  , srcInfoPoints = []+                  }))+          (Just "_wchmod")+          (Ident+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 4 206 12+               , srcInfoPoints = []+               }+             "c_wchmod")+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 16 206 44+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 206 25 206 27 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 16 206 24+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 16 206 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 16 206 24+                        , srcInfoPoints = []+                        }+                      "CWString")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 28 206 44+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 206 34 206 36 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 28 206 33+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 28 206 33+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 28 206 33+                           , srcInfoPoints = []+                           }+                         "CMode")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 37 206 44+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 37 206 39+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 37 206 39+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 37 206 39+                              , srcInfoPoints = []+                              }+                            "IO")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 40 206 44+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 40 206 44+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 40 206 44+                              , srcInfoPoints = []+                              }+                            "CInt"))))))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 1 208 49+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 208 17 208 19 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 1 208 16+                , srcInfoPoints = []+                }+              "copyPermissions"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 20 208 49+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 208 29 208 31 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 20 208 28+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 20 208 28+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 20 208 28+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 32 208 49+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 208 41 208 43 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 32 208 40+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 32 208 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 32 208 40+                           , srcInfoPoints = []+                           }+                         "FilePath")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 44 208 49+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 44 208 46+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 44 208 46+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 44 208 46+                              , srcInfoPoints = []+                              }+                            "IO")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 47 208 49+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 208 47 208 48+                            , SrcSpan "tests/examples/Directory.hs" 208 48 208 49+                            ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 47 208 49+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 208 47 208 48+                               , SrcSpan "tests/examples/Directory.hs" 208 48 208 49+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 47 208 49+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Directory.hs" 208 47 208 48+                                  , SrcSpan "tests/examples/Directory.hs" 208 48 208 49+                                  ]+                              }))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 1 215 65+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 1 215 65+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 1 209 16+                   , srcInfoPoints = []+                   }+                 "copyPermissions")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 17 209 23+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 17 209 23+                       , srcInfoPoints = []+                       }+                     "source")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 24 209 28+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 24 209 28+                       , srcInfoPoints = []+                       }+                     "dest")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 29 215 65+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 209 29 209 30 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 31 215 65+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 209 31 209 33+                          , SrcSpan "tests/examples/Directory.hs" 210 3 210 3+                          , SrcSpan "tests/examples/Directory.hs" 257 1 257 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 3 215 65+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 3 215 65+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 3 210 26+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 210 3 210 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 210 3 210 14+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 210 3 210 14+                                         , srcInfoPoints = []+                                         }+                                       "allocaBytes")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 210 15 210 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 210 15 210 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 210 15 210 26+                                         , srcInfoPoints = []+                                         }+                                       "sizeof_stat"))))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 27 210 28+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 210 27 210 28+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 210 27 210 28+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (Lambda+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 29 215 65+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 210 29 210 30+                                    , SrcSpan "tests/examples/Directory.hs" 210 38 210 40+                                    ]+                                }+                              [ PVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 210 31 210 37+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 210 31 210 37+                                       , srcInfoPoints = []+                                       }+                                     "p_stat")+                              ]+                              (Do+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 210 41 215 65+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 210 41 210 43+                                       , SrcSpan "tests/examples/Directory.hs" 211 3 211 3+                                       , SrcSpan "tests/examples/Directory.hs" 211 3 211 3+                                       , SrcSpan "tests/examples/Directory.hs" 257 1 257 0+                                       ]+                                   }+                                 [ Qualifier+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 211 3 215 65+                                       , srcInfoPoints = []+                                       }+                                     (InfixApp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 211 3 215 65+                                          , srcInfoPoints = []+                                          }+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 211 3 211 22+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 211 3 211 15+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 211 3 211 15+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            211+                                                            3+                                                            211+                                                            15+                                                      , srcInfoPoints = []+                                                      }+                                                    "withFilePath")))+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 211 16 211 22+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 211 16 211 22+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            211+                                                            16+                                                            211+                                                            22+                                                      , srcInfoPoints = []+                                                      }+                                                    "source"))))+                                        (QVarOp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 211 23 211 24+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 211 23 211 24+                                                , srcInfoPoints = []+                                                }+                                              (Symbol+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 211 23 211 24+                                                   , srcInfoPoints = []+                                                   }+                                                 "$")))+                                        (Lambda+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 211 25 215 65+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 211 25 211 26+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 211 35 211 37+                                                 ]+                                             }+                                           [ PVar+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 211 26 211 34+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          211+                                                          26+                                                          211+                                                          34+                                                    , srcInfoPoints = []+                                                    }+                                                  "p_source")+                                           ]+                                           (Do+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 211 38 215 65+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/Directory.hs" 211 38 211 40+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 212 3 212 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 212 3 212 3+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 257 1 257 0+                                                    ]+                                                }+                                              [ Qualifier+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 212 3 215 65+                                                    , srcInfoPoints = []+                                                    }+                                                  (InfixApp+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             212+                                                             3+                                                             215+                                                             65+                                                       , srcInfoPoints = []+                                                       }+                                                     (App+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                212+                                                                3+                                                                212+                                                                20+                                                          , srcInfoPoints = []+                                                          }+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   212+                                                                   3+                                                                   212+                                                                   15+                                                             , srcInfoPoints = []+                                                             }+                                                           (UnQual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      212+                                                                      3+                                                                      212+                                                                      15+                                                                , srcInfoPoints = []+                                                                }+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         212+                                                                         3+                                                                         212+                                                                         15+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "withFilePath")))+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   212+                                                                   16+                                                                   212+                                                                   20+                                                             , srcInfoPoints = []+                                                             }+                                                           (UnQual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      212+                                                                      16+                                                                      212+                                                                      20+                                                                , srcInfoPoints = []+                                                                }+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         212+                                                                         16+                                                                         212+                                                                         20+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "dest"))))+                                                     (QVarOp+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                212+                                                                21+                                                                212+                                                                22+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   212+                                                                   21+                                                                   212+                                                                   22+                                                             , srcInfoPoints = []+                                                             }+                                                           (Symbol+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      212+                                                                      21+                                                                      212+                                                                      22+                                                                , srcInfoPoints = []+                                                                }+                                                              "$")))+                                                     (Lambda+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                212+                                                                23+                                                                215+                                                                65+                                                          , srcInfoPoints =+                                                              [ SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  212+                                                                  23+                                                                  212+                                                                  24+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  212+                                                                  31+                                                                  212+                                                                  33+                                                              ]+                                                          }+                                                        [ PVar+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    212+                                                                    24+                                                                    212+                                                                    30+                                                              , srcInfoPoints = []+                                                              }+                                                            (Ident+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       212+                                                                       24+                                                                       212+                                                                       30+                                                                 , srcInfoPoints = []+                                                                 }+                                                               "p_dest")+                                                        ]+                                                        (Do+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   212+                                                                   34+                                                                   215+                                                                   65+                                                             , srcInfoPoints =+                                                                 [ SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     212+                                                                     34+                                                                     212+                                                                     36+                                                                 , SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     213+                                                                     5+                                                                     213+                                                                     5+                                                                 , SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     214+                                                                     5+                                                                     214+                                                                     5+                                                                 , SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     215+                                                                     5+                                                                     215+                                                                     5+                                                                 , SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     257+                                                                     1+                                                                     257+                                                                     0+                                                                 ]+                                                             }+                                                           [ Qualifier+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       213+                                                                       5+                                                                       213+                                                                       67+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (InfixApp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          213+                                                                          5+                                                                          213+                                                                          67+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (App+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             213+                                                                             5+                                                                             213+                                                                             42+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Var+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                213+                                                                                5+                                                                                213+                                                                                24+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   213+                                                                                   5+                                                                                   213+                                                                                   24+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Ident+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      213+                                                                                      5+                                                                                      213+                                                                                      24+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "throwErrnoIfMinus1_")))+                                                                     (Lit+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                213+                                                                                25+                                                                                213+                                                                                42+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (String+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   213+                                                                                   25+                                                                                   213+                                                                                   42+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "copyPermissions"+                                                                           "copyPermissions")))+                                                                  (QVarOp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             213+                                                                             43+                                                                             213+                                                                             44+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                213+                                                                                43+                                                                                213+                                                                                44+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Symbol+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   213+                                                                                   43+                                                                                   213+                                                                                   44+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "$")))+                                                                  (App+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             213+                                                                             45+                                                                             213+                                                                             67+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (App+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                213+                                                                                45+                                                                                213+                                                                                60+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Var+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   213+                                                                                   45+                                                                                   213+                                                                                   51+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (UnQual+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      213+                                                                                      45+                                                                                      213+                                                                                      51+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              (Ident+                                                                                 SrcSpanInfo+                                                                                   { srcInfoSpan =+                                                                                       SrcSpan+                                                                                         "tests/examples/Directory.hs"+                                                                                         213+                                                                                         45+                                                                                         213+                                                                                         51+                                                                                   , srcInfoPoints =+                                                                                       []+                                                                                   }+                                                                                 "c_stat")))+                                                                        (Var+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   213+                                                                                   52+                                                                                   213+                                                                                   60+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (UnQual+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      213+                                                                                      52+                                                                                      213+                                                                                      60+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              (Ident+                                                                                 SrcSpanInfo+                                                                                   { srcInfoSpan =+                                                                                       SrcSpan+                                                                                         "tests/examples/Directory.hs"+                                                                                         213+                                                                                         52+                                                                                         213+                                                                                         60+                                                                                   , srcInfoPoints =+                                                                                       []+                                                                                   }+                                                                                 "p_source"))))+                                                                     (Var+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                213+                                                                                61+                                                                                213+                                                                                67+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   213+                                                                                   61+                                                                                   213+                                                                                   67+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Ident+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      213+                                                                                      61+                                                                                      213+                                                                                      67+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "p_stat")))))+                                                           , Generator+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       214+                                                                       5+                                                                       214+                                                                       27+                                                                 , srcInfoPoints =+                                                                     [ SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         214+                                                                         10+                                                                         214+                                                                         12+                                                                     ]+                                                                 }+                                                               (PVar+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          214+                                                                          5+                                                                          214+                                                                          9+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Ident+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             214+                                                                             5+                                                                             214+                                                                             9+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     "mode"))+                                                               (App+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          214+                                                                          13+                                                                          214+                                                                          27+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (Var+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             214+                                                                             13+                                                                             214+                                                                             20+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                214+                                                                                13+                                                                                214+                                                                                20+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Ident+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   214+                                                                                   13+                                                                                   214+                                                                                   20+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "st_mode")))+                                                                  (Var+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             214+                                                                             21+                                                                             214+                                                                             27+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                214+                                                                                21+                                                                                214+                                                                                27+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Ident+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   214+                                                                                   21+                                                                                   214+                                                                                   27+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "p_stat"))))+                                                           , Qualifier+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       215+                                                                       5+                                                                       215+                                                                       65+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (InfixApp+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          215+                                                                          5+                                                                          215+                                                                          65+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  (App+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             215+                                                                             5+                                                                             215+                                                                             42+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (Var+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                215+                                                                                5+                                                                                215+                                                                                24+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   215+                                                                                   5+                                                                                   215+                                                                                   24+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Ident+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      215+                                                                                      5+                                                                                      215+                                                                                      24+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "throwErrnoIfMinus1_")))+                                                                     (Lit+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                215+                                                                                25+                                                                                215+                                                                                42+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (String+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   215+                                                                                   25+                                                                                   215+                                                                                   42+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "copyPermissions"+                                                                           "copyPermissions")))+                                                                  (QVarOp+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             215+                                                                             43+                                                                             215+                                                                             44+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (UnQual+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                215+                                                                                43+                                                                                215+                                                                                44+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Symbol+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   215+                                                                                   43+                                                                                   215+                                                                                   44+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           "$")))+                                                                  (App+                                                                     SrcSpanInfo+                                                                       { srcInfoSpan =+                                                                           SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             215+                                                                             45+                                                                             215+                                                                             65+                                                                       , srcInfoPoints = []+                                                                       }+                                                                     (App+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                215+                                                                                45+                                                                                215+                                                                                60+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (Var+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   215+                                                                                   45+                                                                                   215+                                                                                   53+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (UnQual+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      215+                                                                                      45+                                                                                      215+                                                                                      53+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              (Ident+                                                                                 SrcSpanInfo+                                                                                   { srcInfoSpan =+                                                                                       SrcSpan+                                                                                         "tests/examples/Directory.hs"+                                                                                         215+                                                                                         45+                                                                                         215+                                                                                         53+                                                                                   , srcInfoPoints =+                                                                                       []+                                                                                   }+                                                                                 "c_wchmod")))+                                                                        (Var+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   215+                                                                                   54+                                                                                   215+                                                                                   60+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (UnQual+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      215+                                                                                      54+                                                                                      215+                                                                                      60+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              (Ident+                                                                                 SrcSpanInfo+                                                                                   { srcInfoSpan =+                                                                                       SrcSpan+                                                                                         "tests/examples/Directory.hs"+                                                                                         215+                                                                                         54+                                                                                         215+                                                                                         60+                                                                                   , srcInfoPoints =+                                                                                       []+                                                                                   }+                                                                                 "p_dest"))))+                                                                     (Var+                                                                        SrcSpanInfo+                                                                          { srcInfoSpan =+                                                                              SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                215+                                                                                61+                                                                                215+                                                                                65+                                                                          , srcInfoPoints = []+                                                                          }+                                                                        (UnQual+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   215+                                                                                   61+                                                                                   215+                                                                                   65+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Ident+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      215+                                                                                      61+                                                                                      215+                                                                                      65+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "mode")))))+                                                           ])))+                                              ])))+                                 ])))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 1 257 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 257 17 257 19 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 1 257 16+                , srcInfoPoints = []+                }+              "createDirectory"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 20 257 37+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 257 29 257 31 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 20 257 28+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 20 257 28+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 20 257 28+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 32 257 37+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 32 257 34+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 32 257 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 32 257 34+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 35 257 37+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 257 35 257 36+                         , SrcSpan "tests/examples/Directory.hs" 257 36 257 37+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 35 257 37+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 257 35 257 36+                            , SrcSpan "tests/examples/Directory.hs" 257 36 257 37+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 35 257 37+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 257 35 257 36+                               , SrcSpan "tests/examples/Directory.hs" 257 36 257 37+                               ]+                           })))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 1 259 37+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 1 259 37+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 1 258 16+                   , srcInfoPoints = []+                   }+                 "createDirectory")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 17 258 21+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 17 258 21+                       , srcInfoPoints = []+                       }+                     "path")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 22 259 37+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 258 22 258 23 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 24 259 37+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 258 24 258 26+                          , SrcSpan "tests/examples/Directory.hs" 259 3 259 3+                          , SrcSpan "tests/examples/Directory.hs" 264 1 264 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 259 3 259 37+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 259 3 259 37+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 259 3 259 29+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 259 3 259 24+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 259 3 259 24+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 259 3 259 24+                                         , srcInfoPoints = []+                                         }+                                       "Win32")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 259 3 259 24+                                         , srcInfoPoints = []+                                         }+                                       "createDirectory")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 259 25 259 29+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 259 25 259 29+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 259 25 259 29+                                         , srcInfoPoints = []+                                         }+                                       "path"))))+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 259 30 259 37+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 259 30 259 37+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 259 30 259 37+                                      , srcInfoPoints = []+                                      }+                                    "Nothing"))))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 1 266 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 264 26 264 28 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 1 264 25+                , srcInfoPoints = []+                }+              "createDirectoryIfMissing"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 29 266 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 265 18 265 20 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 29 264 33+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 29 264 33+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 29 264 33+                        , srcInfoPoints = []+                        }+                      "Bool")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 265 21 266 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 266 18 266 20 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 265 21 265 29+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 265 21 265 29+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 265 21 265 29+                           , srcInfoPoints = []+                           }+                         "FilePath")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 21 266 26+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 21 266 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 21 266 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 21 266 23+                              , srcInfoPoints = []+                              }+                            "IO")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 24 266 26+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 266 24 266 25+                            , SrcSpan "tests/examples/Directory.hs" 266 25 266 26+                            ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 24 266 26+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 266 24 266 25+                               , SrcSpan "tests/examples/Directory.hs" 266 25 266 26+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 24 266 26+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Directory.hs" 266 24 266 25+                                  , SrcSpan "tests/examples/Directory.hs" 266 25 266 26+                                  ]+                              }))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 1 300 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 270 3 270 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 1 300 46+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 270 3 270 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 1 267 25+                   , srcInfoPoints = []+                   }+                 "createDirectoryIfMissing")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 26 267 40+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 26 267 40+                       , srcInfoPoints = []+                       }+                     "create_parents")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 41 267 46+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 41 267 46+                       , srcInfoPoints = []+                       }+                     "path0")+              ]+              (GuardedRhss+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 3 269 57+                   , srcInfoPoints = []+                   }+                 [ GuardedRhs+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 3 268 48+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/Directory.hs" 268 3 268 4+                           , SrcSpan "tests/examples/Directory.hs" 268 20 268 21+                           ]+                       }+                     [ Qualifier+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 5 268 19+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 5 268 19+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 5 268 19+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 268 5 268 19+                                    , srcInfoPoints = []+                                    }+                                  "create_parents")))+                     ]+                     (App+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 22 268 48+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 22 268 32+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 22 268 32+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 268 22 268 32+                                   , srcInfoPoints = []+                                   }+                                 "createDirs")))+                        (Paren+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 33 268 48+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 268 33 268 34+                                 , SrcSpan "tests/examples/Directory.hs" 268 47 268 48+                                 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 34 268 47+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 268 34 268 41+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 268 34 268 41+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 268 34 268 41+                                         , srcInfoPoints = []+                                         }+                                       "parents")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 268 42 268 47+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 268 42 268 47+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 268 42 268 47+                                         , srcInfoPoints = []+                                         }+                                       "path0"))))))+                 , GuardedRhs+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 3 269 57+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/Directory.hs" 269 3 269 4+                           , SrcSpan "tests/examples/Directory.hs" 269 20 269 21+                           ]+                       }+                     [ Qualifier+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 5 269 14+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 5 269 14+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 5 269 14+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 269 5 269 14+                                    , srcInfoPoints = []+                                    }+                                  "otherwise")))+                     ]+                     (App+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 22 269 57+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 22 269 32+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 22 269 32+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 269 22 269 32+                                   , srcInfoPoints = []+                                   }+                                 "createDirs")))+                        (Paren+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 33 269 57+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 269 33 269 34+                                 , SrcSpan "tests/examples/Directory.hs" 269 56 269 57+                                 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 34 269 56+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 269 34 269 40+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 269 34 269 38+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 269 34 269 38+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 269 34 269 38+                                            , srcInfoPoints = []+                                            }+                                          "take")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 269 39 269 40+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 269 39 269 40+                                         , srcInfoPoints = []+                                         }+                                       1+                                       "1")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 269 41 269 56+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 269 41 269 42+                                       , SrcSpan "tests/examples/Directory.hs" 269 55 269 56+                                       ]+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 269 42 269 55+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 269 42 269 49+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 269 42 269 49+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 269 42 269 49+                                               , srcInfoPoints = []+                                               }+                                             "parents")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 269 50 269 55+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 269 50 269 55+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 269 50 269 55+                                               , srcInfoPoints = []+                                               }+                                             "path0"))))))))+                 ])+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 5 300 46+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 271 5 271 5+                          , SrcSpan "tests/examples/Directory.hs" 273 5 273 5+                          , SrcSpan "tests/examples/Directory.hs" 274 5 274 5+                          , SrcSpan "tests/examples/Directory.hs" 275 5 275 5+                          , SrcSpan "tests/examples/Directory.hs" 280 5 280 5+                          , SrcSpan "tests/examples/Directory.hs" 281 5 281 5+                          , SrcSpan "tests/examples/Directory.hs" 343 1 343 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 5 271 68+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 5 271 12+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 5 271 12+                                , srcInfoPoints = []+                                }+                              "parents"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 13 271 68+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 271 13 271 14 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 15 271 68+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 271 15 271 22+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 271 15 271 22+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 271 15 271 22+                                         , srcInfoPoints = []+                                         }+                                       "reverse")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 271 23 271 24+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 271 23 271 24+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 271 23 271 24+                                         , srcInfoPoints = []+                                         }+                                       ".")))+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 271 25 271 68+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 271 25 271 37+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 271 25 271 31+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 271 25 271 31+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 271 25 271 31+                                               , srcInfoPoints = []+                                               }+                                             "scanl1")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 271 32 271 37+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 271 32 271 33+                                             , SrcSpan "tests/examples/Directory.hs" 271 33 271 36+                                             , SrcSpan "tests/examples/Directory.hs" 271 36 271 37+                                             ]+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 271 32 271 37+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 271 32 271 33+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 271 33 271 36+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 271 36 271 37+                                                ]+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 271 33 271 36+                                               , srcInfoPoints = []+                                               }+                                             "</>"))))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 271 38 271 39+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 271 38 271 39+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 271 38 271 39+                                            , srcInfoPoints = []+                                            }+                                          ".")))+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 271 40 271 68+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 271 40 271 56+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 271 40 271 56+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 271 40 271 56+                                               , srcInfoPoints = []+                                               }+                                             "splitDirectories")))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 271 57 271 58+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 271 57 271 58+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 271 57 271 58+                                               , srcInfoPoints = []+                                               }+                                             ".")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 271 59 271 68+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 271 59 271 68+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 271 59 271 68+                                               , srcInfoPoints = []+                                               }+                                             "normalise")))))))+                        Nothing+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 273 5 278 28+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 273 5 273 38+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 273 5 273 15+                                 , srcInfoPoints = []+                                 }+                               "createDirs")+                            [ PList+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 273 16 273 18+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 273 16 273 17+                                      , SrcSpan "tests/examples/Directory.hs" 273 17 273 18+                                      ]+                                  }+                                []+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 273 27 273 38+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 273 27 273 28 ]+                                 }+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 273 29 273 38+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 273 29 273 35+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 273 29 273 35+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 273 29 273 35+                                             , srcInfoPoints = []+                                             }+                                           "return")))+                                  (Con+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 273 36 273 38+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 273 36 273 37+                                           , SrcSpan "tests/examples/Directory.hs" 273 37 273 38+                                           ]+                                       }+                                     (Special+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 273 36 273 38+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 273 36 273 37+                                              , SrcSpan "tests/examples/Directory.hs" 273 37 273 38+                                              ]+                                          }+                                        (UnitCon+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 273 36 273 38+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 273 36 273 37+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 273 37 273 38+                                                 ]+                                             })))))+                            Nothing+                        , Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 274 5 274 48+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 274 5 274 15+                                 , srcInfoPoints = []+                                 }+                               "createDirs")+                            [ PParen+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 274 16 274 24+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 274 16 274 17+                                      , SrcSpan "tests/examples/Directory.hs" 274 23 274 24+                                      ]+                                  }+                                (PInfixApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 274 17 274 23+                                     , srcInfoPoints = []+                                     }+                                   (PVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 274 17 274 20+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 274 17 274 20+                                           , srcInfoPoints = []+                                           }+                                         "dir"))+                                   (Special+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 274 20 274 21+                                        , srcInfoPoints = []+                                        }+                                      (Cons+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 274 20 274 21+                                           , srcInfoPoints = []+                                           }))+                                   (PList+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 274 21 274 23+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 274 21 274 22+                                            , SrcSpan "tests/examples/Directory.hs" 274 22 274 23+                                            ]+                                        }+                                      []))+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 274 27 274 48+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 274 27 274 28 ]+                                 }+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 274 29 274 48+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 274 29 274 42+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 274 29 274 38+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 274 29 274 38+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 274 29 274 38+                                                , srcInfoPoints = []+                                                }+                                              "createDir")))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 274 39 274 42+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 274 39 274 42+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 274 39 274 42+                                                , srcInfoPoints = []+                                                }+                                              "dir"))))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 274 43 274 48+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 274 43 274 48+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 274 43 274 48+                                             , srcInfoPoints = []+                                             }+                                           "throw")))))+                            Nothing+                        , Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 275 5 278 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 275 5 275 15+                                 , srcInfoPoints = []+                                 }+                               "createDirs")+                            [ PParen+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 275 16 275 26+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 275 16 275 17+                                      , SrcSpan "tests/examples/Directory.hs" 275 25 275 26+                                      ]+                                  }+                                (PInfixApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 275 17 275 25+                                     , srcInfoPoints = []+                                     }+                                   (PVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 275 17 275 20+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 275 17 275 20+                                           , srcInfoPoints = []+                                           }+                                         "dir"))+                                   (Special+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 275 20 275 21+                                        , srcInfoPoints = []+                                        }+                                      (Cons+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 275 20 275 21+                                           , srcInfoPoints = []+                                           }))+                                   (PVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 275 21 275 25+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 275 21 275 25+                                           , srcInfoPoints = []+                                           }+                                         "dirs")))+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 275 27 278 28+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 275 27 275 28 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 276 7 278 28+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 276 7 276 20+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 276 7 276 16+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 276 7 276 16+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 276 7 276 16+                                                , srcInfoPoints = []+                                                }+                                              "createDir")))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 276 17 276 20+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 276 17 276 20+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 276 17 276 20+                                                , srcInfoPoints = []+                                                }+                                              "dir"))))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 276 21 276 22+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 276 21 276 22+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 276 21 276 22+                                             , srcInfoPoints = []+                                             }+                                           "$")))+                                  (Lambda+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 276 23 278 28+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 276 23 276 24+                                           , SrcSpan "tests/examples/Directory.hs" 276 26 276 28+                                           ]+                                       }+                                     [ PWildCard+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 276 24 276 25+                                           , srcInfoPoints = []+                                           }+                                     ]+                                     (Do+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 276 29 278 28+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 276 29 276 31+                                              , SrcSpan "tests/examples/Directory.hs" 277 9 277 9+                                              , SrcSpan "tests/examples/Directory.hs" 278 9 278 9+                                              , SrcSpan "tests/examples/Directory.hs" 280 5 280 0+                                              ]+                                          }+                                        [ Qualifier+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Directory.hs" 277 9 277 24+                                              , srcInfoPoints = []+                                              }+                                            (App+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 277 9 277 24+                                                 , srcInfoPoints = []+                                                 }+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 277 9 277 19+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             277+                                                             9+                                                             277+                                                             19+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                277+                                                                9+                                                                277+                                                                19+                                                          , srcInfoPoints = []+                                                          }+                                                        "createDirs")))+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          277+                                                          20+                                                          277+                                                          24+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             277+                                                             20+                                                             277+                                                             24+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                277+                                                                20+                                                                277+                                                                24+                                                          , srcInfoPoints = []+                                                          }+                                                        "dirs"))))+                                        , Qualifier+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Directory.hs" 278 9 278 28+                                              , srcInfoPoints = []+                                              }+                                            (App+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 278 9 278 28+                                                 , srcInfoPoints = []+                                                 }+                                               (App+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 278 9 278 22+                                                    , srcInfoPoints = []+                                                    }+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             278+                                                             9+                                                             278+                                                             18+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                278+                                                                9+                                                                278+                                                                18+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   278+                                                                   9+                                                                   278+                                                                   18+                                                             , srcInfoPoints = []+                                                             }+                                                           "createDir")))+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             278+                                                             19+                                                             278+                                                             22+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                278+                                                                19+                                                                278+                                                                22+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   278+                                                                   19+                                                                   278+                                                                   22+                                                             , srcInfoPoints = []+                                                             }+                                                           "dir"))))+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          278+                                                          23+                                                          278+                                                          28+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             278+                                                             23+                                                             278+                                                             28+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                278+                                                                23+                                                                278+                                                                28+                                                          , srcInfoPoints = []+                                                          }+                                                        "throw"))))+                                        ]))))+                            Nothing+                        ]+                    , TypeSig+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 5 280 61+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 280 15 280 17 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 5 280 14+                              , srcInfoPoints = []+                              }+                            "createDir"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 18 280 61+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 280 27 280 29 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 18 280 26+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 280 18 280 26+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 280 18 280 26+                                      , srcInfoPoints = []+                                      }+                                    "FilePath")))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 30 280 61+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 280 53 280 55 ]+                                }+                              (TyParen+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 280 30 280 52+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 280 30 280 31+                                       , SrcSpan "tests/examples/Directory.hs" 280 51 280 52+                                       ]+                                   }+                                 (TyFun+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 280 31 280 51+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 280 43 280 45 ]+                                      }+                                    (TyCon+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 280 31 280 42+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 280 31 280 42+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 280 31 280 42+                                               , srcInfoPoints = []+                                               }+                                             "IOException")))+                                    (TyApp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 280 46 280 51+                                         , srcInfoPoints = []+                                         }+                                       (TyCon+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 280 46 280 48+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 280 46 280 48+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 280 46 280 48+                                                  , srcInfoPoints = []+                                                  }+                                                "IO")))+                                       (TyCon+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 280 49 280 51+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 280 49 280 50+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 280 50 280 51+                                                ]+                                            }+                                          (Special+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 280 49 280 51+                                               , srcInfoPoints =+                                                   [ SrcSpan+                                                       "tests/examples/Directory.hs" 280 49 280 50+                                                   , SrcSpan+                                                       "tests/examples/Directory.hs" 280 50 280 51+                                                   ]+                                               }+                                             (UnitCon+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 280 49 280 51+                                                  , srcInfoPoints =+                                                      [ SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          280+                                                          49+                                                          280+                                                          50+                                                      , SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          280+                                                          50+                                                          280+                                                          51+                                                      ]+                                                  }))))))+                              (TyApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 280 56 280 61+                                   , srcInfoPoints = []+                                   }+                                 (TyCon+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 280 56 280 58+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 280 56 280 58+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 280 56 280 58+                                            , srcInfoPoints = []+                                            }+                                          "IO")))+                                 (TyCon+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 280 59 280 61+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 280 59 280 60+                                          , SrcSpan "tests/examples/Directory.hs" 280 60 280 61+                                          ]+                                      }+                                    (Special+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 280 59 280 61+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 280 59 280 60+                                             , SrcSpan "tests/examples/Directory.hs" 280 60 280 61+                                             ]+                                         }+                                       (UnitCon+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 280 59 280 61+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 280 59 280 60+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 280 60 280 61+                                                ]+                                            }))))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 281 5 300 46+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 281 5 300 46+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 281 5 281 14+                                 , srcInfoPoints = []+                                 }+                               "createDir")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 281 15 281 18+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 281 15 281 18+                                     , srcInfoPoints = []+                                     }+                                   "dir")+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 281 19 281 34+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 281 19 281 34+                                     , srcInfoPoints = []+                                     }+                                   "notExistHandler")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 281 35 300 46+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 281 35 281 36 ]+                                 }+                               (Do+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 281 37 300 46+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Directory.hs" 281 37 281 39+                                        , SrcSpan "tests/examples/Directory.hs" 282 7 282 7+                                        , SrcSpan "tests/examples/Directory.hs" 283 7 283 7+                                        , SrcSpan "tests/examples/Directory.hs" 343 1 343 0+                                        ]+                                    }+                                  [ Generator+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 282 7 282 37+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 282 9 282 11 ]+                                        }+                                      (PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 282 7 282 8+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Directory.hs" 282 7 282 8+                                              , srcInfoPoints = []+                                              }+                                            "r"))+                                      (InfixApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 282 12 282 37+                                           , srcInfoPoints = []+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 282 12 282 15+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 282 12 282 15+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          282+                                                          12+                                                          282+                                                          15+                                                    , srcInfoPoints = []+                                                    }+                                                  "try")))+                                         (QVarOp+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 282 16 282 17+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 282 16 282 17+                                                 , srcInfoPoints = []+                                                 }+                                               (Symbol+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          282+                                                          16+                                                          282+                                                          17+                                                    , srcInfoPoints = []+                                                    }+                                                  "$")))+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 282 18 282 37+                                              , srcInfoPoints = []+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 282 18 282 33+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          282+                                                          18+                                                          282+                                                          33+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             282+                                                             18+                                                             282+                                                             33+                                                       , srcInfoPoints = []+                                                       }+                                                     "createDirectory")))+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 282 34 282 37+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          282+                                                          34+                                                          282+                                                          37+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             282+                                                             34+                                                             282+                                                             37+                                                       , srcInfoPoints = []+                                                       }+                                                     "dir")))))+                                  , Qualifier+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 283 7 300 46+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 283 7 283 11+                                            , SrcSpan "tests/examples/Directory.hs" 283 41 283 43+                                            , SrcSpan "tests/examples/Directory.hs" 284 9 284 9+                                            , SrcSpan "tests/examples/Directory.hs" 285 9 285 9+                                            , SrcSpan "tests/examples/Directory.hs" 343 1 343 0+                                            ]+                                        }+                                      (Case+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 283 7 300 46+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/Directory.hs" 283 7 283 11+                                               , SrcSpan "tests/examples/Directory.hs" 283 41 283 43+                                               , SrcSpan "tests/examples/Directory.hs" 284 9 284 9+                                               , SrcSpan "tests/examples/Directory.hs" 285 9 285 9+                                               , SrcSpan "tests/examples/Directory.hs" 343 1 343 0+                                               ]+                                           }+                                         (Paren+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 283 12 283 40+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/Directory.hs" 283 12 283 13+                                                  , SrcSpan+                                                      "tests/examples/Directory.hs" 283 39 283 40+                                                  ]+                                              }+                                            (ExpTypeSig+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 283 13 283 39+                                                 , srcInfoPoints =+                                                     [ SrcSpan+                                                         "tests/examples/Directory.hs" 283 15 283 17+                                                     ]+                                                 }+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          283+                                                          13+                                                          283+                                                          14+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             283+                                                             13+                                                             283+                                                             14+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                283+                                                                13+                                                                283+                                                                14+                                                          , srcInfoPoints = []+                                                          }+                                                        "r")))+                                               (TyApp+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          283+                                                          18+                                                          283+                                                          39+                                                    , srcInfoPoints = []+                                                    }+                                                  (TyApp+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             283+                                                             18+                                                             283+                                                             36+                                                       , srcInfoPoints = []+                                                       }+                                                     (TyCon+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                283+                                                                18+                                                                283+                                                                24+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   283+                                                                   18+                                                                   283+                                                                   24+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      283+                                                                      18+                                                                      283+                                                                      24+                                                                , srcInfoPoints = []+                                                                }+                                                              "Either")))+                                                     (TyCon+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                283+                                                                25+                                                                283+                                                                36+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   283+                                                                   25+                                                                   283+                                                                   36+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      283+                                                                      25+                                                                      283+                                                                      36+                                                                , srcInfoPoints = []+                                                                }+                                                              "IOException"))))+                                                  (TyCon+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             283+                                                             37+                                                             283+                                                             39+                                                       , srcInfoPoints =+                                                           [ SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               283+                                                               37+                                                               283+                                                               38+                                                           , SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               283+                                                               38+                                                               283+                                                               39+                                                           ]+                                                       }+                                                     (Special+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                283+                                                                37+                                                                283+                                                                39+                                                          , srcInfoPoints =+                                                              [ SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  283+                                                                  37+                                                                  283+                                                                  38+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  283+                                                                  38+                                                                  283+                                                                  39+                                                              ]+                                                          }+                                                        (UnitCon+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   283+                                                                   37+                                                                   283+                                                                   39+                                                             , srcInfoPoints =+                                                                 [ SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     283+                                                                     37+                                                                     283+                                                                     38+                                                                 , SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     283+                                                                     38+                                                                     283+                                                                     39+                                                                 ]+                                                             }))))))+                                         [ Alt+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 284 9 284 48+                                               , srcInfoPoints = []+                                               }+                                             (PApp+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 284 9 284 17+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           284+                                                           9+                                                           284+                                                           14+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              284+                                                              9+                                                              284+                                                              14+                                                        , srcInfoPoints = []+                                                        }+                                                      "Right"))+                                                [ PApp+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            284+                                                            15+                                                            284+                                                            17+                                                      , srcInfoPoints =+                                                          [ SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              284+                                                              15+                                                              284+                                                              16+                                                          , SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              284+                                                              16+                                                              284+                                                              17+                                                          ]+                                                      }+                                                    (Special+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               284+                                                               15+                                                               284+                                                               17+                                                         , srcInfoPoints =+                                                             [ SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 284+                                                                 15+                                                                 284+                                                                 16+                                                             , SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 284+                                                                 16+                                                                 284+                                                                 17+                                                             ]+                                                         }+                                                       (UnitCon+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  284+                                                                  15+                                                                  284+                                                                  17+                                                            , srcInfoPoints =+                                                                [ SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    284+                                                                    15+                                                                    284+                                                                    16+                                                                , SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    284+                                                                    16+                                                                    284+                                                                    17+                                                                ]+                                                            }))+                                                    []+                                                ])+                                             (UnGuardedRhs+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 284 36 284 48+                                                  , srcInfoPoints =+                                                      [ SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          284+                                                          36+                                                          284+                                                          38+                                                      ]+                                                  }+                                                (App+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           284+                                                           39+                                                           284+                                                           48+                                                     , srcInfoPoints = []+                                                     }+                                                   (Var+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              284+                                                              39+                                                              284+                                                              45+                                                        , srcInfoPoints = []+                                                        }+                                                      (UnQual+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 284+                                                                 39+                                                                 284+                                                                 45+                                                           , srcInfoPoints = []+                                                           }+                                                         (Ident+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    284+                                                                    39+                                                                    284+                                                                    45+                                                              , srcInfoPoints = []+                                                              }+                                                            "return")))+                                                   (Con+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              284+                                                              46+                                                              284+                                                              48+                                                        , srcInfoPoints =+                                                            [ SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                284+                                                                46+                                                                284+                                                                47+                                                            , SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                284+                                                                47+                                                                284+                                                                48+                                                            ]+                                                        }+                                                      (Special+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 284+                                                                 46+                                                                 284+                                                                 48+                                                           , srcInfoPoints =+                                                               [ SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   284+                                                                   46+                                                                   284+                                                                   47+                                                               , SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   284+                                                                   47+                                                                   284+                                                                   48+                                                               ]+                                                           }+                                                         (UnitCon+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    284+                                                                    46+                                                                    284+                                                                    48+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      284+                                                                      46+                                                                      284+                                                                      47+                                                                  , SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      284+                                                                      47+                                                                      284+                                                                      48+                                                                  ]+                                                              })))))+                                             Nothing+                                         , Alt+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 285 9 300 46+                                               , srcInfoPoints = []+                                               }+                                             (PApp+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 285 9 285 16+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           285+                                                           9+                                                           285+                                                           13+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              285+                                                              9+                                                              285+                                                              13+                                                        , srcInfoPoints = []+                                                        }+                                                      "Left"))+                                                [ PVar+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            285+                                                            15+                                                            285+                                                            16+                                                      , srcInfoPoints = []+                                                      }+                                                    (Ident+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               285+                                                               15+                                                               285+                                                               16+                                                         , srcInfoPoints = []+                                                         }+                                                       "e")+                                                ])+                                             (GuardedRhss+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 286 11 300 46+                                                  , srcInfoPoints = []+                                                  }+                                                [ GuardedRhs+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            286+                                                            11+                                                            286+                                                            56+                                                      , srcInfoPoints =+                                                          [ SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              286+                                                              11+                                                              286+                                                              12+                                                          , SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              286+                                                              36+                                                              286+                                                              38+                                                          ]+                                                      }+                                                    [ Qualifier+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                286+                                                                13+                                                                286+                                                                35+                                                          , srcInfoPoints = []+                                                          }+                                                        (App+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   286+                                                                   13+                                                                   286+                                                                   35+                                                             , srcInfoPoints = []+                                                             }+                                                           (Var+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      286+                                                                      13+                                                                      286+                                                                      32+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         286+                                                                         13+                                                                         286+                                                                         32+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/Directory.hs"+                                                                            286+                                                                            13+                                                                            286+                                                                            32+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "isDoesNotExistError")))+                                                           (Var+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      286+                                                                      34+                                                                      286+                                                                      35+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         286+                                                                         34+                                                                         286+                                                                         35+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/Directory.hs"+                                                                            286+                                                                            34+                                                                            286+                                                                            35+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "e"))))+                                                    ]+                                                    (App+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               286+                                                               39+                                                               286+                                                               56+                                                         , srcInfoPoints = []+                                                         }+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  286+                                                                  39+                                                                  286+                                                                  54+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     286+                                                                     39+                                                                     286+                                                                     54+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        286+                                                                        39+                                                                        286+                                                                        54+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "notExistHandler")))+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  286+                                                                  55+                                                                  286+                                                                  56+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     286+                                                                     55+                                                                     286+                                                                     56+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        286+                                                                        55+                                                                        286+                                                                        56+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "e"))))+                                                , GuardedRhs+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            294+                                                            11+                                                            299+                                                            68+                                                      , srcInfoPoints =+                                                          [ SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              294+                                                              11+                                                              294+                                                              12+                                                          , SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              294+                                                              36+                                                              294+                                                              38+                                                          ]+                                                      }+                                                    [ Qualifier+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                294+                                                                13+                                                                294+                                                                35+                                                          , srcInfoPoints = []+                                                          }+                                                        (App+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   294+                                                                   13+                                                                   294+                                                                   35+                                                             , srcInfoPoints = []+                                                             }+                                                           (Var+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      294+                                                                      13+                                                                      294+                                                                      33+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         294+                                                                         13+                                                                         294+                                                                         33+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/Directory.hs"+                                                                            294+                                                                            13+                                                                            294+                                                                            33+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "isAlreadyExistsError")))+                                                           (Var+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      294+                                                                      34+                                                                      294+                                                                      35+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         294+                                                                         34+                                                                         294+                                                                         35+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/Directory.hs"+                                                                            294+                                                                            34+                                                                            294+                                                                            35+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "e"))))+                                                    ]+                                                    (InfixApp+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               294+                                                               39+                                                               299+                                                               68+                                                         , srcInfoPoints = []+                                                         }+                                                       (Paren+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  294+                                                                  39+                                                                  299+                                                                  16+                                                            , srcInfoPoints =+                                                                [ SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    294+                                                                    39+                                                                    294+                                                                    40+                                                                , SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    299+                                                                    15+                                                                    299+                                                                    16+                                                                ]+                                                            }+                                                          (Do+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     294+                                                                     40+                                                                     298+                                                                     39+                                                               , srcInfoPoints =+                                                                   [ SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       294+                                                                       40+                                                                       294+                                                                       42+                                                                   , SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       295+                                                                       15+                                                                       295+                                                                       15+                                                                   , SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       299+                                                                       15+                                                                       299+                                                                       15+                                                                   , SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       299+                                                                       15+                                                                       299+                                                                       15+                                                                   ]+                                                               }+                                                             [ Qualifier+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         295+                                                                         15+                                                                         298+                                                                         39+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (InfixApp+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/Directory.hs"+                                                                            295+                                                                            15+                                                                            298+                                                                            39+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    (App+                                                                       SrcSpanInfo+                                                                         { srcInfoSpan =+                                                                             SrcSpan+                                                                               "tests/examples/Directory.hs"+                                                                               295+                                                                               15+                                                                               295+                                                                               60+                                                                         , srcInfoPoints = []+                                                                         }+                                                                       (App+                                                                          SrcSpanInfo+                                                                            { srcInfoSpan =+                                                                                SrcSpan+                                                                                  "tests/examples/Directory.hs"+                                                                                  295+                                                                                  15+                                                                                  295+                                                                                  56+                                                                            , srcInfoPoints = []+                                                                            }+                                                                          (Var+                                                                             SrcSpanInfo+                                                                               { srcInfoSpan =+                                                                                   SrcSpan+                                                                                     "tests/examples/Directory.hs"+                                                                                     295+                                                                                     15+                                                                                     295+                                                                                     29+                                                                               , srcInfoPoints = []+                                                                               }+                                                                             (UnQual+                                                                                SrcSpanInfo+                                                                                  { srcInfoSpan =+                                                                                      SrcSpan+                                                                                        "tests/examples/Directory.hs"+                                                                                        295+                                                                                        15+                                                                                        295+                                                                                        29+                                                                                  , srcInfoPoints =+                                                                                      []+                                                                                  }+                                                                                (Ident+                                                                                   SrcSpanInfo+                                                                                     { srcInfoSpan =+                                                                                         SrcSpan+                                                                                           "tests/examples/Directory.hs"+                                                                                           295+                                                                                           15+                                                                                           295+                                                                                           29+                                                                                     , srcInfoPoints =+                                                                                         []+                                                                                     }+                                                                                   "withFileStatus")))+                                                                          (Lit+                                                                             SrcSpanInfo+                                                                               { srcInfoSpan =+                                                                                   SrcSpan+                                                                                     "tests/examples/Directory.hs"+                                                                                     295+                                                                                     30+                                                                                     295+                                                                                     56+                                                                               , srcInfoPoints = []+                                                                               }+                                                                             (String+                                                                                SrcSpanInfo+                                                                                  { srcInfoSpan =+                                                                                      SrcSpan+                                                                                        "tests/examples/Directory.hs"+                                                                                        295+                                                                                        30+                                                                                        295+                                                                                        56+                                                                                  , srcInfoPoints =+                                                                                      []+                                                                                  }+                                                                                "createDirectoryIfMissing"+                                                                                "createDirectoryIfMissing")))+                                                                       (Var+                                                                          SrcSpanInfo+                                                                            { srcInfoSpan =+                                                                                SrcSpan+                                                                                  "tests/examples/Directory.hs"+                                                                                  295+                                                                                  57+                                                                                  295+                                                                                  60+                                                                            , srcInfoPoints = []+                                                                            }+                                                                          (UnQual+                                                                             SrcSpanInfo+                                                                               { srcInfoSpan =+                                                                                   SrcSpan+                                                                                     "tests/examples/Directory.hs"+                                                                                     295+                                                                                     57+                                                                                     295+                                                                                     60+                                                                               , srcInfoPoints = []+                                                                               }+                                                                             (Ident+                                                                                SrcSpanInfo+                                                                                  { srcInfoSpan =+                                                                                      SrcSpan+                                                                                        "tests/examples/Directory.hs"+                                                                                        295+                                                                                        57+                                                                                        295+                                                                                        60+                                                                                  , srcInfoPoints =+                                                                                      []+                                                                                  }+                                                                                "dir"))))+                                                                    (QVarOp+                                                                       SrcSpanInfo+                                                                         { srcInfoSpan =+                                                                             SrcSpan+                                                                               "tests/examples/Directory.hs"+                                                                               295+                                                                               61+                                                                               295+                                                                               62+                                                                         , srcInfoPoints = []+                                                                         }+                                                                       (UnQual+                                                                          SrcSpanInfo+                                                                            { srcInfoSpan =+                                                                                SrcSpan+                                                                                  "tests/examples/Directory.hs"+                                                                                  295+                                                                                  61+                                                                                  295+                                                                                  62+                                                                            , srcInfoPoints = []+                                                                            }+                                                                          (Symbol+                                                                             SrcSpanInfo+                                                                               { srcInfoSpan =+                                                                                   SrcSpan+                                                                                     "tests/examples/Directory.hs"+                                                                                     295+                                                                                     61+                                                                                     295+                                                                                     62+                                                                               , srcInfoPoints = []+                                                                               }+                                                                             "$")))+                                                                    (Lambda+                                                                       SrcSpanInfo+                                                                         { srcInfoSpan =+                                                                             SrcSpan+                                                                               "tests/examples/Directory.hs"+                                                                               295+                                                                               63+                                                                               298+                                                                               39+                                                                         , srcInfoPoints =+                                                                             [ SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 295+                                                                                 63+                                                                                 295+                                                                                 64+                                                                             , SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 295+                                                                                 67+                                                                                 295+                                                                                 69+                                                                             ]+                                                                         }+                                                                       [ PVar+                                                                           SrcSpanInfo+                                                                             { srcInfoSpan =+                                                                                 SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   295+                                                                                   64+                                                                                   295+                                                                                   66+                                                                             , srcInfoPoints = []+                                                                             }+                                                                           (Ident+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      295+                                                                                      64+                                                                                      295+                                                                                      66+                                                                                , srcInfoPoints = []+                                                                                }+                                                                              "st")+                                                                       ]+                                                                       (Do+                                                                          SrcSpanInfo+                                                                            { srcInfoSpan =+                                                                                SrcSpan+                                                                                  "tests/examples/Directory.hs"+                                                                                  295+                                                                                  70+                                                                                  298+                                                                                  39+                                                                            , srcInfoPoints =+                                                                                [ SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    295+                                                                                    70+                                                                                    295+                                                                                    72+                                                                                , SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    296+                                                                                    18+                                                                                    296+                                                                                    18+                                                                                , SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    297+                                                                                    18+                                                                                    297+                                                                                    18+                                                                                , SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    299+                                                                                    15+                                                                                    299+                                                                                    0+                                                                                ]+                                                                            }+                                                                          [ Generator+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      296+                                                                                      18+                                                                                      296+                                                                                      41+                                                                                , srcInfoPoints =+                                                                                    [ SrcSpan+                                                                                        "tests/examples/Directory.hs"+                                                                                        296+                                                                                        24+                                                                                        296+                                                                                        26+                                                                                    ]+                                                                                }+                                                                              (PVar+                                                                                 SrcSpanInfo+                                                                                   { srcInfoSpan =+                                                                                       SrcSpan+                                                                                         "tests/examples/Directory.hs"+                                                                                         296+                                                                                         18+                                                                                         296+                                                                                         23+                                                                                   , srcInfoPoints =+                                                                                       []+                                                                                   }+                                                                                 (Ident+                                                                                    SrcSpanInfo+                                                                                      { srcInfoSpan =+                                                                                          SrcSpan+                                                                                            "tests/examples/Directory.hs"+                                                                                            296+                                                                                            18+                                                                                            296+                                                                                            23+                                                                                      , srcInfoPoints =+                                                                                          []+                                                                                      }+                                                                                    "isDir"))+                                                                              (App+                                                                                 SrcSpanInfo+                                                                                   { srcInfoSpan =+                                                                                       SrcSpan+                                                                                         "tests/examples/Directory.hs"+                                                                                         296+                                                                                         27+                                                                                         296+                                                                                         41+                                                                                   , srcInfoPoints =+                                                                                       []+                                                                                   }+                                                                                 (Var+                                                                                    SrcSpanInfo+                                                                                      { srcInfoSpan =+                                                                                          SrcSpan+                                                                                            "tests/examples/Directory.hs"+                                                                                            296+                                                                                            27+                                                                                            296+                                                                                            38+                                                                                      , srcInfoPoints =+                                                                                          []+                                                                                      }+                                                                                    (UnQual+                                                                                       SrcSpanInfo+                                                                                         { srcInfoSpan =+                                                                                             SrcSpan+                                                                                               "tests/examples/Directory.hs"+                                                                                               296+                                                                                               27+                                                                                               296+                                                                                               38+                                                                                         , srcInfoPoints =+                                                                                             []+                                                                                         }+                                                                                       (Ident+                                                                                          SrcSpanInfo+                                                                                            { srcInfoSpan =+                                                                                                SrcSpan+                                                                                                  "tests/examples/Directory.hs"+                                                                                                  296+                                                                                                  27+                                                                                                  296+                                                                                                  38+                                                                                            , srcInfoPoints =+                                                                                                []+                                                                                            }+                                                                                          "isDirectory")))+                                                                                 (Var+                                                                                    SrcSpanInfo+                                                                                      { srcInfoSpan =+                                                                                          SrcSpan+                                                                                            "tests/examples/Directory.hs"+                                                                                            296+                                                                                            39+                                                                                            296+                                                                                            41+                                                                                      , srcInfoPoints =+                                                                                          []+                                                                                      }+                                                                                    (UnQual+                                                                                       SrcSpanInfo+                                                                                         { srcInfoSpan =+                                                                                             SrcSpan+                                                                                               "tests/examples/Directory.hs"+                                                                                               296+                                                                                               39+                                                                                               296+                                                                                               41+                                                                                         , srcInfoPoints =+                                                                                             []+                                                                                         }+                                                                                       (Ident+                                                                                          SrcSpanInfo+                                                                                            { srcInfoSpan =+                                                                                                SrcSpan+                                                                                                  "tests/examples/Directory.hs"+                                                                                                  296+                                                                                                  39+                                                                                                  296+                                                                                                  41+                                                                                            , srcInfoPoints =+                                                                                                []+                                                                                            }+                                                                                          "st"))))+                                                                          , Qualifier+                                                                              SrcSpanInfo+                                                                                { srcInfoSpan =+                                                                                    SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      297+                                                                                      18+                                                                                      298+                                                                                      39+                                                                                , srcInfoPoints =+                                                                                    [ SrcSpan+                                                                                        "tests/examples/Directory.hs"+                                                                                        297+                                                                                        18+                                                                                        297+                                                                                        20+                                                                                    , SrcSpan+                                                                                        "tests/examples/Directory.hs"+                                                                                        297+                                                                                        27+                                                                                        297+                                                                                        31+                                                                                    , SrcSpan+                                                                                        "tests/examples/Directory.hs"+                                                                                        298+                                                                                        27+                                                                                        298+                                                                                        31+                                                                                    ]+                                                                                }+                                                                              (If+                                                                                 SrcSpanInfo+                                                                                   { srcInfoSpan =+                                                                                       SrcSpan+                                                                                         "tests/examples/Directory.hs"+                                                                                         297+                                                                                         18+                                                                                         298+                                                                                         39+                                                                                   , srcInfoPoints =+                                                                                       [ SrcSpan+                                                                                           "tests/examples/Directory.hs"+                                                                                           297+                                                                                           18+                                                                                           297+                                                                                           20+                                                                                       , SrcSpan+                                                                                           "tests/examples/Directory.hs"+                                                                                           297+                                                                                           27+                                                                                           297+                                                                                           31+                                                                                       , SrcSpan+                                                                                           "tests/examples/Directory.hs"+                                                                                           298+                                                                                           27+                                                                                           298+                                                                                           31+                                                                                       ]+                                                                                   }+                                                                                 (Var+                                                                                    SrcSpanInfo+                                                                                      { srcInfoSpan =+                                                                                          SrcSpan+                                                                                            "tests/examples/Directory.hs"+                                                                                            297+                                                                                            21+                                                                                            297+                                                                                            26+                                                                                      , srcInfoPoints =+                                                                                          []+                                                                                      }+                                                                                    (UnQual+                                                                                       SrcSpanInfo+                                                                                         { srcInfoSpan =+                                                                                             SrcSpan+                                                                                               "tests/examples/Directory.hs"+                                                                                               297+                                                                                               21+                                                                                               297+                                                                                               26+                                                                                         , srcInfoPoints =+                                                                                             []+                                                                                         }+                                                                                       (Ident+                                                                                          SrcSpanInfo+                                                                                            { srcInfoSpan =+                                                                                                SrcSpan+                                                                                                  "tests/examples/Directory.hs"+                                                                                                  297+                                                                                                  21+                                                                                                  297+                                                                                                  26+                                                                                            , srcInfoPoints =+                                                                                                []+                                                                                            }+                                                                                          "isDir")))+                                                                                 (App+                                                                                    SrcSpanInfo+                                                                                      { srcInfoSpan =+                                                                                          SrcSpan+                                                                                            "tests/examples/Directory.hs"+                                                                                            297+                                                                                            32+                                                                                            297+                                                                                            41+                                                                                      , srcInfoPoints =+                                                                                          []+                                                                                      }+                                                                                    (Var+                                                                                       SrcSpanInfo+                                                                                         { srcInfoSpan =+                                                                                             SrcSpan+                                                                                               "tests/examples/Directory.hs"+                                                                                               297+                                                                                               32+                                                                                               297+                                                                                               38+                                                                                         , srcInfoPoints =+                                                                                             []+                                                                                         }+                                                                                       (UnQual+                                                                                          SrcSpanInfo+                                                                                            { srcInfoSpan =+                                                                                                SrcSpan+                                                                                                  "tests/examples/Directory.hs"+                                                                                                  297+                                                                                                  32+                                                                                                  297+                                                                                                  38+                                                                                            , srcInfoPoints =+                                                                                                []+                                                                                            }+                                                                                          (Ident+                                                                                             SrcSpanInfo+                                                                                               { srcInfoSpan =+                                                                                                   SrcSpan+                                                                                                     "tests/examples/Directory.hs"+                                                                                                     297+                                                                                                     32+                                                                                                     297+                                                                                                     38+                                                                                               , srcInfoPoints =+                                                                                                   []+                                                                                               }+                                                                                             "return")))+                                                                                    (Con+                                                                                       SrcSpanInfo+                                                                                         { srcInfoSpan =+                                                                                             SrcSpan+                                                                                               "tests/examples/Directory.hs"+                                                                                               297+                                                                                               39+                                                                                               297+                                                                                               41+                                                                                         , srcInfoPoints =+                                                                                             [ SrcSpan+                                                                                                 "tests/examples/Directory.hs"+                                                                                                 297+                                                                                                 39+                                                                                                 297+                                                                                                 40+                                                                                             , SrcSpan+                                                                                                 "tests/examples/Directory.hs"+                                                                                                 297+                                                                                                 40+                                                                                                 297+                                                                                                 41+                                                                                             ]+                                                                                         }+                                                                                       (Special+                                                                                          SrcSpanInfo+                                                                                            { srcInfoSpan =+                                                                                                SrcSpan+                                                                                                  "tests/examples/Directory.hs"+                                                                                                  297+                                                                                                  39+                                                                                                  297+                                                                                                  41+                                                                                            , srcInfoPoints =+                                                                                                [ SrcSpan+                                                                                                    "tests/examples/Directory.hs"+                                                                                                    297+                                                                                                    39+                                                                                                    297+                                                                                                    40+                                                                                                , SrcSpan+                                                                                                    "tests/examples/Directory.hs"+                                                                                                    297+                                                                                                    40+                                                                                                    297+                                                                                                    41+                                                                                                ]+                                                                                            }+                                                                                          (UnitCon+                                                                                             SrcSpanInfo+                                                                                               { srcInfoSpan =+                                                                                                   SrcSpan+                                                                                                     "tests/examples/Directory.hs"+                                                                                                     297+                                                                                                     39+                                                                                                     297+                                                                                                     41+                                                                                               , srcInfoPoints =+                                                                                                   [ SrcSpan+                                                                                                       "tests/examples/Directory.hs"+                                                                                                       297+                                                                                                       39+                                                                                                       297+                                                                                                       40+                                                                                                   , SrcSpan+                                                                                                       "tests/examples/Directory.hs"+                                                                                                       297+                                                                                                       40+                                                                                                       297+                                                                                                       41+                                                                                                   ]+                                                                                               }))))+                                                                                 (App+                                                                                    SrcSpanInfo+                                                                                      { srcInfoSpan =+                                                                                          SrcSpan+                                                                                            "tests/examples/Directory.hs"+                                                                                            298+                                                                                            32+                                                                                            298+                                                                                            39+                                                                                      , srcInfoPoints =+                                                                                          []+                                                                                      }+                                                                                    (Var+                                                                                       SrcSpanInfo+                                                                                         { srcInfoSpan =+                                                                                             SrcSpan+                                                                                               "tests/examples/Directory.hs"+                                                                                               298+                                                                                               32+                                                                                               298+                                                                                               37+                                                                                         , srcInfoPoints =+                                                                                             []+                                                                                         }+                                                                                       (UnQual+                                                                                          SrcSpanInfo+                                                                                            { srcInfoSpan =+                                                                                                SrcSpan+                                                                                                  "tests/examples/Directory.hs"+                                                                                                  298+                                                                                                  32+                                                                                                  298+                                                                                                  37+                                                                                            , srcInfoPoints =+                                                                                                []+                                                                                            }+                                                                                          (Ident+                                                                                             SrcSpanInfo+                                                                                               { srcInfoSpan =+                                                                                                   SrcSpan+                                                                                                     "tests/examples/Directory.hs"+                                                                                                     298+                                                                                                     32+                                                                                                     298+                                                                                                     37+                                                                                               , srcInfoPoints =+                                                                                                   []+                                                                                               }+                                                                                             "throw")))+                                                                                    (Var+                                                                                       SrcSpanInfo+                                                                                         { srcInfoSpan =+                                                                                             SrcSpan+                                                                                               "tests/examples/Directory.hs"+                                                                                               298+                                                                                               38+                                                                                               298+                                                                                               39+                                                                                         , srcInfoPoints =+                                                                                             []+                                                                                         }+                                                                                       (UnQual+                                                                                          SrcSpanInfo+                                                                                            { srcInfoSpan =+                                                                                                SrcSpan+                                                                                                  "tests/examples/Directory.hs"+                                                                                                  298+                                                                                                  38+                                                                                                  298+                                                                                                  39+                                                                                            , srcInfoPoints =+                                                                                                []+                                                                                            }+                                                                                          (Ident+                                                                                             SrcSpanInfo+                                                                                               { srcInfoSpan =+                                                                                                   SrcSpan+                                                                                                     "tests/examples/Directory.hs"+                                                                                                     298+                                                                                                     38+                                                                                                     298+                                                                                                     39+                                                                                               , srcInfoPoints =+                                                                                                   []+                                                                                               }+                                                                                             "e")))))+                                                                          ])))+                                                             ]))+                                                       (QVarOp+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  299+                                                                  17+                                                                  299+                                                                  24+                                                            , srcInfoPoints =+                                                                [ SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    299+                                                                    17+                                                                    299+                                                                    18+                                                                , SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    299+                                                                    18+                                                                    299+                                                                    23+                                                                , SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    299+                                                                    23+                                                                    299+                                                                    24+                                                                ]+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     299+                                                                     17+                                                                     299+                                                                     24+                                                               , srcInfoPoints =+                                                                   [ SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       299+                                                                       17+                                                                       299+                                                                       18+                                                                   , SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       299+                                                                       18+                                                                       299+                                                                       23+                                                                   , SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       299+                                                                       23+                                                                       299+                                                                       24+                                                                   ]+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        299+                                                                        18+                                                                        299+                                                                        23+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "catch")))+                                                       (Paren+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  299+                                                                  25+                                                                  299+                                                                  68+                                                            , srcInfoPoints =+                                                                [ SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    299+                                                                    25+                                                                    299+                                                                    26+                                                                , SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    299+                                                                    67+                                                                    299+                                                                    68+                                                                ]+                                                            }+                                                          (ExpTypeSig+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     299+                                                                     26+                                                                     299+                                                                     67+                                                               , srcInfoPoints =+                                                                   [ SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       299+                                                                       44+                                                                       299+                                                                       46+                                                                   ]+                                                               }+                                                             (Paren+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        299+                                                                        26+                                                                        299+                                                                        43+                                                                  , srcInfoPoints =+                                                                      [ SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          299+                                                                          26+                                                                          299+                                                                          27+                                                                      , SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          299+                                                                          42+                                                                          299+                                                                          43+                                                                      ]+                                                                  }+                                                                (Lambda+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           299+                                                                           27+                                                                           299+                                                                           42+                                                                     , srcInfoPoints =+                                                                         [ SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             299+                                                                             27+                                                                             299+                                                                             28+                                                                         , SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             299+                                                                             30+                                                                             299+                                                                             32+                                                                         ]+                                                                     }+                                                                   [ PWildCard+                                                                       SrcSpanInfo+                                                                         { srcInfoSpan =+                                                                             SrcSpan+                                                                               "tests/examples/Directory.hs"+                                                                               299+                                                                               28+                                                                               299+                                                                               29+                                                                         , srcInfoPoints = []+                                                                         }+                                                                   ]+                                                                   (App+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              299+                                                                              33+                                                                              299+                                                                              42+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (Var+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 299+                                                                                 33+                                                                                 299+                                                                                 39+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (UnQual+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    299+                                                                                    33+                                                                                    299+                                                                                    39+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            (Ident+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       299+                                                                                       33+                                                                                       299+                                                                                       39+                                                                                 , srcInfoPoints =+                                                                                     []+                                                                                 }+                                                                               "return")))+                                                                      (Con+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 299+                                                                                 40+                                                                                 299+                                                                                 42+                                                                           , srcInfoPoints =+                                                                               [ SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   299+                                                                                   40+                                                                                   299+                                                                                   41+                                                                               , SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   299+                                                                                   41+                                                                                   299+                                                                                   42+                                                                               ]+                                                                           }+                                                                         (Special+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    299+                                                                                    40+                                                                                    299+                                                                                    42+                                                                              , srcInfoPoints =+                                                                                  [ SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      299+                                                                                      40+                                                                                      299+                                                                                      41+                                                                                  , SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      299+                                                                                      41+                                                                                      299+                                                                                      42+                                                                                  ]+                                                                              }+                                                                            (UnitCon+                                                                               SrcSpanInfo+                                                                                 { srcInfoSpan =+                                                                                     SrcSpan+                                                                                       "tests/examples/Directory.hs"+                                                                                       299+                                                                                       40+                                                                                       299+                                                                                       42+                                                                                 , srcInfoPoints =+                                                                                     [ SrcSpan+                                                                                         "tests/examples/Directory.hs"+                                                                                         299+                                                                                         40+                                                                                         299+                                                                                         41+                                                                                     , SrcSpan+                                                                                         "tests/examples/Directory.hs"+                                                                                         299+                                                                                         41+                                                                                         299+                                                                                         42+                                                                                     ]+                                                                                 }))))))+                                                             (TyFun+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        299+                                                                        47+                                                                        299+                                                                        67+                                                                  , srcInfoPoints =+                                                                      [ SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          299+                                                                          59+                                                                          299+                                                                          61+                                                                      ]+                                                                  }+                                                                (TyCon+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           299+                                                                           47+                                                                           299+                                                                           58+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (UnQual+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              299+                                                                              47+                                                                              299+                                                                              58+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (Ident+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 299+                                                                                 47+                                                                                 299+                                                                                 58+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         "IOException")))+                                                                (TyApp+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           299+                                                                           62+                                                                           299+                                                                           67+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (TyCon+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              299+                                                                              62+                                                                              299+                                                                              64+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (UnQual+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 299+                                                                                 62+                                                                                 299+                                                                                 64+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (Ident+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    299+                                                                                    62+                                                                                    299+                                                                                    64+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            "IO")))+                                                                   (TyCon+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              299+                                                                              65+                                                                              299+                                                                              67+                                                                        , srcInfoPoints =+                                                                            [ SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                299+                                                                                65+                                                                                299+                                                                                66+                                                                            , SrcSpan+                                                                                "tests/examples/Directory.hs"+                                                                                299+                                                                                66+                                                                                299+                                                                                67+                                                                            ]+                                                                        }+                                                                      (Special+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 299+                                                                                 65+                                                                                 299+                                                                                 67+                                                                           , srcInfoPoints =+                                                                               [ SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   299+                                                                                   65+                                                                                   299+                                                                                   66+                                                                               , SrcSpan+                                                                                   "tests/examples/Directory.hs"+                                                                                   299+                                                                                   66+                                                                                   299+                                                                                   67+                                                                               ]+                                                                           }+                                                                         (UnitCon+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    299+                                                                                    65+                                                                                    299+                                                                                    67+                                                                              , srcInfoPoints =+                                                                                  [ SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      299+                                                                                      65+                                                                                      299+                                                                                      66+                                                                                  , SrcSpan+                                                                                      "tests/examples/Directory.hs"+                                                                                      299+                                                                                      66+                                                                                      299+                                                                                      67+                                                                                  ]+                                                                              }))))))))+                                                , GuardedRhs+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            300+                                                            11+                                                            300+                                                            46+                                                      , srcInfoPoints =+                                                          [ SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              300+                                                              11+                                                              300+                                                              12+                                                          , SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              300+                                                              36+                                                              300+                                                              38+                                                          ]+                                                      }+                                                    [ Qualifier+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                300+                                                                13+                                                                300+                                                                22+                                                          , srcInfoPoints = []+                                                          }+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   300+                                                                   13+                                                                   300+                                                                   22+                                                             , srcInfoPoints = []+                                                             }+                                                           (UnQual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      300+                                                                      13+                                                                      300+                                                                      22+                                                                , srcInfoPoints = []+                                                                }+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         300+                                                                         13+                                                                         300+                                                                         22+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "otherwise")))+                                                    ]+                                                    (App+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               300+                                                               39+                                                               300+                                                               46+                                                         , srcInfoPoints = []+                                                         }+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  300+                                                                  39+                                                                  300+                                                                  44+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     300+                                                                     39+                                                                     300+                                                                     44+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        300+                                                                        39+                                                                        300+                                                                        44+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "throw")))+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  300+                                                                  45+                                                                  300+                                                                  46+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     300+                                                                     45+                                                                     300+                                                                     46+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        300+                                                                        45+                                                                        300+                                                                        46+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "e"))))+                                                ])+                                             Nothing+                                         ])+                                  ]))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 1 343 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 343 17 343 19 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 1 343 16+                , srcInfoPoints = []+                }+              "removeDirectory"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 20 343 37+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 343 29 343 31 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 20 343 28+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 20 343 28+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 20 343 28+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 32 343 37+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 32 343 34+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 32 343 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 32 343 34+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 35 343 37+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 343 35 343 36+                         , SrcSpan "tests/examples/Directory.hs" 343 36 343 37+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 35 343 37+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 343 35 343 36+                            , SrcSpan "tests/examples/Directory.hs" 343 36 343 37+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 35 343 37+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 343 35 343 36+                               , SrcSpan "tests/examples/Directory.hs" 343 36 343 37+                               ]+                           })))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 1 345 29+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 1 345 29+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 1 344 16+                   , srcInfoPoints = []+                   }+                 "removeDirectory")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 17 344 21+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 17 344 21+                       , srcInfoPoints = []+                       }+                     "path")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 22 345 29+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 344 22 344 23 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 29+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 24+                         , srcInfoPoints = []+                         }+                       (Qual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 24+                            , srcInfoPoints = []+                            }+                          (ModuleName+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 24+                               , srcInfoPoints = []+                               }+                             "Win32")+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 24+                               , srcInfoPoints = []+                               }+                             "removeDirectory")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 25 345 29+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 25 345 29+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 25 345 29+                               , srcInfoPoints = []+                               }+                             "path")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 1 350 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 350 26 350 28 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 1 350 25+                , srcInfoPoints = []+                }+              "removeDirectoryRecursive"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 29 350 46+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 350 38 350 40 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 29 350 37+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 29 350 37+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 29 350 37+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 41 350 46+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 41 350 43+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 41 350 43+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 41 350 43+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 44 350 46+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 350 44 350 45+                         , SrcSpan "tests/examples/Directory.hs" 350 45 350 46+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 44 350 46+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 350 44 350 45+                            , SrcSpan "tests/examples/Directory.hs" 350 45 350 46+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 44 350 46+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 350 44 350 45+                               , SrcSpan "tests/examples/Directory.hs" 350 45 350 46+                               ]+                           })))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 1 363 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 355 3 355 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 1 363 37+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 355 3 355 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 1 351 25+                   , srcInfoPoints = []+                   }+                 "removeDirectoryRecursive")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 26 351 34+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 26 351 34+                       , srcInfoPoints = []+                       }+                     "startLoc")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 35 354 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 351 35 351 36 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 37 354 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 351 37 351 39+                          , SrcSpan "tests/examples/Directory.hs" 352 3 352 3+                          , SrcSpan "tests/examples/Directory.hs" 353 3 353 3+                          , SrcSpan "tests/examples/Directory.hs" 354 3 354 3+                          , SrcSpan "tests/examples/Directory.hs" 355 3 355 3+                          , SrcSpan "tests/examples/Directory.hs" 355 3 355 3+                          ]+                      }+                    [ Generator+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 3 352 40+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 352 8 352 10 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 3 352 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 3 352 7+                                , srcInfoPoints = []+                                }+                              "cont"))+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 11 352 40+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 11 352 31+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 352 11 352 31+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 352 11 352 31+                                      , srcInfoPoints = []+                                      }+                                    "getDirectoryContents")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 32 352 40+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 352 32 352 40+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 352 32 352 40+                                      , srcInfoPoints = []+                                      }+                                    "startLoc"))))+                    , Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 353 3 353 69+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 353 3 353 69+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 353 3 353 12+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 353 3 353 12+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 353 3 353 12+                                      , srcInfoPoints = []+                                      }+                                    "sequence_")))+                           (ListComp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 353 13 353 69+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 353 13 353 14+                                    , SrcSpan "tests/examples/Directory.hs" 353 34 353 35+                                    , SrcSpan "tests/examples/Directory.hs" 353 45 353 46+                                    , SrcSpan "tests/examples/Directory.hs" 353 68 353 69+                                    ]+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 353 14 353 33+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 353 14 353 16+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 353 14 353 16+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 353 14 353 16+                                            , srcInfoPoints = []+                                            }+                                          "rm")))+                                 (Paren+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 353 17 353 33+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 353 17 353 18+                                          , SrcSpan "tests/examples/Directory.hs" 353 32 353 33+                                          ]+                                      }+                                    (InfixApp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 353 18 353 32+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 353 18 353 26+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 353 18 353 26+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 353 18 353 26+                                                  , srcInfoPoints = []+                                                  }+                                                "startLoc")))+                                       (QVarOp+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 353 27 353 30+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 353 27 353 30+                                               , srcInfoPoints = []+                                               }+                                             (Symbol+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 353 27 353 30+                                                  , srcInfoPoints = []+                                                  }+                                                "</>")))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 353 31 353 32+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 353 31 353 32+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 353 31 353 32+                                                  , srcInfoPoints = []+                                                  }+                                                "x"))))))+                              [ QualStmt+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 353 36 353 45+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Directory.hs" 353 38 353 40 ]+                                    }+                                  (Generator+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 353 36 353 45+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 353 38 353 40 ]+                                       }+                                     (PVar+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 353 36 353 37+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 353 36 353 37+                                             , srcInfoPoints = []+                                             }+                                           "x"))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 353 41 353 45+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 353 41 353 45+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 353 41 353 45+                                                , srcInfoPoints = []+                                                }+                                              "cont"))))+                              , QualStmt+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 353 47 353 68+                                    , srcInfoPoints = []+                                    }+                                  (Qualifier+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 353 47 353 68+                                       , srcInfoPoints = []+                                       }+                                     (InfixApp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 353 47 353 68+                                          , srcInfoPoints = []+                                          }+                                        (InfixApp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 353 47 353 55+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 353 47 353 48+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 353 47 353 48+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            353+                                                            47+                                                            353+                                                            48+                                                      , srcInfoPoints = []+                                                      }+                                                    "x")))+                                           (QVarOp+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 353 49 353 51+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 353 49 353 51+                                                   , srcInfoPoints = []+                                                   }+                                                 (Symbol+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            353+                                                            49+                                                            353+                                                            51+                                                      , srcInfoPoints = []+                                                      }+                                                    "/=")))+                                           (Lit+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 353 52 353 55+                                                , srcInfoPoints = []+                                                }+                                              (String+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 353 52 353 55+                                                   , srcInfoPoints = []+                                                   }+                                                 "."+                                                 ".")))+                                        (QVarOp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 353 56 353 58+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 353 56 353 58+                                                , srcInfoPoints = []+                                                }+                                              (Symbol+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 353 56 353 58+                                                   , srcInfoPoints = []+                                                   }+                                                 "&&")))+                                        (InfixApp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 353 59 353 68+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 353 59 353 60+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 353 59 353 60+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            353+                                                            59+                                                            353+                                                            60+                                                      , srcInfoPoints = []+                                                      }+                                                    "x")))+                                           (QVarOp+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 353 61 353 63+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 353 61 353 63+                                                   , srcInfoPoints = []+                                                   }+                                                 (Symbol+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            353+                                                            61+                                                            353+                                                            63+                                                      , srcInfoPoints = []+                                                      }+                                                    "/=")))+                                           (Lit+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 353 64 353 68+                                                , srcInfoPoints = []+                                                }+                                              (String+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 353 64 353 68+                                                   , srcInfoPoints = []+                                                   }+                                                 ".."+                                                 "..")))))+                              ]))+                    , Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 354 3 354 27+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 354 3 354 27+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 354 3 354 18+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 354 3 354 18+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 354 3 354 18+                                      , srcInfoPoints = []+                                      }+                                    "removeDirectory")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 354 19 354 27+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 354 19 354 27+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 354 19 354 27+                                      , srcInfoPoints = []+                                      }+                                    "startLoc"))))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 5 363 37+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 356 5 356 5+                          , SrcSpan "tests/examples/Directory.hs" 357 5 357 5+                          , SrcSpan "tests/examples/Directory.hs" 399 1 399 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 5 356 28+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 356 8 356 10 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 5 356 7+                              , srcInfoPoints = []+                              }+                            "rm"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 11 356 28+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 356 20 356 22 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 11 356 19+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 356 11 356 19+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 356 11 356 19+                                      , srcInfoPoints = []+                                      }+                                    "FilePath")))+                           (TyApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 23 356 28+                                , srcInfoPoints = []+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 356 23 356 25+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 356 23 356 25+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 356 23 356 25+                                         , srcInfoPoints = []+                                         }+                                       "IO")))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 356 26 356 28+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 356 26 356 27+                                       , SrcSpan "tests/examples/Directory.hs" 356 27 356 28+                                       ]+                                   }+                                 (Special+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 356 26 356 28+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 356 26 356 27+                                          , SrcSpan "tests/examples/Directory.hs" 356 27 356 28+                                          ]+                                      }+                                    (UnitCon+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 356 26 356 28+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 356 26 356 27+                                             , SrcSpan "tests/examples/Directory.hs" 356 27 356 28+                                             ]+                                         })))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 5 363 37+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 5 363 37+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 5 357 7+                                 , srcInfoPoints = []+                                 }+                               "rm")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 8 357 9+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 357 8 357 9+                                     , srcInfoPoints = []+                                     }+                                   "f")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 10 363 37+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 357 10 357 11 ]+                                 }+                               (Do+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 357 12 363 37+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Directory.hs" 357 12 357 14+                                        , SrcSpan "tests/examples/Directory.hs" 357 15 357 15+                                        , SrcSpan "tests/examples/Directory.hs" 358 15 358 15+                                        , SrcSpan "tests/examples/Directory.hs" 399 1 399 0+                                        ]+                                    }+                                  [ Generator+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 357 15 357 41+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 357 20 357 22 ]+                                        }+                                      (PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 357 15 357 19+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 357 15 357 19+                                              , srcInfoPoints = []+                                              }+                                            "temp"))+                                      (App+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 357 23 357 41+                                           , srcInfoPoints = []+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 357 23 357 26+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 357 23 357 26+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          357+                                                          23+                                                          357+                                                          26+                                                    , srcInfoPoints = []+                                                    }+                                                  "try")))+                                         (Paren+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 357 27 357 41+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/Directory.hs" 357 27 357 28+                                                  , SrcSpan+                                                      "tests/examples/Directory.hs" 357 40 357 41+                                                  ]+                                              }+                                            (App+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 357 28 357 40+                                                 , srcInfoPoints = []+                                                 }+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          357+                                                          28+                                                          357+                                                          38+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             357+                                                             28+                                                             357+                                                             38+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                357+                                                                28+                                                                357+                                                                38+                                                          , srcInfoPoints = []+                                                          }+                                                        "removeFile")))+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          357+                                                          39+                                                          357+                                                          40+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             357+                                                             39+                                                             357+                                                             40+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                357+                                                                39+                                                                357+                                                                40+                                                          , srcInfoPoints = []+                                                          }+                                                        "f"))))))+                                  , Qualifier+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 358 15 363 37+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 358 15 358 19+                                            , SrcSpan "tests/examples/Directory.hs" 358 25 358 27+                                            , SrcSpan "tests/examples/Directory.hs" 359 17 359 17+                                            , SrcSpan "tests/examples/Directory.hs" 363 17 363 17+                                            , SrcSpan "tests/examples/Directory.hs" 399 1 399 0+                                            ]+                                        }+                                      (Case+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 358 15 363 37+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/Directory.hs" 358 15 358 19+                                               , SrcSpan "tests/examples/Directory.hs" 358 25 358 27+                                               , SrcSpan "tests/examples/Directory.hs" 359 17 359 17+                                               , SrcSpan "tests/examples/Directory.hs" 363 17 363 17+                                               , SrcSpan "tests/examples/Directory.hs" 399 1 399 0+                                               ]+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 358 20 358 24+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 358 20 358 24+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          358+                                                          20+                                                          358+                                                          24+                                                    , srcInfoPoints = []+                                                    }+                                                  "temp")))+                                         [ Alt+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 359 17 362 57+                                               , srcInfoPoints = []+                                               }+                                             (PApp+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 359 17 359 23+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           359+                                                           17+                                                           359+                                                           21+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              359+                                                              17+                                                              359+                                                              21+                                                        , srcInfoPoints = []+                                                        }+                                                      "Left"))+                                                [ PVar+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            359+                                                            22+                                                            359+                                                            23+                                                      , srcInfoPoints = []+                                                      }+                                                    (Ident+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               359+                                                               22+                                                               359+                                                               23+                                                         , srcInfoPoints = []+                                                         }+                                                       "e")+                                                ])+                                             (UnGuardedRhs+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 359 25 362 57+                                                  , srcInfoPoints =+                                                      [ SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          359+                                                          25+                                                          359+                                                          27+                                                      ]+                                                  }+                                                (Do+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           359+                                                           28+                                                           362+                                                           57+                                                     , srcInfoPoints =+                                                         [ SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             359+                                                             28+                                                             359+                                                             30+                                                         , SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             359+                                                             31+                                                             359+                                                             31+                                                         , SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             361+                                                             31+                                                             361+                                                             31+                                                         , SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             362+                                                             31+                                                             362+                                                             31+                                                         , SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             363+                                                             17+                                                             363+                                                             0+                                                         ]+                                                     }+                                                   [ Generator+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               359+                                                               31+                                                               359+                                                               60+                                                         , srcInfoPoints =+                                                             [ SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 359+                                                                 37+                                                                 359+                                                                 39+                                                             ]+                                                         }+                                                       (PVar+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  359+                                                                  31+                                                                  359+                                                                  36+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     359+                                                                     31+                                                                     359+                                                                     36+                                                               , srcInfoPoints = []+                                                               }+                                                             "isDir"))+                                                       (App+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  359+                                                                  40+                                                                  359+                                                                  60+                                                            , srcInfoPoints = []+                                                            }+                                                          (Var+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     359+                                                                     40+                                                                     359+                                                                     58+                                                               , srcInfoPoints = []+                                                               }+                                                             (UnQual+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        359+                                                                        40+                                                                        359+                                                                        58+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Ident+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           359+                                                                           40+                                                                           359+                                                                           58+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   "doesDirectoryExist")))+                                                          (Var+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     359+                                                                     59+                                                                     359+                                                                     60+                                                               , srcInfoPoints = []+                                                               }+                                                             (UnQual+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        359+                                                                        59+                                                                        359+                                                                        60+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Ident+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           359+                                                                           59+                                                                           359+                                                                           60+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   "f"))))+                                                   , Qualifier+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               361+                                                               31+                                                               361+                                                               72+                                                         , srcInfoPoints = []+                                                         }+                                                       (InfixApp+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  361+                                                                  31+                                                                  361+                                                                  72+                                                            , srcInfoPoints = []+                                                            }+                                                          (App+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     361+                                                                     31+                                                                     361+                                                                     43+                                                               , srcInfoPoints = []+                                                               }+                                                             (Var+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        361+                                                                        31+                                                                        361+                                                                        37+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           361+                                                                           31+                                                                           361+                                                                           37+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Ident+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              361+                                                                              31+                                                                              361+                                                                              37+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "unless")))+                                                             (Var+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        361+                                                                        38+                                                                        361+                                                                        43+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           361+                                                                           38+                                                                           361+                                                                           43+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Ident+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              361+                                                                              38+                                                                              361+                                                                              43+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "isDir"))))+                                                          (QVarOp+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     361+                                                                     44+                                                                     361+                                                                     45+                                                               , srcInfoPoints = []+                                                               }+                                                             (UnQual+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        361+                                                                        44+                                                                        361+                                                                        45+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Symbol+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           361+                                                                           44+                                                                           361+                                                                           45+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   "$")))+                                                          (App+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     361+                                                                     46+                                                                     361+                                                                     72+                                                               , srcInfoPoints = []+                                                               }+                                                             (Var+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        361+                                                                        46+                                                                        361+                                                                        51+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           361+                                                                           46+                                                                           361+                                                                           51+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Ident+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              361+                                                                              46+                                                                              361+                                                                              51+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "throw")))+                                                             (Paren+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        361+                                                                        52+                                                                        361+                                                                        72+                                                                  , srcInfoPoints =+                                                                      [ SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          361+                                                                          52+                                                                          361+                                                                          53+                                                                      , SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          361+                                                                          71+                                                                          361+                                                                          72+                                                                      ]+                                                                  }+                                                                (ExpTypeSig+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           361+                                                                           53+                                                                           361+                                                                           71+                                                                     , srcInfoPoints =+                                                                         [ SrcSpan+                                                                             "tests/examples/Directory.hs"+                                                                             361+                                                                             55+                                                                             361+                                                                             57+                                                                         ]+                                                                     }+                                                                   (Var+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              361+                                                                              53+                                                                              361+                                                                              54+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (UnQual+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 361+                                                                                 53+                                                                                 361+                                                                                 54+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (Ident+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    361+                                                                                    53+                                                                                    361+                                                                                    54+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            "e")))+                                                                   (TyCon+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              361+                                                                              58+                                                                              361+                                                                              71+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (UnQual+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 361+                                                                                 58+                                                                                 361+                                                                                 71+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (Ident+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    361+                                                                                    58+                                                                                    361+                                                                                    71+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            "SomeException")))))))+                                                   , Qualifier+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               362+                                                               31+                                                               362+                                                               57+                                                         , srcInfoPoints = []+                                                         }+                                                       (App+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  362+                                                                  31+                                                                  362+                                                                  57+                                                            , srcInfoPoints = []+                                                            }+                                                          (Var+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     362+                                                                     31+                                                                     362+                                                                     55+                                                               , srcInfoPoints = []+                                                               }+                                                             (UnQual+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        362+                                                                        31+                                                                        362+                                                                        55+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Ident+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           362+                                                                           31+                                                                           362+                                                                           55+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   "removeDirectoryRecursive")))+                                                          (Var+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     362+                                                                     56+                                                                     362+                                                                     57+                                                               , srcInfoPoints = []+                                                               }+                                                             (UnQual+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        362+                                                                        56+                                                                        362+                                                                        57+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Ident+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           362+                                                                           56+                                                                           362+                                                                           57+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   "f"))))+                                                   ]))+                                             Nothing+                                         , Alt+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 363 17 363 37+                                               , srcInfoPoints = []+                                               }+                                             (PApp+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 363 17 363 24+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           363+                                                           17+                                                           363+                                                           22+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              363+                                                              17+                                                              363+                                                              22+                                                        , srcInfoPoints = []+                                                        }+                                                      "Right"))+                                                [ PWildCard+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            363+                                                            23+                                                            363+                                                            24+                                                      , srcInfoPoints = []+                                                      }+                                                ])+                                             (UnGuardedRhs+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 363 25 363 37+                                                  , srcInfoPoints =+                                                      [ SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          363+                                                          25+                                                          363+                                                          27+                                                      ]+                                                  }+                                                (App+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           363+                                                           28+                                                           363+                                                           37+                                                     , srcInfoPoints = []+                                                     }+                                                   (Var+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              363+                                                              28+                                                              363+                                                              34+                                                        , srcInfoPoints = []+                                                        }+                                                      (UnQual+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 363+                                                                 28+                                                                 363+                                                                 34+                                                           , srcInfoPoints = []+                                                           }+                                                         (Ident+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    363+                                                                    28+                                                                    363+                                                                    34+                                                              , srcInfoPoints = []+                                                              }+                                                            "return")))+                                                   (Con+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              363+                                                              35+                                                              363+                                                              37+                                                        , srcInfoPoints =+                                                            [ SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                363+                                                                35+                                                                363+                                                                36+                                                            , SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                363+                                                                36+                                                                363+                                                                37+                                                            ]+                                                        }+                                                      (Special+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 363+                                                                 35+                                                                 363+                                                                 37+                                                           , srcInfoPoints =+                                                               [ SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   363+                                                                   35+                                                                   363+                                                                   36+                                                               , SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   363+                                                                   36+                                                                   363+                                                                   37+                                                               ]+                                                           }+                                                         (UnitCon+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    363+                                                                    35+                                                                    363+                                                                    37+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      363+                                                                      35+                                                                      363+                                                                      36+                                                                  , SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      363+                                                                      36+                                                                      363+                                                                      37+                                                                  ]+                                                              })))))+                                             Nothing+                                         ])+                                  ]))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 1 399 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 399 12 399 14 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 1 399 11+                , srcInfoPoints = []+                }+              "removeFile"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 15 399 32+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 399 24 399 26 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 15 399 23+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 15 399 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 15 399 23+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 27 399 32+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 27 399 29+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 27 399 29+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 27 399 29+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 30 399 32+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 399 30 399 31+                         , SrcSpan "tests/examples/Directory.hs" 399 31 399 32+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 30 399 32+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 399 30 399 31+                            , SrcSpan "tests/examples/Directory.hs" 399 31 399 32+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 30 399 32+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 399 30 399 31+                               , SrcSpan "tests/examples/Directory.hs" 399 31 399 32+                               ]+                           })))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 1 401 24+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 1 401 24+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 1 400 11+                   , srcInfoPoints = []+                   }+                 "removeFile")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 12 400 16+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 12 400 16+                       , srcInfoPoints = []+                       }+                     "path")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 17 401 24+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 400 17 400 18 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 24+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 19+                         , srcInfoPoints = []+                         }+                       (Qual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 19+                            , srcInfoPoints = []+                            }+                          (ModuleName+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 19+                               , srcInfoPoints = []+                               }+                             "Win32")+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 19+                               , srcInfoPoints = []+                               }+                             "deleteFile")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 20 401 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 20 401 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 20 401 24+                               , srcInfoPoints = []+                               }+                             "path")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 1 452 49+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 452 17 452 19 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 1 452 16+                , srcInfoPoints = []+                }+              "renameDirectory"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 20 452 49+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 452 29 452 31 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 20 452 28+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 20 452 28+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 20 452 28+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 32 452 49+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 452 41 452 43 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 32 452 40+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 32 452 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 32 452 40+                           , srcInfoPoints = []+                           }+                         "FilePath")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 44 452 49+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 44 452 46+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 44 452 46+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 44 452 46+                              , srcInfoPoints = []+                              }+                            "IO")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 47 452 49+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 452 47 452 48+                            , SrcSpan "tests/examples/Directory.hs" 452 48 452 49+                            ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 47 452 49+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 452 47 452 48+                               , SrcSpan "tests/examples/Directory.hs" 452 48 452 49+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 47 452 49+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Directory.hs" 452 47 452 48+                                  , SrcSpan "tests/examples/Directory.hs" 452 48 452 49+                                  ]+                              }))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 1 463 64+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 1 463 64+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 1 453 16+                   , srcInfoPoints = []+                   }+                 "renameDirectory")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 17 453 22+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 17 453 22+                       , srcInfoPoints = []+                       }+                     "opath")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 23 453 28+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 23 453 28+                       , srcInfoPoints = []+                       }+                     "npath")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 29 463 64+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 453 29 453 30 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 31 463 64+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 453 31 453 33+                          , SrcSpan "tests/examples/Directory.hs" 456 4 456 4+                          , SrcSpan "tests/examples/Directory.hs" 509 1 509 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 4 463 64+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 4 463 64+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 4 456 42+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 456 4 456 36+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 456 4 456 18+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 456 4 456 18+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 456 4 456 18+                                            , srcInfoPoints = []+                                            }+                                          "withFileStatus")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 456 19 456 36+                                      , srcInfoPoints = []+                                      }+                                    (String+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 456 19 456 36+                                         , srcInfoPoints = []+                                         }+                                       "renameDirectory"+                                       "renameDirectory")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 456 37 456 42+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 456 37 456 42+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 456 37 456 42+                                         , srcInfoPoints = []+                                         }+                                       "opath"))))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 43 456 44+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 456 43 456 44+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 456 43 456 44+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (Lambda+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 45 463 64+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 456 45 456 46+                                    , SrcSpan "tests/examples/Directory.hs" 456 49 456 51+                                    ]+                                }+                              [ PVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 456 46 456 48+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 456 46 456 48+                                       , srcInfoPoints = []+                                       }+                                     "st")+                              ]+                              (Do+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 456 52 463 64+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 456 52 456 54+                                       , SrcSpan "tests/examples/Directory.hs" 457 4 457 4+                                       , SrcSpan "tests/examples/Directory.hs" 457 4 457 4+                                       , SrcSpan "tests/examples/Directory.hs" 458 4 458 4+                                       , SrcSpan "tests/examples/Directory.hs" 509 1 509 0+                                       ]+                                   }+                                 [ Generator+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 457 4 457 28+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 457 11 457 13 ]+                                       }+                                     (PVar+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 457 4 457 10+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 457 4 457 10+                                             , srcInfoPoints = []+                                             }+                                           "is_dir"))+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 457 14 457 28+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 457 14 457 25+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 457 14 457 25+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 457 14 457 25+                                                   , srcInfoPoints = []+                                                   }+                                                 "isDirectory")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 457 26 457 28+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 457 26 457 28+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 457 26 457 28+                                                   , srcInfoPoints = []+                                                   }+                                                 "st"))))+                                 , Qualifier+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 458 4 463 64+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 458 4 458 6+                                           , SrcSpan "tests/examples/Directory.hs" 459 5 459 9+                                           , SrcSpan "tests/examples/Directory.hs" 462 5 462 9+                                           ]+                                       }+                                     (If+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 458 4 463 64+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 458 4 458 6+                                              , SrcSpan "tests/examples/Directory.hs" 459 5 459 9+                                              , SrcSpan "tests/examples/Directory.hs" 462 5 462 9+                                              ]+                                          }+                                        (Paren+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 458 7 458 19+                                             , srcInfoPoints =+                                                 [ SrcSpan "tests/examples/Directory.hs" 458 7 458 8+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 458 18 458 19+                                                 ]+                                             }+                                           (App+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 458 8 458 18+                                                , srcInfoPoints = []+                                                }+                                              (Var+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 458 8 458 11+                                                   , srcInfoPoints = []+                                                   }+                                                 (UnQual+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            458+                                                            8+                                                            458+                                                            11+                                                      , srcInfoPoints = []+                                                      }+                                                    (Ident+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               458+                                                               8+                                                               458+                                                               11+                                                         , srcInfoPoints = []+                                                         }+                                                       "not")))+                                              (Var+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 458 12 458 18+                                                   , srcInfoPoints = []+                                                   }+                                                 (UnQual+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            458+                                                            12+                                                            458+                                                            18+                                                      , srcInfoPoints = []+                                                      }+                                                    (Ident+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               458+                                                               12+                                                               458+                                                               18+                                                         , srcInfoPoints = []+                                                         }+                                                       "is_dir")))))+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 459 10 461 45+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 459 10 459 21+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 459 10 459 21+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            459+                                                            10+                                                            459+                                                            21+                                                      , srcInfoPoints = []+                                                      }+                                                    "ioException")))+                                           (Paren+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 459 22 461 45+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/Directory.hs" 459 22 459 23+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 461 44 461 45+                                                    ]+                                                }+                                              (App+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 459 23 461 44+                                                   , srcInfoPoints = []+                                                   }+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            459+                                                            23+                                                            460+                                                            95+                                                      , srcInfoPoints = []+                                                      }+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               459+                                                               23+                                                               459+                                                               40+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  459+                                                                  23+                                                                  459+                                                                  40+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     459+                                                                     23+                                                                     459+                                                                     40+                                                               , srcInfoPoints = []+                                                               }+                                                             "ioeSetErrorString")))+                                                    (Paren+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               460+                                                               27+                                                               460+                                                               95+                                                         , srcInfoPoints =+                                                             [ SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 460+                                                                 27+                                                                 460+                                                                 28+                                                             , SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 460+                                                                 94+                                                                 460+                                                                 95+                                                             ]+                                                         }+                                                       (App+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  460+                                                                  28+                                                                  460+                                                                  94+                                                            , srcInfoPoints = []+                                                            }+                                                          (App+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     460+                                                                     28+                                                                     460+                                                                     81+                                                               , srcInfoPoints = []+                                                               }+                                                             (App+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        460+                                                                        28+                                                                        460+                                                                        73+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (App+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           460+                                                                           28+                                                                           460+                                                                           55+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Var+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              460+                                                                              28+                                                                              460+                                                                              37+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (UnQual+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 460+                                                                                 28+                                                                                 460+                                                                                 37+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (Ident+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    460+                                                                                    28+                                                                                    460+                                                                                    37+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            "mkIOError")))+                                                                   (Con+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              460+                                                                              38+                                                                              460+                                                                              55+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (UnQual+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 460+                                                                                 38+                                                                                 460+                                                                                 55+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (Ident+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    460+                                                                                    38+                                                                                    460+                                                                                    55+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            "InappropriateType"))))+                                                                (Lit+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           460+                                                                           56+                                                                           460+                                                                           73+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (String+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              460+                                                                              56+                                                                              460+                                                                              73+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "renameDirectory"+                                                                      "renameDirectory")))+                                                             (Con+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        460+                                                                        74+                                                                        460+                                                                        81+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           460+                                                                           74+                                                                           460+                                                                           81+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Ident+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              460+                                                                              74+                                                                              460+                                                                              81+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "Nothing"))))+                                                          (Paren+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     460+                                                                     82+                                                                     460+                                                                     94+                                                               , srcInfoPoints =+                                                                   [ SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       460+                                                                       82+                                                                       460+                                                                       83+                                                                   , SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       460+                                                                       93+                                                                       460+                                                                       94+                                                                   ]+                                                               }+                                                             (App+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        460+                                                                        83+                                                                        460+                                                                        93+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Con+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           460+                                                                           83+                                                                           460+                                                                           87+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (UnQual+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              460+                                                                              83+                                                                              460+                                                                              87+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (Ident+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 460+                                                                                 83+                                                                                 460+                                                                                 87+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         "Just")))+                                                                (Var+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           460+                                                                           88+                                                                           460+                                                                           93+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (UnQual+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              460+                                                                              88+                                                                              460+                                                                              93+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (Ident+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 460+                                                                                 88+                                                                                 460+                                                                                 93+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         "opath"))))))))+                                                 (Lit+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            461+                                                            27+                                                            461+                                                            44+                                                      , srcInfoPoints = []+                                                      }+                                                    (String+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               461+                                                               27+                                                               461+                                                               44+                                                         , srcInfoPoints = []+                                                         }+                                                       "not a directory"+                                                       "not a directory")))))+                                        (Do+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 462 10 463 64+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 462 10 462 12+                                                 , SrcSpan "tests/examples/Directory.hs" 463 4 463 4+                                                 , SrcSpan "tests/examples/Directory.hs" 463 4 463 4+                                                 , SrcSpan "tests/examples/Directory.hs" 509 1 509 0+                                                 ]+                                             }+                                           [ Qualifier+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 463 4 463 64+                                                 , srcInfoPoints = []+                                                 }+                                               (App+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 463 4 463 64+                                                    , srcInfoPoints = []+                                                    }+                                                  (App+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             463+                                                             4+                                                             463+                                                             32+                                                       , srcInfoPoints = []+                                                       }+                                                     (App+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                463+                                                                4+                                                                463+                                                                26+                                                          , srcInfoPoints = []+                                                          }+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   463+                                                                   4+                                                                   463+                                                                   20+                                                             , srcInfoPoints = []+                                                             }+                                                           (Qual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      463+                                                                      4+                                                                      463+                                                                      20+                                                                , srcInfoPoints = []+                                                                }+                                                              (ModuleName+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         463+                                                                         4+                                                                         463+                                                                         20+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "Win32")+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         463+                                                                         4+                                                                         463+                                                                         20+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "moveFileEx")))+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   463+                                                                   21+                                                                   463+                                                                   26+                                                             , srcInfoPoints = []+                                                             }+                                                           (UnQual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      463+                                                                      21+                                                                      463+                                                                      26+                                                                , srcInfoPoints = []+                                                                }+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         463+                                                                         21+                                                                         463+                                                                         26+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "opath"))))+                                                     (Var+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                463+                                                                27+                                                                463+                                                                32+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   463+                                                                   27+                                                                   463+                                                                   32+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      463+                                                                      27+                                                                      463+                                                                      32+                                                                , srcInfoPoints = []+                                                                }+                                                              "npath"))))+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             463+                                                             33+                                                             463+                                                             64+                                                       , srcInfoPoints = []+                                                       }+                                                     (Qual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                463+                                                                33+                                                                463+                                                                64+                                                          , srcInfoPoints = []+                                                          }+                                                        (ModuleName+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   463+                                                                   33+                                                                   463+                                                                   64+                                                             , srcInfoPoints = []+                                                             }+                                                           "Win32")+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   463+                                                                   33+                                                                   463+                                                                   64+                                                             , srcInfoPoints = []+                                                             }+                                                           "mOVEFILE_REPLACE_EXISTING"))))+                                           ]))+                                 ])))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 1 509 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 509 12 509 14 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 1 509 11+                , srcInfoPoints = []+                }+              "renameFile"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 15 509 44+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 509 24 509 26 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 15 509 23+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 15 509 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 15 509 23+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 27 509 44+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 509 36 509 38 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 27 509 35+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 27 509 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 27 509 35+                           , srcInfoPoints = []+                           }+                         "FilePath")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 39 509 44+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 39 509 41+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 39 509 41+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 39 509 41+                              , srcInfoPoints = []+                              }+                            "IO")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 42 509 44+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 509 42 509 43+                            , SrcSpan "tests/examples/Directory.hs" 509 43 509 44+                            ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 42 509 44+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 509 42 509 43+                               , SrcSpan "tests/examples/Directory.hs" 509 43 509 44+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 42 509 44+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Directory.hs" 509 42 509 43+                                  , SrcSpan "tests/examples/Directory.hs" 509 43 509 44+                                  ]+                              }))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 1 520 64+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 1 520 64+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 1 510 11+                   , srcInfoPoints = []+                   }+                 "renameFile")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 12 510 17+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 12 510 17+                       , srcInfoPoints = []+                       }+                     "opath")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 18 510 23+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 18 510 23+                       , srcInfoPoints = []+                       }+                     "npath")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 24 520 64+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 510 24 510 25 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 26 520 64+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 510 26 510 28+                          , SrcSpan "tests/examples/Directory.hs" 513 4 513 4+                          , SrcSpan "tests/examples/Directory.hs" 528 1 528 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 4 520 64+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 4 520 64+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 4 513 46+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 513 4 513 40+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 513 4 513 27+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 513 4 513 27+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 513 4 513 27+                                            , srcInfoPoints = []+                                            }+                                          "withFileOrSymlinkStatus")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 513 28 513 40+                                      , srcInfoPoints = []+                                      }+                                    (String+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 513 28 513 40+                                         , srcInfoPoints = []+                                         }+                                       "renameFile"+                                       "renameFile")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 513 41 513 46+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 513 41 513 46+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 513 41 513 46+                                         , srcInfoPoints = []+                                         }+                                       "opath"))))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 47 513 48+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 513 47 513 48+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 513 47 513 48+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (Lambda+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 49 520 64+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 513 49 513 50+                                    , SrcSpan "tests/examples/Directory.hs" 513 53 513 55+                                    ]+                                }+                              [ PVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 513 50 513 52+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 513 50 513 52+                                       , srcInfoPoints = []+                                       }+                                     "st")+                              ]+                              (Do+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 513 56 520 64+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 513 56 513 58+                                       , SrcSpan "tests/examples/Directory.hs" 514 4 514 4+                                       , SrcSpan "tests/examples/Directory.hs" 514 4 514 4+                                       , SrcSpan "tests/examples/Directory.hs" 515 4 515 4+                                       , SrcSpan "tests/examples/Directory.hs" 528 1 528 0+                                       ]+                                   }+                                 [ Generator+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 514 4 514 28+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 514 11 514 13 ]+                                       }+                                     (PVar+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 514 4 514 10+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 514 4 514 10+                                             , srcInfoPoints = []+                                             }+                                           "is_dir"))+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 514 14 514 28+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 514 14 514 25+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 514 14 514 25+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 514 14 514 25+                                                   , srcInfoPoints = []+                                                   }+                                                 "isDirectory")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 514 26 514 28+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 514 26 514 28+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 514 26 514 28+                                                   , srcInfoPoints = []+                                                   }+                                                 "st"))))+                                 , Qualifier+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 515 4 520 64+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 515 4 515 6+                                           , SrcSpan "tests/examples/Directory.hs" 516 5 516 9+                                           , SrcSpan "tests/examples/Directory.hs" 519 5 519 9+                                           ]+                                       }+                                     (If+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 515 4 520 64+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 515 4 515 6+                                              , SrcSpan "tests/examples/Directory.hs" 516 5 516 9+                                              , SrcSpan "tests/examples/Directory.hs" 519 5 519 9+                                              ]+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 515 7 515 13+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 515 7 515 13+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 515 7 515 13+                                                   , srcInfoPoints = []+                                                   }+                                                 "is_dir")))+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 516 10 518 32+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 516 10 516 21+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 516 10 516 21+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            516+                                                            10+                                                            516+                                                            21+                                                      , srcInfoPoints = []+                                                      }+                                                    "ioException")))+                                           (Paren+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 516 22 518 32+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/Directory.hs" 516 22 516 23+                                                    , SrcSpan+                                                        "tests/examples/Directory.hs" 518 31 518 32+                                                    ]+                                                }+                                              (App+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 516 23 518 31+                                                   , srcInfoPoints = []+                                                   }+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            516+                                                            23+                                                            517+                                                            78+                                                      , srcInfoPoints = []+                                                      }+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               516+                                                               23+                                                               516+                                                               40+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  516+                                                                  23+                                                                  516+                                                                  40+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     516+                                                                     23+                                                                     516+                                                                     40+                                                               , srcInfoPoints = []+                                                               }+                                                             "ioeSetErrorString")))+                                                    (Paren+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               517+                                                               15+                                                               517+                                                               78+                                                         , srcInfoPoints =+                                                             [ SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 517+                                                                 15+                                                                 517+                                                                 16+                                                             , SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 517+                                                                 77+                                                                 517+                                                                 78+                                                             ]+                                                         }+                                                       (App+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  517+                                                                  16+                                                                  517+                                                                  77+                                                            , srcInfoPoints = []+                                                            }+                                                          (App+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     517+                                                                     16+                                                                     517+                                                                     64+                                                               , srcInfoPoints = []+                                                               }+                                                             (App+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        517+                                                                        16+                                                                        517+                                                                        56+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (App+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           517+                                                                           16+                                                                           517+                                                                           43+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Var+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              517+                                                                              16+                                                                              517+                                                                              25+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (UnQual+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 517+                                                                                 16+                                                                                 517+                                                                                 25+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (Ident+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    517+                                                                                    16+                                                                                    517+                                                                                    25+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            "mkIOError")))+                                                                   (Con+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              517+                                                                              26+                                                                              517+                                                                              43+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (UnQual+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 517+                                                                                 26+                                                                                 517+                                                                                 43+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (Ident+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/Directory.hs"+                                                                                    517+                                                                                    26+                                                                                    517+                                                                                    43+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            "InappropriateType"))))+                                                                (Lit+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           517+                                                                           44+                                                                           517+                                                                           56+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (String+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              517+                                                                              44+                                                                              517+                                                                              56+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "renameFile"+                                                                      "renameFile")))+                                                             (Con+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        517+                                                                        57+                                                                        517+                                                                        64+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           517+                                                                           57+                                                                           517+                                                                           64+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Ident+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              517+                                                                              57+                                                                              517+                                                                              64+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "Nothing"))))+                                                          (Paren+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     517+                                                                     65+                                                                     517+                                                                     77+                                                               , srcInfoPoints =+                                                                   [ SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       517+                                                                       65+                                                                       517+                                                                       66+                                                                   , SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       517+                                                                       76+                                                                       517+                                                                       77+                                                                   ]+                                                               }+                                                             (App+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        517+                                                                        66+                                                                        517+                                                                        76+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Con+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           517+                                                                           66+                                                                           517+                                                                           70+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (UnQual+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              517+                                                                              66+                                                                              517+                                                                              70+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (Ident+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 517+                                                                                 66+                                                                                 517+                                                                                 70+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         "Just")))+                                                                (Var+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           517+                                                                           71+                                                                           517+                                                                           76+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (UnQual+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/Directory.hs"+                                                                              517+                                                                              71+                                                                              517+                                                                              76+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (Ident+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/Directory.hs"+                                                                                 517+                                                                                 71+                                                                                 517+                                                                                 76+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         "opath"))))))))+                                                 (Lit+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            518+                                                            15+                                                            518+                                                            31+                                                      , srcInfoPoints = []+                                                      }+                                                    (String+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               518+                                                               15+                                                               518+                                                               31+                                                         , srcInfoPoints = []+                                                         }+                                                       "is a directory"+                                                       "is a directory")))))+                                        (Do+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 519 10 520 64+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 519 10 519 12+                                                 , SrcSpan "tests/examples/Directory.hs" 520 4 520 4+                                                 , SrcSpan "tests/examples/Directory.hs" 520 4 520 4+                                                 , SrcSpan "tests/examples/Directory.hs" 528 1 528 0+                                                 ]+                                             }+                                           [ Qualifier+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 520 4 520 64+                                                 , srcInfoPoints = []+                                                 }+                                               (App+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 520 4 520 64+                                                    , srcInfoPoints = []+                                                    }+                                                  (App+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             520+                                                             4+                                                             520+                                                             32+                                                       , srcInfoPoints = []+                                                       }+                                                     (App+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                520+                                                                4+                                                                520+                                                                26+                                                          , srcInfoPoints = []+                                                          }+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   520+                                                                   4+                                                                   520+                                                                   20+                                                             , srcInfoPoints = []+                                                             }+                                                           (Qual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      520+                                                                      4+                                                                      520+                                                                      20+                                                                , srcInfoPoints = []+                                                                }+                                                              (ModuleName+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         520+                                                                         4+                                                                         520+                                                                         20+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "Win32")+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         520+                                                                         4+                                                                         520+                                                                         20+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "moveFileEx")))+                                                        (Var+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   520+                                                                   21+                                                                   520+                                                                   26+                                                             , srcInfoPoints = []+                                                             }+                                                           (UnQual+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      520+                                                                      21+                                                                      520+                                                                      26+                                                                , srcInfoPoints = []+                                                                }+                                                              (Ident+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         520+                                                                         21+                                                                         520+                                                                         26+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 "opath"))))+                                                     (Var+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                520+                                                                27+                                                                520+                                                                32+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   520+                                                                   27+                                                                   520+                                                                   32+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      520+                                                                      27+                                                                      520+                                                                      32+                                                                , srcInfoPoints = []+                                                                }+                                                              "npath"))))+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             520+                                                             33+                                                             520+                                                             64+                                                       , srcInfoPoints = []+                                                       }+                                                     (Qual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                520+                                                                33+                                                                520+                                                                64+                                                          , srcInfoPoints = []+                                                          }+                                                        (ModuleName+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   520+                                                                   33+                                                                   520+                                                                   64+                                                             , srcInfoPoints = []+                                                             }+                                                           "Win32")+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   520+                                                                   33+                                                                   520+                                                                   64+                                                             , srcInfoPoints = []+                                                             }+                                                           "mOVEFILE_REPLACE_EXISTING"))))+                                           ]))+                                 ])))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 1 528 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 528 10 528 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 1 528 9+                , srcInfoPoints = []+                }+              "copyFile"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 13 528 42+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 528 22 528 24 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 13 528 21+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 13 528 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 13 528 21+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 25 528 42+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 528 34 528 36 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 25 528 33+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 25 528 33+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 25 528 33+                           , srcInfoPoints = []+                           }+                         "FilePath")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 37 528 42+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 37 528 39+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 37 528 39+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 37 528 39+                              , srcInfoPoints = []+                              }+                            "IO")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 40 528 42+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 528 40 528 41+                            , SrcSpan "tests/examples/Directory.hs" 528 41 528 42+                            ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 40 528 42+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 528 40 528 41+                               , SrcSpan "tests/examples/Directory.hs" 528 41 528 42+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 40 528 42+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Directory.hs" 528 40 528 41+                                  , SrcSpan "tests/examples/Directory.hs" 528 41 528 42+                                  ]+                              }))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 1 551 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 531 5 531 10 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 1 551 43+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 531 5 531 10 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 1 529 9+                   , srcInfoPoints = []+                   }+                 "copyFile")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 10 529 19+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 10 529 19+                       , srcInfoPoints = []+                       }+                     "fromFPath")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 20 529 27+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 20 529 27+                       , srcInfoPoints = []+                       }+                     "toFPath")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 28 530 73+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 529 28 529 29 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 5 530 73+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 5 530 9+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 5 530 9+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 5 530 9+                               , srcInfoPoints = []+                               }+                             "copy")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 10 530 25+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 530 10 530 11+                             , SrcSpan "tests/examples/Directory.hs" 530 11 530 24+                             , SrcSpan "tests/examples/Directory.hs" 530 24 530 25+                             ]+                         }+                       (Qual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 10 530 25+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Directory.hs" 530 10 530 11+                                , SrcSpan "tests/examples/Directory.hs" 530 11 530 24+                                , SrcSpan "tests/examples/Directory.hs" 530 24 530 25+                                ]+                            }+                          (ModuleName+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 11 530 24+                               , srcInfoPoints = []+                               }+                             "Prelude")+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 11 530 24+                               , srcInfoPoints = []+                               }+                             "catch")))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 26 530 73+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 530 26 530 27+                             , SrcSpan "tests/examples/Directory.hs" 530 72 530 73+                             ]+                         }+                       (Lambda+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 27 530 72+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Directory.hs" 530 27 530 28+                                , SrcSpan "tests/examples/Directory.hs" 530 32 530 34+                                ]+                            }+                          [ PVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 28 530 31+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 530 28 530 31+                                   , srcInfoPoints = []+                                   }+                                 "exc")+                          ]+                          (InfixApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 35 530 72+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 530 35 530 40+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 530 35 530 40+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 530 35 530 40+                                        , srcInfoPoints = []+                                        }+                                      "throw")))+                             (QVarOp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 530 41 530 42+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 530 41 530 42+                                     , srcInfoPoints = []+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 530 41 530 42+                                        , srcInfoPoints = []+                                        }+                                      "$")))+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 530 43 530 72+                                  , srcInfoPoints = []+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 530 43 530 61+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 530 43 530 57+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 530 43 530 57+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 530 43 530 57+                                              , srcInfoPoints = []+                                              }+                                            "ioeSetLocation")))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 530 58 530 61+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 530 58 530 61+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 530 58 530 61+                                              , srcInfoPoints = []+                                              }+                                            "exc"))))+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 530 62 530 72+                                     , srcInfoPoints = []+                                     }+                                   (String+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 530 62 530 72+                                        , srcInfoPoints = []+                                        }+                                      "copyFile"+                                      "copyFile"))))))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 11 551 43+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 531 11 531 11+                          , SrcSpan "tests/examples/Directory.hs" 537 11 537 11+                          , SrcSpan "tests/examples/Directory.hs" 538 11 538 11+                          , SrcSpan "tests/examples/Directory.hs" 541 11 541 11+                          , SrcSpan "tests/examples/Directory.hs" 543 11 543 11+                          , SrcSpan "tests/examples/Directory.hs" 549 11 549 11+                          , SrcSpan "tests/examples/Directory.hs" 550 11 550 11+                          , SrcSpan "tests/examples/Directory.hs" 551 11 551 11+                          , SrcSpan "tests/examples/Directory.hs" 560 1 560 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 11 536 48+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 11 531 15+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 11 531 15+                                , srcInfoPoints = []+                                }+                              "copy"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 16 536 48+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 531 16 531 17 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 18 536 48+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 531 18 531 68+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 531 18 531 61+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 531 18 531 25+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 531 18 531 25+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 531 18 531 25+                                               , srcInfoPoints = []+                                               }+                                             "bracket")))+                                    (Paren+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 531 26 531 61+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 531 26 531 27+                                             , SrcSpan "tests/examples/Directory.hs" 531 60 531 61+                                             ]+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 531 27 531 60+                                            , srcInfoPoints = []+                                            }+                                          (App+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 531 27 531 51+                                               , srcInfoPoints = []+                                               }+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 531 27 531 41+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           531+                                                           27+                                                           531+                                                           41+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              531+                                                              27+                                                              531+                                                              41+                                                        , srcInfoPoints = []+                                                        }+                                                      "openBinaryFile")))+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 531 42 531 51+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           531+                                                           42+                                                           531+                                                           51+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              531+                                                              42+                                                              531+                                                              51+                                                        , srcInfoPoints = []+                                                        }+                                                      "fromFPath"))))+                                          (Con+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 531 52 531 60+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 531 52 531 60+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           531+                                                           52+                                                           531+                                                           60+                                                     , srcInfoPoints = []+                                                     }+                                                   "ReadMode"))))))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 531 62 531 68+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 531 62 531 68+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 531 62 531 68+                                            , srcInfoPoints = []+                                            }+                                          "hClose"))))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 531 69 531 70+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 531 69 531 70+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 531 69 531 70+                                         , srcInfoPoints = []+                                         }+                                       "$")))+                              (Lambda+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 531 71 536 48+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 531 71 531 72+                                       , SrcSpan "tests/examples/Directory.hs" 531 78 531 80+                                       ]+                                   }+                                 [ PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 531 72 531 77+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 531 72 531 77+                                          , srcInfoPoints = []+                                          }+                                        "hFrom")+                                 ]+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 532 18 536 48+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 532 18 532 49+                                         , srcInfoPoints = []+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 532 18 532 40+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 532 18 532 32+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 532 18 532 32+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           532+                                                           18+                                                           532+                                                           32+                                                     , srcInfoPoints = []+                                                     }+                                                   "bracketOnError")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 532 33 532 40+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 532 33 532 40+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           532+                                                           33+                                                           532+                                                           40+                                                     , srcInfoPoints = []+                                                     }+                                                   "openTmp"))))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 532 41 532 49+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 532 41 532 49+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 532 41 532 49+                                                  , srcInfoPoints = []+                                                  }+                                                "cleanTmp"))))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 532 50 532 51+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 532 50 532 51+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 532 50 532 51+                                               , srcInfoPoints = []+                                               }+                                             "$")))+                                    (Lambda+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 532 52 536 48+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 532 52 532 53+                                             , SrcSpan "tests/examples/Directory.hs" 532 70 532 72+                                             ]+                                         }+                                       [ PTuple+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 532 53 532 69+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 532 53 532 54+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 532 62 532 63+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 532 68 532 69+                                                 ]+                                             }+                                           Boxed+                                           [ PVar+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 532 54 532 62+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          532+                                                          54+                                                          532+                                                          62+                                                    , srcInfoPoints = []+                                                    }+                                                  "tmpFPath")+                                           , PVar+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 532 64 532 68+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          532+                                                          64+                                                          532+                                                          68+                                                    , srcInfoPoints = []+                                                    }+                                                  "hTmp")+                                           ]+                                       ]+                                       (Do+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 533 18 536 48+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 533 18 533 20+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 533 21 533 21+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 534 21 534 21+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 535 21 535 21+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 536 21 536 21+                                                , SrcSpan "tests/examples/Directory.hs" 537 11 537 0+                                                ]+                                            }+                                          [ Qualifier+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 533 21 533 69+                                                , srcInfoPoints = []+                                                }+                                              (InfixApp+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 533 21 533 69+                                                   , srcInfoPoints = []+                                                   }+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            533+                                                            21+                                                            533+                                                            43+                                                      , srcInfoPoints = []+                                                      }+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               533+                                                               21+                                                               533+                                                               32+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  533+                                                                  21+                                                                  533+                                                                  32+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     533+                                                                     21+                                                                     533+                                                                     32+                                                               , srcInfoPoints = []+                                                               }+                                                             "allocaBytes")))+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               533+                                                               33+                                                               533+                                                               43+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  533+                                                                  33+                                                                  533+                                                                  43+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     533+                                                                     33+                                                                     533+                                                                     43+                                                               , srcInfoPoints = []+                                                               }+                                                             "bufferSize"))))+                                                 (QVarOp+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            533+                                                            44+                                                            533+                                                            45+                                                      , srcInfoPoints = []+                                                      }+                                                    (UnQual+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               533+                                                               44+                                                               533+                                                               45+                                                         , srcInfoPoints = []+                                                         }+                                                       (Symbol+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  533+                                                                  44+                                                                  533+                                                                  45+                                                            , srcInfoPoints = []+                                                            }+                                                          "$")))+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            533+                                                            46+                                                            533+                                                            69+                                                      , srcInfoPoints = []+                                                      }+                                                    (App+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               533+                                                               46+                                                               533+                                                               64+                                                         , srcInfoPoints = []+                                                         }+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  533+                                                                  46+                                                                  533+                                                                  58+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     533+                                                                     46+                                                                     533+                                                                     58+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        533+                                                                        46+                                                                        533+                                                                        58+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "copyContents")))+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  533+                                                                  59+                                                                  533+                                                                  64+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     533+                                                                     59+                                                                     533+                                                                     64+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        533+                                                                        59+                                                                        533+                                                                        64+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "hFrom"))))+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               533+                                                               65+                                                               533+                                                               69+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  533+                                                                  65+                                                                  533+                                                                  69+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     533+                                                                     65+                                                                     533+                                                                     69+                                                               , srcInfoPoints = []+                                                               }+                                                             "hTmp")))))+                                          , Qualifier+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 534 21 534 32+                                                , srcInfoPoints = []+                                                }+                                              (App+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 534 21 534 32+                                                   , srcInfoPoints = []+                                                   }+                                                 (Var+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            534+                                                            21+                                                            534+                                                            27+                                                      , srcInfoPoints = []+                                                      }+                                                    (UnQual+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               534+                                                               21+                                                               534+                                                               27+                                                         , srcInfoPoints = []+                                                         }+                                                       (Ident+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  534+                                                                  21+                                                                  534+                                                                  27+                                                            , srcInfoPoints = []+                                                            }+                                                          "hClose")))+                                                 (Var+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            534+                                                            28+                                                            534+                                                            32+                                                      , srcInfoPoints = []+                                                      }+                                                    (UnQual+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               534+                                                               28+                                                               534+                                                               32+                                                         , srcInfoPoints = []+                                                         }+                                                       (Ident+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  534+                                                                  28+                                                                  534+                                                                  32+                                                            , srcInfoPoints = []+                                                            }+                                                          "hTmp"))))+                                          , Qualifier+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 535 21 535 76+                                                , srcInfoPoints = []+                                                }+                                              (InfixApp+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 535 21 535 76+                                                   , srcInfoPoints = []+                                                   }+                                                 (Var+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            535+                                                            21+                                                            535+                                                            39+                                                      , srcInfoPoints = []+                                                      }+                                                    (UnQual+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               535+                                                               21+                                                               535+                                                               39+                                                         , srcInfoPoints = []+                                                         }+                                                       (Ident+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  535+                                                                  21+                                                                  535+                                                                  39+                                                            , srcInfoPoints = []+                                                            }+                                                          "ignoreIOExceptions")))+                                                 (QVarOp+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            535+                                                            40+                                                            535+                                                            41+                                                      , srcInfoPoints = []+                                                      }+                                                    (UnQual+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               535+                                                               40+                                                               535+                                                               41+                                                         , srcInfoPoints = []+                                                         }+                                                       (Symbol+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  535+                                                                  40+                                                                  535+                                                                  41+                                                            , srcInfoPoints = []+                                                            }+                                                          "$")))+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            535+                                                            42+                                                            535+                                                            76+                                                      , srcInfoPoints = []+                                                      }+                                                    (App+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               535+                                                               42+                                                               535+                                                               67+                                                         , srcInfoPoints = []+                                                         }+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  535+                                                                  42+                                                                  535+                                                                  57+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     535+                                                                     42+                                                                     535+                                                                     57+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        535+                                                                        42+                                                                        535+                                                                        57+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "copyPermissions")))+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  535+                                                                  58+                                                                  535+                                                                  67+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     535+                                                                     58+                                                                     535+                                                                     67+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        535+                                                                        58+                                                                        535+                                                                        67+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "fromFPath"))))+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               535+                                                               68+                                                               535+                                                               76+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  535+                                                                  68+                                                                  535+                                                                  76+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     535+                                                                     68+                                                                     535+                                                                     76+                                                               , srcInfoPoints = []+                                                               }+                                                             "tmpFPath")))))+                                          , Qualifier+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 536 21 536 48+                                                , srcInfoPoints = []+                                                }+                                              (App+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 536 21 536 48+                                                   , srcInfoPoints = []+                                                   }+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            536+                                                            21+                                                            536+                                                            40+                                                      , srcInfoPoints = []+                                                      }+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               536+                                                               21+                                                               536+                                                               31+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  536+                                                                  21+                                                                  536+                                                                  31+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     536+                                                                     21+                                                                     536+                                                                     31+                                                               , srcInfoPoints = []+                                                               }+                                                             "renameFile")))+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               536+                                                               32+                                                               536+                                                               40+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  536+                                                                  32+                                                                  536+                                                                  40+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     536+                                                                     32+                                                                     536+                                                                     40+                                                               , srcInfoPoints = []+                                                               }+                                                             "tmpFPath"))))+                                                 (Var+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            536+                                                            41+                                                            536+                                                            48+                                                      , srcInfoPoints = []+                                                      }+                                                    (UnQual+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               536+                                                               41+                                                               536+                                                               48+                                                         , srcInfoPoints = []+                                                         }+                                                       (Ident+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  536+                                                                  41+                                                                  536+                                                                  48+                                                            , srcInfoPoints = []+                                                            }+                                                          "toFPath"))))+                                          ]))))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 11 537 79+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 11 537 18+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 11 537 18+                                , srcInfoPoints = []+                                }+                              "openTmp"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 19 537 79+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 537 19 537 20 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 21 537 79+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 537 21 537 63+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 537 21 537 39+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 537 21 537 39+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 537 21 537 39+                                            , srcInfoPoints = []+                                            }+                                          "openBinaryTempFile")))+                                 (Paren+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 537 40 537 63+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 537 40 537 41+                                          , SrcSpan "tests/examples/Directory.hs" 537 62 537 63+                                          ]+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 537 41 537 62+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 537 41 537 54+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 537 41 537 54+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 537 41 537 54+                                                  , srcInfoPoints = []+                                                  }+                                                "takeDirectory")))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 537 55 537 62+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 537 55 537 62+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 537 55 537 62+                                                  , srcInfoPoints = []+                                                  }+                                                "toFPath"))))))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 537 64 537 79+                                   , srcInfoPoints = []+                                   }+                                 (String+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 537 64 537 79+                                      , srcInfoPoints = []+                                      }+                                    ".copyFile.tmp"+                                    ".copyFile.tmp"))))+                        Nothing+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 538 11 540 60+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 538 11 540 60+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 538 11 538 19+                                 , srcInfoPoints = []+                                 }+                               "cleanTmp")+                            [ PTuple+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 538 20 538 36+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 538 20 538 21+                                      , SrcSpan "tests/examples/Directory.hs" 538 29 538 30+                                      , SrcSpan "tests/examples/Directory.hs" 538 35 538 36+                                      ]+                                  }+                                Boxed+                                [ PVar+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 538 21 538 29+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 538 21 538 29+                                         , srcInfoPoints = []+                                         }+                                       "tmpFPath")+                                , PVar+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 538 31 538 35+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 538 31 538 35+                                         , srcInfoPoints = []+                                         }+                                       "hTmp")+                                ]+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 539 15 540 60+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 539 15 539 16 ]+                                 }+                               (Do+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 539 17 540 60+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Directory.hs" 539 17 539 19+                                        , SrcSpan "tests/examples/Directory.hs" 539 20 539 20+                                        , SrcSpan "tests/examples/Directory.hs" 540 20 540 20+                                        , SrcSpan "tests/examples/Directory.hs" 541 11 541 0+                                        ]+                                    }+                                  [ Qualifier+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 539 20 539 52+                                        , srcInfoPoints = []+                                        }+                                      (InfixApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 539 20 539 52+                                           , srcInfoPoints = []+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 539 20 539 38+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 539 20 539 38+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          539+                                                          20+                                                          539+                                                          38+                                                    , srcInfoPoints = []+                                                    }+                                                  "ignoreIOExceptions")))+                                         (QVarOp+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 539 39 539 40+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 539 39 539 40+                                                 , srcInfoPoints = []+                                                 }+                                               (Symbol+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          539+                                                          39+                                                          539+                                                          40+                                                    , srcInfoPoints = []+                                                    }+                                                  "$")))+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 539 41 539 52+                                              , srcInfoPoints = []+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 539 41 539 47+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          539+                                                          41+                                                          539+                                                          47+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             539+                                                             41+                                                             539+                                                             47+                                                       , srcInfoPoints = []+                                                       }+                                                     "hClose")))+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 539 48 539 52+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          539+                                                          48+                                                          539+                                                          52+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             539+                                                             48+                                                             539+                                                             52+                                                       , srcInfoPoints = []+                                                       }+                                                     "hTmp")))))+                                  , Qualifier+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 540 20 540 60+                                        , srcInfoPoints = []+                                        }+                                      (InfixApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 540 20 540 60+                                           , srcInfoPoints = []+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 540 20 540 38+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 540 20 540 38+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          540+                                                          20+                                                          540+                                                          38+                                                    , srcInfoPoints = []+                                                    }+                                                  "ignoreIOExceptions")))+                                         (QVarOp+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 540 39 540 40+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 540 39 540 40+                                                 , srcInfoPoints = []+                                                 }+                                               (Symbol+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          540+                                                          39+                                                          540+                                                          40+                                                    , srcInfoPoints = []+                                                    }+                                                  "$")))+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 540 41 540 60+                                              , srcInfoPoints = []+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 540 41 540 51+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          540+                                                          41+                                                          540+                                                          51+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             540+                                                             41+                                                             540+                                                             51+                                                       , srcInfoPoints = []+                                                       }+                                                     "removeFile")))+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 540 52 540 60+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          540+                                                          52+                                                          540+                                                          60+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             540+                                                             52+                                                             540+                                                             60+                                                       , srcInfoPoints = []+                                                       }+                                                     "tmpFPath")))))+                                  ]))+                            Nothing+                        ]+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 11 541 28+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 11 541 21+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 11 541 21+                                , srcInfoPoints = []+                                }+                              "bufferSize"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 22 541 28+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 541 22 541 23 ]+                             }+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 24 541 28+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 541 24 541 28+                                   , srcInfoPoints = []+                                   }+                                 1024+                                 "1024")))+                        Nothing+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 543 11 547 56+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 543 11 547 56+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 543 11 543 23+                                 , srcInfoPoints = []+                                 }+                               "copyContents")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 543 24 543 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 543 24 543 29+                                     , srcInfoPoints = []+                                     }+                                   "hFrom")+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 543 30 543 33+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 543 30 543 33+                                     , srcInfoPoints = []+                                     }+                                   "hTo")+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 543 34 543 40+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 543 34 543 40+                                     , srcInfoPoints = []+                                     }+                                   "buffer")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 543 41 547 56+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 543 41 543 42 ]+                                 }+                               (Do+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 543 43 547 56+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Directory.hs" 543 43 543 45+                                        , SrcSpan "tests/examples/Directory.hs" 544 19 544 19+                                        , SrcSpan "tests/examples/Directory.hs" 545 19 545 19+                                        , SrcSpan "tests/examples/Directory.hs" 549 11 549 0+                                        ]+                                    }+                                  [ Generator+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 544 19 544 59+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 544 25 544 27 ]+                                        }+                                      (PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 544 19 544 24+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 544 19 544 24+                                              , srcInfoPoints = []+                                              }+                                            "count"))+                                      (App+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 544 28 544 59+                                           , srcInfoPoints = []+                                           }+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 544 28 544 48+                                              , srcInfoPoints = []+                                              }+                                            (App+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 544 28 544 41+                                                 , srcInfoPoints = []+                                                 }+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          544+                                                          28+                                                          544+                                                          35+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             544+                                                             28+                                                             544+                                                             35+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                544+                                                                28+                                                                544+                                                                35+                                                          , srcInfoPoints = []+                                                          }+                                                        "hGetBuf")))+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          544+                                                          36+                                                          544+                                                          41+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             544+                                                             36+                                                             544+                                                             41+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                544+                                                                36+                                                                544+                                                                41+                                                          , srcInfoPoints = []+                                                          }+                                                        "hFrom"))))+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 544 42 544 48+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          544+                                                          42+                                                          544+                                                          48+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             544+                                                             42+                                                             544+                                                             48+                                                       , srcInfoPoints = []+                                                       }+                                                     "buffer"))))+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 544 49 544 59+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 544 49 544 59+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          544+                                                          49+                                                          544+                                                          59+                                                    , srcInfoPoints = []+                                                    }+                                                  "bufferSize"))))+                                  , Qualifier+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 545 19 547 56+                                        , srcInfoPoints = []+                                        }+                                      (InfixApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 545 19 547 56+                                           , srcInfoPoints = []+                                           }+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 545 19 545 35+                                              , srcInfoPoints = []+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 545 19 545 23+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          545+                                                          19+                                                          545+                                                          23+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             545+                                                             19+                                                             545+                                                             23+                                                       , srcInfoPoints = []+                                                       }+                                                     "when")))+                                            (Paren+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 545 24 545 35+                                                 , srcInfoPoints =+                                                     [ SrcSpan+                                                         "tests/examples/Directory.hs" 545 24 545 25+                                                     , SrcSpan+                                                         "tests/examples/Directory.hs" 545 34 545 35+                                                     ]+                                                 }+                                               (InfixApp+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          545+                                                          25+                                                          545+                                                          34+                                                    , srcInfoPoints = []+                                                    }+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             545+                                                             25+                                                             545+                                                             30+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                545+                                                                25+                                                                545+                                                                30+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   545+                                                                   25+                                                                   545+                                                                   30+                                                             , srcInfoPoints = []+                                                             }+                                                           "count")))+                                                  (QVarOp+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             545+                                                             31+                                                             545+                                                             32+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                545+                                                                31+                                                                545+                                                                32+                                                          , srcInfoPoints = []+                                                          }+                                                        (Symbol+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   545+                                                                   31+                                                                   545+                                                                   32+                                                             , srcInfoPoints = []+                                                             }+                                                           ">")))+                                                  (Lit+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             545+                                                             33+                                                             545+                                                             34+                                                       , srcInfoPoints = []+                                                       }+                                                     (Int+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                545+                                                                33+                                                                545+                                                                34+                                                          , srcInfoPoints = []+                                                          }+                                                        0+                                                        "0")))))+                                         (QVarOp+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 545 36 545 37+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 545 36 545 37+                                                 , srcInfoPoints = []+                                                 }+                                               (Symbol+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          545+                                                          36+                                                          545+                                                          37+                                                    , srcInfoPoints = []+                                                    }+                                                  "$")))+                                         (Do+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 545 38 547 56+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/Directory.hs" 545 38 545 40+                                                  , SrcSpan+                                                      "tests/examples/Directory.hs" 546 27 546 27+                                                  , SrcSpan+                                                      "tests/examples/Directory.hs" 547 27 547 27+                                                  , SrcSpan+                                                      "tests/examples/Directory.hs" 549 11 549 0+                                                  ]+                                              }+                                            [ Qualifier+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 546 27 546 51+                                                  , srcInfoPoints = []+                                                  }+                                                (App+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           546+                                                           27+                                                           546+                                                           51+                                                     , srcInfoPoints = []+                                                     }+                                                   (App+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              546+                                                              27+                                                              546+                                                              45+                                                        , srcInfoPoints = []+                                                        }+                                                      (App+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 546+                                                                 27+                                                                 546+                                                                 38+                                                           , srcInfoPoints = []+                                                           }+                                                         (Var+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    546+                                                                    27+                                                                    546+                                                                    34+                                                              , srcInfoPoints = []+                                                              }+                                                            (UnQual+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       546+                                                                       27+                                                                       546+                                                                       34+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Ident+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          546+                                                                          27+                                                                          546+                                                                          34+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  "hPutBuf")))+                                                         (Var+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    546+                                                                    35+                                                                    546+                                                                    38+                                                              , srcInfoPoints = []+                                                              }+                                                            (UnQual+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       546+                                                                       35+                                                                       546+                                                                       38+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Ident+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          546+                                                                          35+                                                                          546+                                                                          38+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  "hTo"))))+                                                      (Var+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 546+                                                                 39+                                                                 546+                                                                 45+                                                           , srcInfoPoints = []+                                                           }+                                                         (UnQual+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    546+                                                                    39+                                                                    546+                                                                    45+                                                              , srcInfoPoints = []+                                                              }+                                                            (Ident+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       546+                                                                       39+                                                                       546+                                                                       45+                                                                 , srcInfoPoints = []+                                                                 }+                                                               "buffer"))))+                                                   (Var+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              546+                                                              46+                                                              546+                                                              51+                                                        , srcInfoPoints = []+                                                        }+                                                      (UnQual+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 546+                                                                 46+                                                                 546+                                                                 51+                                                           , srcInfoPoints = []+                                                           }+                                                         (Ident+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    546+                                                                    46+                                                                    546+                                                                    51+                                                              , srcInfoPoints = []+                                                              }+                                                            "count"))))+                                            , Qualifier+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 547 27 547 56+                                                  , srcInfoPoints = []+                                                  }+                                                (App+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           547+                                                           27+                                                           547+                                                           56+                                                     , srcInfoPoints = []+                                                     }+                                                   (App+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              547+                                                              27+                                                              547+                                                              49+                                                        , srcInfoPoints = []+                                                        }+                                                      (App+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 547+                                                                 27+                                                                 547+                                                                 45+                                                           , srcInfoPoints = []+                                                           }+                                                         (Var+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    547+                                                                    27+                                                                    547+                                                                    39+                                                              , srcInfoPoints = []+                                                              }+                                                            (UnQual+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       547+                                                                       27+                                                                       547+                                                                       39+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Ident+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          547+                                                                          27+                                                                          547+                                                                          39+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  "copyContents")))+                                                         (Var+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    547+                                                                    40+                                                                    547+                                                                    45+                                                              , srcInfoPoints = []+                                                              }+                                                            (UnQual+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       547+                                                                       40+                                                                       547+                                                                       45+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Ident+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/Directory.hs"+                                                                          547+                                                                          40+                                                                          547+                                                                          45+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  "hFrom"))))+                                                      (Var+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 547+                                                                 46+                                                                 547+                                                                 49+                                                           , srcInfoPoints = []+                                                           }+                                                         (UnQual+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    547+                                                                    46+                                                                    547+                                                                    49+                                                              , srcInfoPoints = []+                                                              }+                                                            (Ident+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/Directory.hs"+                                                                       547+                                                                       46+                                                                       547+                                                                       49+                                                                 , srcInfoPoints = []+                                                                 }+                                                               "hTo"))))+                                                   (Var+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              547+                                                              50+                                                              547+                                                              56+                                                        , srcInfoPoints = []+                                                        }+                                                      (UnQual+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 547+                                                                 50+                                                                 547+                                                                 56+                                                           , srcInfoPoints = []+                                                           }+                                                         (Ident+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/Directory.hs"+                                                                    547+                                                                    50+                                                                    547+                                                                    56+                                                              , srcInfoPoints = []+                                                              }+                                                            "buffer"))))+                                            ]))+                                  ]))+                            Nothing+                        ]+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 549 11 549 64+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 549 11 549 64+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 549 11 549 29+                                 , srcInfoPoints = []+                                 }+                               "ignoreIOExceptions")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 549 30 549 32+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 549 30 549 32+                                     , srcInfoPoints = []+                                     }+                                   "io")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 549 33 549 64+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 549 33 549 34 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 549 35 549 64+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 549 35 549 37+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 549 35 549 37+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 549 35 549 37+                                             , srcInfoPoints = []+                                             }+                                           "io")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 549 38 549 45+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 549 38 549 39+                                           , SrcSpan "tests/examples/Directory.hs" 549 39 549 44+                                           , SrcSpan "tests/examples/Directory.hs" 549 44 549 45+                                           ]+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 549 38 549 45+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 549 38 549 39+                                              , SrcSpan "tests/examples/Directory.hs" 549 39 549 44+                                              , SrcSpan "tests/examples/Directory.hs" 549 44 549 45+                                              ]+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 549 39 549 44+                                             , srcInfoPoints = []+                                             }+                                           "catch")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 549 46 549 64+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 549 46 549 64+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 549 46 549 64+                                             , srcInfoPoints = []+                                             }+                                           "ioExceptionIgnorer")))))+                            Nothing+                        ]+                    , TypeSig+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 11 550 53+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 550 30 550 32 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 11 550 29+                              , srcInfoPoints = []+                              }+                            "ioExceptionIgnorer"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 33 550 53+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 550 45 550 47 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 33 550 44+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 550 33 550 44+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 550 33 550 44+                                      , srcInfoPoints = []+                                      }+                                    "IOException")))+                           (TyApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 48 550 53+                                , srcInfoPoints = []+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 550 48 550 50+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 550 48 550 50+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 550 48 550 50+                                         , srcInfoPoints = []+                                         }+                                       "IO")))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 550 51 550 53+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 550 51 550 52+                                       , SrcSpan "tests/examples/Directory.hs" 550 52 550 53+                                       ]+                                   }+                                 (Special+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 550 51 550 53+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 550 51 550 52+                                          , SrcSpan "tests/examples/Directory.hs" 550 52 550 53+                                          ]+                                      }+                                    (UnitCon+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 550 51 550 53+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 550 51 550 52+                                             , SrcSpan "tests/examples/Directory.hs" 550 52 550 53+                                             ]+                                         })))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 551 11 551 43+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 551 11 551 43+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 551 11 551 29+                                 , srcInfoPoints = []+                                 }+                               "ioExceptionIgnorer")+                            [ PWildCard+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 551 30 551 31+                                  , srcInfoPoints = []+                                  }+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 551 32 551 43+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 551 32 551 33 ]+                                 }+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 551 34 551 43+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 551 34 551 40+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 551 34 551 40+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 551 34 551 40+                                             , srcInfoPoints = []+                                             }+                                           "return")))+                                  (Con+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 551 41 551 43+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 551 41 551 42+                                           , SrcSpan "tests/examples/Directory.hs" 551 42 551 43+                                           ]+                                       }+                                     (Special+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 551 41 551 43+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 551 41 551 42+                                              , SrcSpan "tests/examples/Directory.hs" 551 42 551 43+                                              ]+                                          }+                                        (UnitCon+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 551 41 551 43+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 551 41 551 42+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 551 42 551 43+                                                 ]+                                             })))))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 1 560 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 560 18 560 20 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 1 560 17+                , srcInfoPoints = []+                }+              "canonicalizePath"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 21 560 44+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 560 30 560 32 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 21 560 29+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 21 560 29+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 21 560 29+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 33 560 44+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 33 560 35+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 33 560 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 33 560 35+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 36 560 44+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 36 560 44+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 36 560 44+                           , srcInfoPoints = []+                           }+                         "FilePath")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 1 563 31+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 1 563 31+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 1 561 17+                   , srcInfoPoints = []+                   }+                 "canonicalizePath")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 18 561 23+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 18 561 23+                       , srcInfoPoints = []+                       }+                     "fpath")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 24 563 31+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 561 24 561 25 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 5 563 31+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 562 5 562 7+                          , SrcSpan "tests/examples/Directory.hs" 562 8 562 8+                          , SrcSpan "tests/examples/Directory.hs" 563 8 563 8+                          , SrcSpan "tests/examples/Directory.hs" 568 1 568 0+                          ]+                      }+                    [ Generator+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 8 562 43+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 562 13 562 15 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 8 562 12+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 8 562 12+                                , srcInfoPoints = []+                                }+                              "path"))+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 16 562 43+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 16 562 37+                                , srcInfoPoints = []+                                }+                              (Qual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 562 16 562 37+                                   , srcInfoPoints = []+                                   }+                                 (ModuleName+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 562 16 562 37+                                      , srcInfoPoints = []+                                      }+                                    "Win32")+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 562 16 562 37+                                      , srcInfoPoints = []+                                      }+                                    "getFullPathName")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 38 562 43+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 562 38 562 43+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 562 38 562 43+                                      , srcInfoPoints = []+                                      }+                                    "fpath"))))+                    , Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 563 8 563 31+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 563 8 563 31+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 563 8 563 14+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 563 8 563 14+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 563 8 563 14+                                      , srcInfoPoints = []+                                      }+                                    "return")))+                           (Paren+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 563 15 563 31+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 563 15 563 16+                                    , SrcSpan "tests/examples/Directory.hs" 563 30 563 31+                                    ]+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 563 16 563 30+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 563 16 563 25+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 563 16 563 25+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 563 16 563 25+                                            , srcInfoPoints = []+                                            }+                                          "normalise")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 563 26 563 30+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 563 26 563 30+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 563 26 563 30+                                            , srcInfoPoints = []+                                            }+                                          "path"))))))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 1 568 58+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 568 32 568 34 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 1 568 31+                , srcInfoPoints = []+                }+              "makeRelativeToCurrentDirectory"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 35 568 58+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 568 44 568 46 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 35 568 43+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 35 568 43+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 35 568 43+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 47 568 58+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 47 568 49+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 47 568 49+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 47 568 49+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 50 568 58+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 50 568 58+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 50 568 58+                           , srcInfoPoints = []+                           }+                         "FilePath")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 1 571 32+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 1 571 32+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 1 569 31+                   , srcInfoPoints = []+                   }+                 "makeRelativeToCurrentDirectory")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 32 569 33+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 32 569 33+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 34 571 32+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 569 34 569 35 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 36 571 32+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 569 36 569 38+                          , SrcSpan "tests/examples/Directory.hs" 570 5 570 5+                          , SrcSpan "tests/examples/Directory.hs" 571 5 571 5+                          , SrcSpan "tests/examples/Directory.hs" 591 1 591 0+                          ]+                      }+                    [ Generator+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 5 570 31+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 570 9 570 11 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 5 570 8+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 5 570 8+                                , srcInfoPoints = []+                                }+                              "cur"))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 12 570 31+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 12 570 31+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 570 12 570 31+                                   , srcInfoPoints = []+                                   }+                                 "getCurrentDirectory")))+                    , Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 5 571 32+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 5 571 32+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 5 571 11+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 571 5 571 11+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 571 5 571 11+                                      , srcInfoPoints = []+                                      }+                                    "return")))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 12 571 13+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 571 12 571 13+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 571 12 571 13+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 14 571 32+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 571 14 571 30+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 571 14 571 26+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 571 14 571 26+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 571 14 571 26+                                            , srcInfoPoints = []+                                            }+                                          "makeRelative")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 571 27 571 30+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 571 27 571 30+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 571 27 571 30+                                            , srcInfoPoints = []+                                            }+                                          "cur"))))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 571 31 571 32+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 571 31 571 32+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 571 31 571 32+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 1 591 48+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 591 16 591 18 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 1 591 15+                , srcInfoPoints = []+                }+              "findExecutable"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 19 591 48+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 591 26 591 28 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 19 591 25+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 19 591 25+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 19 591 25+                        , srcInfoPoints = []+                        }+                      "String")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 29 591 48+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 29 591 31+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 29 591 31+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 29 591 31+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 32 591 48+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 591 32 591 33+                         , SrcSpan "tests/examples/Directory.hs" 591 47 591 48+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 33 591 47+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 33 591 38+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 33 591 38+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 33 591 38+                                 , srcInfoPoints = []+                                 }+                               "Maybe")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 39 591 47+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 39 591 47+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 39 591 47+                                 , srcInfoPoints = []+                                 }+                               "FilePath")))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 1 593 53+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 1 593 53+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 1 592 15+                   , srcInfoPoints = []+                   }+                 "findExecutable")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 16 592 22+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 16 592 22+                       , srcInfoPoints = []+                       }+                     "binary")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 23 593 53+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 592 23 592 24 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 53+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 34+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 27+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 19+                               , srcInfoPoints = []+                               }+                             (Qual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 19+                                  , srcInfoPoints = []+                                  }+                                (ModuleName+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 593 3 593 19+                                     , srcInfoPoints = []+                                     }+                                   "Win32")+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 593 3 593 19+                                     , srcInfoPoints = []+                                     }+                                   "searchPath")))+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 20 593 27+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 593 20 593 27+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 593 20 593 27+                                     , srcInfoPoints = []+                                     }+                                   "Nothing"))))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 28 593 34+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 28 593 34+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 593 28 593 34+                                  , srcInfoPoints = []+                                  }+                                "binary"))))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 35 593 53+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 593 35 593 36+                             , SrcSpan "tests/examples/Directory.hs" 593 52 593 53+                             ]+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 36 593 52+                            , srcInfoPoints = []+                            }+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 36 593 39+                               , srcInfoPoints = []+                               }+                             (Char+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 593 36 593 39+                                  , srcInfoPoints = []+                                  }+                                '.'+                                "."))+                          (QConOp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 39 593 40+                               , srcInfoPoints = []+                               }+                             (Special+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 593 39 593 40+                                  , srcInfoPoints = []+                                  }+                                (Cons+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 593 39 593 40+                                     , srcInfoPoints = []+                                     })))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 40 593 52+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 593 40 593 52+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 593 40 593 52+                                     , srcInfoPoints = []+                                     }+                                   "exeExtension")))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 1 627 50+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 627 22 627 24 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 1 627 21+                , srcInfoPoints = []+                }+              "getDirectoryContents"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 25 627 50+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 627 34 627 36 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 25 627 33+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 25 627 33+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 25 627 33+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 37 627 50+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 37 627 39+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 37 627 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 37 627 39+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 40 627 50+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 627 40 627 41+                         , SrcSpan "tests/examples/Directory.hs" 627 49 627 50+                         ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 41 627 49+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 41 627 49+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 41 627 49+                              , srcInfoPoints = []+                              }+                            "FilePath"))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 1 644 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 635 3 635 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 1 644 37+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Directory.hs" 635 3 635 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 1 628 21+                   , srcInfoPoints = []+                   }+                 "getDirectoryContents")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 22 628 26+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 22 628 26+                       , srcInfoPoints = []+                       }+                     "path")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 27 634 35+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 628 27 628 28 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 634 35+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 630 60+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 629 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 629 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 629 16+                                  , srcInfoPoints = []+                                  }+                                "modifyIOError")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 17 630 60+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Directory.hs" 629 17 629 18+                                , SrcSpan "tests/examples/Directory.hs" 630 59 630 60+                                ]+                            }+                          (InfixApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 18 630 59+                               , srcInfoPoints = []+                               }+                             (RightSection+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 629 18 629 41+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 629 18 629 19+                                      , SrcSpan "tests/examples/Directory.hs" 629 40 629 41+                                      ]+                                  }+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 629 19 629 35+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/Directory.hs" 629 19 629 20+                                         , SrcSpan "tests/examples/Directory.hs" 629 20 629 34+                                         , SrcSpan "tests/examples/Directory.hs" 629 34 629 35+                                         ]+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 629 19 629 35+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 629 19 629 20+                                            , SrcSpan "tests/examples/Directory.hs" 629 20 629 34+                                            , SrcSpan "tests/examples/Directory.hs" 629 34 629 35+                                            ]+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 629 20 629 34+                                           , srcInfoPoints = []+                                           }+                                         "ioeSetFileName")))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 629 36 629 40+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 629 36 629 40+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 629 36 629 40+                                           , srcInfoPoints = []+                                           }+                                         "path"))))+                             (QVarOp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 629 42 629 43+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 629 42 629 43+                                     , srcInfoPoints = []+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 629 42 629 43+                                        , srcInfoPoints = []+                                        }+                                      ".")))+                             (RightSection+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 630 18 630 59+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 630 18 630 19+                                      , SrcSpan "tests/examples/Directory.hs" 630 58 630 59+                                      ]+                                  }+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 630 19 630 35+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/Directory.hs" 630 19 630 20+                                         , SrcSpan "tests/examples/Directory.hs" 630 20 630 34+                                         , SrcSpan "tests/examples/Directory.hs" 630 34 630 35+                                         ]+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 630 19 630 35+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 630 19 630 20+                                            , SrcSpan "tests/examples/Directory.hs" 630 20 630 34+                                            , SrcSpan "tests/examples/Directory.hs" 630 34 630 35+                                            ]+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 630 20 630 34+                                           , srcInfoPoints = []+                                           }+                                         "ioeSetLocation")))+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 630 36 630 58+                                     , srcInfoPoints = []+                                     }+                                   (String+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 630 36 630 58+                                        , srcInfoPoints = []+                                        }+                                      "getDirectoryContents"+                                      "getDirectoryContents"))))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 630 61 630 62+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 630 61 630 62+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 630 61 630 62+                               , srcInfoPoints = []+                               }+                             "$")))+                    (Do+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 630 63 634 35+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 630 63 630 65+                             , SrcSpan "tests/examples/Directory.hs" 631 3 631 3+                             , SrcSpan "tests/examples/Directory.hs" 635 3 635 3+                             , SrcSpan "tests/examples/Directory.hs" 635 3 635 3+                             ]+                         }+                       [ Qualifier+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 631 3 634 35+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 631 3 634 35+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 631 3 633 35+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 631 3 632 42+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 631 3 631 10+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 631 3 631 10+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 631 3 631 10+                                               , srcInfoPoints = []+                                               }+                                             "bracket")))+                                    (Paren+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 632 6 632 42+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 632 6 632 7+                                             , SrcSpan "tests/examples/Directory.hs" 632 41 632 42+                                             ]+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 632 7 632 41+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 632 7 632 26+                                               , srcInfoPoints = []+                                               }+                                             (Qual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 632 7 632 26+                                                  , srcInfoPoints = []+                                                  }+                                                (ModuleName+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           632+                                                           7+                                                           632+                                                           26+                                                     , srcInfoPoints = []+                                                     }+                                                   "Win32")+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           632+                                                           7+                                                           632+                                                           26+                                                     , srcInfoPoints = []+                                                     }+                                                   "findFirstFile")))+                                          (Paren+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 632 27 632 41+                                               , srcInfoPoints =+                                                   [ SrcSpan+                                                       "tests/examples/Directory.hs" 632 27 632 28+                                                   , SrcSpan+                                                       "tests/examples/Directory.hs" 632 40 632 41+                                                   ]+                                               }+                                             (InfixApp+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 632 28 632 40+                                                  , srcInfoPoints = []+                                                  }+                                                (Var+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           632+                                                           28+                                                           632+                                                           32+                                                     , srcInfoPoints = []+                                                     }+                                                   (UnQual+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              632+                                                              28+                                                              632+                                                              32+                                                        , srcInfoPoints = []+                                                        }+                                                      (Ident+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 632+                                                                 28+                                                                 632+                                                                 32+                                                           , srcInfoPoints = []+                                                           }+                                                         "path")))+                                                (QVarOp+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           632+                                                           33+                                                           632+                                                           36+                                                     , srcInfoPoints = []+                                                     }+                                                   (UnQual+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              632+                                                              33+                                                              632+                                                              36+                                                        , srcInfoPoints = []+                                                        }+                                                      (Symbol+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 632+                                                                 33+                                                                 632+                                                                 36+                                                           , srcInfoPoints = []+                                                           }+                                                         "</>")))+                                                (Lit+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           632+                                                           37+                                                           632+                                                           40+                                                     , srcInfoPoints = []+                                                     }+                                                   (String+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              632+                                                              37+                                                              632+                                                              40+                                                        , srcInfoPoints = []+                                                        }+                                                      "*"+                                                      "*")))))))+                                 (Paren+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 633 6 633 35+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 633 6 633 7+                                          , SrcSpan "tests/examples/Directory.hs" 633 34 633 35+                                          ]+                                      }+                                    (Lambda+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 633 7 633 34+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 633 7 633 8+                                             , SrcSpan "tests/examples/Directory.hs" 633 14 633 16+                                             ]+                                         }+                                       [ PTuple+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 633 8 633 13+                                             , srcInfoPoints =+                                                 [ SrcSpan "tests/examples/Directory.hs" 633 8 633 9+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 633 10 633 11+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 633 12 633 13+                                                 ]+                                             }+                                           Boxed+                                           [ PVar+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 633 9 633 10+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 633 9 633 10+                                                    , srcInfoPoints = []+                                                    }+                                                  "h")+                                           , PWildCard+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 633 11 633 12+                                                 , srcInfoPoints = []+                                                 }+                                           ]+                                       ]+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 633 17 633 34+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 633 17 633 32+                                               , srcInfoPoints = []+                                               }+                                             (Qual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 633 17 633 32+                                                  , srcInfoPoints = []+                                                  }+                                                (ModuleName+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           633+                                                           17+                                                           633+                                                           32+                                                     , srcInfoPoints = []+                                                     }+                                                   "Win32")+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           633+                                                           17+                                                           633+                                                           32+                                                     , srcInfoPoints = []+                                                     }+                                                   "findClose")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 633 33 633 34+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 633 33 633 34+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           633+                                                           33+                                                           633+                                                           34+                                                     , srcInfoPoints = []+                                                     }+                                                   "h")))))))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 634 6 634 35+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 634 6 634 7+                                       , SrcSpan "tests/examples/Directory.hs" 634 34 634 35+                                       ]+                                   }+                                 (Lambda+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 634 7 634 34+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 634 7 634 8+                                          , SrcSpan "tests/examples/Directory.hs" 634 17 634 19+                                          ]+                                      }+                                    [ PTuple+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 634 8 634 16+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 634 8 634 9+                                              , SrcSpan "tests/examples/Directory.hs" 634 10 634 11+                                              , SrcSpan "tests/examples/Directory.hs" 634 15 634 16+                                              ]+                                          }+                                        Boxed+                                        [ PVar+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Directory.hs" 634 9 634 10+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 634 9 634 10+                                                 , srcInfoPoints = []+                                                 }+                                               "h")+                                        , PVar+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 634 11 634 15+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 634 11 634 15+                                                 , srcInfoPoints = []+                                                 }+                                               "fdat")+                                        ]+                                    ]+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 634 20 634 34+                                         , srcInfoPoints = []+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 634 20 634 31+                                            , srcInfoPoints = []+                                            }+                                          (App+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 634 20 634 26+                                               , srcInfoPoints = []+                                               }+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 634 20 634 24+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           634+                                                           20+                                                           634+                                                           24+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              634+                                                              20+                                                              634+                                                              24+                                                        , srcInfoPoints = []+                                                        }+                                                      "loop")))+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 634 25 634 26+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           634+                                                           25+                                                           634+                                                           26+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              634+                                                              25+                                                              634+                                                              26+                                                        , srcInfoPoints = []+                                                        }+                                                      "h"))))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 634 27 634 31+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 634 27 634 31+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           634+                                                           27+                                                           634+                                                           31+                                                     , srcInfoPoints = []+                                                     }+                                                   "fdat"))))+                                       (List+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 634 32 634 34+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 634 32 634 33+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 634 33 634 34+                                                ]+                                            }+                                          [])))))+                       ])))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 5 644 37+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 638 5 638 5+                          , SrcSpan "tests/examples/Directory.hs" 639 5 639 5+                          , SrcSpan "tests/examples/Directory.hs" 672 1 672 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 5 638 74+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 638 10 638 12 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 5 638 9+                              , srcInfoPoints = []+                              }+                            "loop"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 13 638 74+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 638 26 638 28 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 13 638 25+                                , srcInfoPoints = []+                                }+                              (Qual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 638 13 638 25+                                   , srcInfoPoints = []+                                   }+                                 (ModuleName+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 638 13 638 25+                                      , srcInfoPoints = []+                                      }+                                    "Win32")+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 638 13 638 25+                                      , srcInfoPoints = []+                                      }+                                    "HANDLE")))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 29 638 74+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 638 44 638 46 ]+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 638 29 638 43+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 638 29 638 43+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 638 29 638 43+                                         , srcInfoPoints = []+                                         }+                                       "Win32")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 638 29 638 43+                                         , srcInfoPoints = []+                                         }+                                       "FindData")))+                              (TyFun+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 638 47 638 74+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 638 58 638 60 ]+                                   }+                                 (TyList+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 638 47 638 57+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 638 47 638 48+                                          , SrcSpan "tests/examples/Directory.hs" 638 56 638 57+                                          ]+                                      }+                                    (TyCon+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 638 48 638 56+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 638 48 638 56+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 638 48 638 56+                                               , srcInfoPoints = []+                                               }+                                             "FilePath"))))+                                 (TyApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 638 61 638 74+                                      , srcInfoPoints = []+                                      }+                                    (TyCon+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 638 61 638 63+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 638 61 638 63+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 638 61 638 63+                                               , srcInfoPoints = []+                                               }+                                             "IO")))+                                    (TyList+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 638 64 638 74+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 638 64 638 65+                                             , SrcSpan "tests/examples/Directory.hs" 638 73 638 74+                                             ]+                                         }+                                       (TyCon+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 638 65 638 73+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 638 65 638 73+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 638 65 638 73+                                                  , srcInfoPoints = []+                                                  }+                                                "FilePath"))))))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 639 5 644 37+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 639 5 644 37+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 639 5 639 9+                                 , srcInfoPoints = []+                                 }+                               "loop")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 639 10 639 11+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 639 10 639 11+                                     , srcInfoPoints = []+                                     }+                                   "h")+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 639 12 639 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 639 12 639 16+                                     , srcInfoPoints = []+                                     }+                                   "fdat")+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 639 17 639 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 639 17 639 20+                                     , srcInfoPoints = []+                                     }+                                   "acc")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 639 21 644 37+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 639 21 639 22 ]+                                 }+                               (Do+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 639 23 644 37+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Directory.hs" 639 23 639 25+                                        , SrcSpan "tests/examples/Directory.hs" 640 8 640 8+                                        , SrcSpan "tests/examples/Directory.hs" 641 8 641 8+                                        , SrcSpan "tests/examples/Directory.hs" 642 8 642 8+                                        , SrcSpan "tests/examples/Directory.hs" 672 1 672 0+                                        ]+                                    }+                                  [ Generator+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 640 8 640 50+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 640 17 640 19 ]+                                        }+                                      (PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 640 8 640 16+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Directory.hs" 640 8 640 16+                                              , srcInfoPoints = []+                                              }+                                            "filename"))+                                      (App+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 640 20 640 50+                                           , srcInfoPoints = []+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 640 20 640 45+                                              , srcInfoPoints = []+                                              }+                                            (Qual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 640 20 640 45+                                                 , srcInfoPoints = []+                                                 }+                                               (ModuleName+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          640+                                                          20+                                                          640+                                                          45+                                                    , srcInfoPoints = []+                                                    }+                                                  "Win32")+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          640+                                                          20+                                                          640+                                                          45+                                                    , srcInfoPoints = []+                                                    }+                                                  "getFindDataFileName")))+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 640 46 640 50+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 640 46 640 50+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          640+                                                          46+                                                          640+                                                          50+                                                    , srcInfoPoints = []+                                                    }+                                                  "fdat"))))+                                  , Generator+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 641 8 641 41+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 641 13 641 15 ]+                                        }+                                      (PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 641 8 641 12+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Directory.hs" 641 8 641 12+                                              , srcInfoPoints = []+                                              }+                                            "more"))+                                      (App+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 641 16 641 41+                                           , srcInfoPoints = []+                                           }+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 641 16 641 36+                                              , srcInfoPoints = []+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 641 16 641 34+                                                 , srcInfoPoints = []+                                                 }+                                               (Qual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          641+                                                          16+                                                          641+                                                          34+                                                    , srcInfoPoints = []+                                                    }+                                                  (ModuleName+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             641+                                                             16+                                                             641+                                                             34+                                                       , srcInfoPoints = []+                                                       }+                                                     "Win32")+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             641+                                                             16+                                                             641+                                                             34+                                                       , srcInfoPoints = []+                                                       }+                                                     "findNextFile")))+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 641 35 641 36+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          641+                                                          35+                                                          641+                                                          36+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             641+                                                             35+                                                             641+                                                             36+                                                       , srcInfoPoints = []+                                                       }+                                                     "h"))))+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 641 37 641 41+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 641 37 641 41+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          641+                                                          37+                                                          641+                                                          41+                                                    , srcInfoPoints = []+                                                    }+                                                  "fdat"))))+                                  , Qualifier+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 642 8 644 37+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 642 8 642 10+                                            , SrcSpan "tests/examples/Directory.hs" 643 11 643 15+                                            , SrcSpan "tests/examples/Directory.hs" 644 11 644 15+                                            ]+                                        }+                                      (If+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 642 8 644 37+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/Directory.hs" 642 8 642 10+                                               , SrcSpan "tests/examples/Directory.hs" 643 11 643 15+                                               , SrcSpan "tests/examples/Directory.hs" 644 11 644 15+                                               ]+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 642 11 642 15+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 642 11 642 15+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          642+                                                          11+                                                          642+                                                          15+                                                    , srcInfoPoints = []+                                                    }+                                                  "more")))+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 643 16 643 42+                                              , srcInfoPoints = []+                                              }+                                            (App+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 643 16 643 27+                                                 , srcInfoPoints = []+                                                 }+                                               (App+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          643+                                                          16+                                                          643+                                                          22+                                                    , srcInfoPoints = []+                                                    }+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             643+                                                             16+                                                             643+                                                             20+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                643+                                                                16+                                                                643+                                                                20+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   643+                                                                   16+                                                                   643+                                                                   20+                                                             , srcInfoPoints = []+                                                             }+                                                           "loop")))+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             643+                                                             21+                                                             643+                                                             22+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                643+                                                                21+                                                                643+                                                                22+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   643+                                                                   21+                                                                   643+                                                                   22+                                                             , srcInfoPoints = []+                                                             }+                                                           "h"))))+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          643+                                                          23+                                                          643+                                                          27+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             643+                                                             23+                                                             643+                                                             27+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                643+                                                                23+                                                                643+                                                                27+                                                          , srcInfoPoints = []+                                                          }+                                                        "fdat"))))+                                            (Paren+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 643 28 643 42+                                                 , srcInfoPoints =+                                                     [ SrcSpan+                                                         "tests/examples/Directory.hs" 643 28 643 29+                                                     , SrcSpan+                                                         "tests/examples/Directory.hs" 643 41 643 42+                                                     ]+                                                 }+                                               (InfixApp+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          643+                                                          29+                                                          643+                                                          41+                                                    , srcInfoPoints = []+                                                    }+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             643+                                                             29+                                                             643+                                                             37+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                643+                                                                29+                                                                643+                                                                37+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   643+                                                                   29+                                                                   643+                                                                   37+                                                             , srcInfoPoints = []+                                                             }+                                                           "filename")))+                                                  (QConOp+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             643+                                                             37+                                                             643+                                                             38+                                                       , srcInfoPoints = []+                                                       }+                                                     (Special+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                643+                                                                37+                                                                643+                                                                38+                                                          , srcInfoPoints = []+                                                          }+                                                        (Cons+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   643+                                                                   37+                                                                   643+                                                                   38+                                                             , srcInfoPoints = []+                                                             })))+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             643+                                                             38+                                                             643+                                                             41+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                643+                                                                38+                                                                643+                                                                41+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   643+                                                                   38+                                                                   643+                                                                   41+                                                             , srcInfoPoints = []+                                                             }+                                                           "acc"))))))+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 644 16 644 37+                                              , srcInfoPoints = []+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 644 16 644 22+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          644+                                                          16+                                                          644+                                                          22+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             644+                                                             16+                                                             644+                                                             22+                                                       , srcInfoPoints = []+                                                       }+                                                     "return")))+                                            (Paren+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 644 23 644 37+                                                 , srcInfoPoints =+                                                     [ SrcSpan+                                                         "tests/examples/Directory.hs" 644 23 644 24+                                                     , SrcSpan+                                                         "tests/examples/Directory.hs" 644 36 644 37+                                                     ]+                                                 }+                                               (InfixApp+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          644+                                                          24+                                                          644+                                                          36+                                                    , srcInfoPoints = []+                                                    }+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             644+                                                             24+                                                             644+                                                             32+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                644+                                                                24+                                                                644+                                                                32+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   644+                                                                   24+                                                                   644+                                                                   32+                                                             , srcInfoPoints = []+                                                             }+                                                           "filename")))+                                                  (QConOp+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             644+                                                             32+                                                             644+                                                             33+                                                       , srcInfoPoints = []+                                                       }+                                                     (Special+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                644+                                                                32+                                                                644+                                                                33+                                                          , srcInfoPoints = []+                                                          }+                                                        (Cons+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   644+                                                                   32+                                                                   644+                                                                   33+                                                             , srcInfoPoints = []+                                                             })))+                                                  (Var+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             644+                                                             33+                                                             644+                                                             36+                                                       , srcInfoPoints = []+                                                       }+                                                     (UnQual+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                644+                                                                33+                                                                644+                                                                36+                                                          , srcInfoPoints = []+                                                          }+                                                        (Ident+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   644+                                                                   33+                                                                   644+                                                                   36+                                                             , srcInfoPoints = []+                                                             }+                                                           "acc")))))))+                                  ]))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 1 672 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 672 21 672 23 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 1 672 20+                , srcInfoPoints = []+                }+              "getCurrentDirectory"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 24 672 35+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 24 672 26+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 24 672 26+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 24 672 26+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 27 672 35+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 27 672 35+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 27 672 35+                        , srcInfoPoints = []+                        }+                      "FilePath"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 1 674 28+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 1 673 20+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 1 673 20+                  , srcInfoPoints = []+                  }+                "getCurrentDirectory"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 21 674 28+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 673 21 673 22 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 23 674 28+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 673 23 673 25+                      , SrcSpan "tests/examples/Directory.hs" 674 3 674 3+                      , SrcSpan "tests/examples/Directory.hs" 708 1 708 0+                      ]+                  }+                [ Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+                         , srcInfoPoints = []+                         }+                       (Qual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+                            , srcInfoPoints = []+                            }+                          (ModuleName+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+                               , srcInfoPoints = []+                               }+                             "Win32")+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+                               , srcInfoPoints = []+                               }+                             "getCurrentDirectory")))+                ]))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 1 708 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 708 21 708 23 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 1 708 20+                , srcInfoPoints = []+                }+              "setCurrentDirectory"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 24 708 41+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 708 33 708 35 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 24 708 32+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 24 708 32+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 24 708 32+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 36 708 41+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 36 708 38+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 36 708 38+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 36 708 38+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 39 708 41+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 708 39 708 40+                         , SrcSpan "tests/examples/Directory.hs" 708 40 708 41+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 39 708 41+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 708 39 708 40+                            , SrcSpan "tests/examples/Directory.hs" 708 40 708 41+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 39 708 41+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 708 39 708 40+                               , SrcSpan "tests/examples/Directory.hs" 708 40 708 41+                               ]+                           })))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 1 710 33+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 1 710 33+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 1 709 20+                   , srcInfoPoints = []+                   }+                 "setCurrentDirectory")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 21 709 25+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 21 709 25+                       , srcInfoPoints = []+                       }+                     "path")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 26 710 33+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 709 26 709 27 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 33+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 28+                         , srcInfoPoints = []+                         }+                       (Qual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 28+                            , srcInfoPoints = []+                            }+                          (ModuleName+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 28+                               , srcInfoPoints = []+                               }+                             "Win32")+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 28+                               , srcInfoPoints = []+                               }+                             "setCurrentDirectory")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 29 710 33+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 29 710 33+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 29 710 33+                               , srcInfoPoints = []+                               }+                             "path")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 1 716 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 716 20 716 22 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 1 716 19+                , srcInfoPoints = []+                }+              "doesDirectoryExist"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 23 716 42+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 716 32 716 34 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 23 716 31+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 23 716 31+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 23 716 31+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 35 716 42+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 35 716 37+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 35 716 37+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 35 716 37+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 38 716 42+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 38 716 42+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 38 716 42+                           , srcInfoPoints = []+                           }+                         "Bool")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 1 719 61+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 1 719 61+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 1 717 19+                   , srcInfoPoints = []+                   }+                 "doesDirectoryExist")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 20 717 24+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 20 717 24+                       , srcInfoPoints = []+                       }+                     "name")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 25 719 61+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 717 25 717 26 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 4 719 61+                      , srcInfoPoints = []+                      }+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 4 718 70+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 718 4 718 5+                             , SrcSpan "tests/examples/Directory.hs" 718 69 718 70+                             ]+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 5 718 69+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 5 718 45+                               , srcInfoPoints = []+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 5 718 40+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 718 5 718 19+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 718 5 718 19+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 718 5 718 19+                                           , srcInfoPoints = []+                                           }+                                         "withFileStatus")))+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 718 20 718 40+                                     , srcInfoPoints = []+                                     }+                                   (String+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 718 20 718 40+                                        , srcInfoPoints = []+                                        }+                                      "doesDirectoryExist"+                                      "doesDirectoryExist")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 718 41 718 45+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 718 41 718 45+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 718 41 718 45+                                        , srcInfoPoints = []+                                        }+                                      "name"))))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 46 718 47+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 718 46 718 47+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 718 46 718 47+                                     , srcInfoPoints = []+                                     }+                                   "$")))+                          (Lambda+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 48 718 69+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Directory.hs" 718 48 718 49+                                   , SrcSpan "tests/examples/Directory.hs" 718 52 718 54+                                   ]+                               }+                             [ PVar+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 718 49 718 51+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 718 49 718 51+                                      , srcInfoPoints = []+                                      }+                                    "st")+                             ]+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 718 55 718 69+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 718 55 718 66+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 718 55 718 66+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 718 55 718 66+                                           , srcInfoPoints = []+                                           }+                                         "isDirectory")))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 718 67 718 69+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 718 67 718 69+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 718 67 718 69+                                           , srcInfoPoints = []+                                           }+                                         "st")))))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 4 719 11+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 719 4 719 5+                             , SrcSpan "tests/examples/Directory.hs" 719 5 719 10+                             , SrcSpan "tests/examples/Directory.hs" 719 10 719 11+                             ]+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 4 719 11+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Directory.hs" 719 4 719 5+                                , SrcSpan "tests/examples/Directory.hs" 719 5 719 10+                                , SrcSpan "tests/examples/Directory.hs" 719 10 719 11+                                ]+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 5 719 10+                               , srcInfoPoints = []+                               }+                             "catch")))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 12 719 61+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 719 12 719 13+                             , SrcSpan "tests/examples/Directory.hs" 719 60 719 61+                             ]+                         }+                       (ExpTypeSig+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 13 719 60+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Directory.hs" 719 35 719 37 ]+                            }+                          (Paren+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 13 719 34+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Directory.hs" 719 13 719 14+                                   , SrcSpan "tests/examples/Directory.hs" 719 33 719 34+                                   ]+                               }+                             (Lambda+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 719 14 719 33+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 719 14 719 15+                                      , SrcSpan "tests/examples/Directory.hs" 719 18 719 20+                                      ]+                                  }+                                [ PWildCard+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 719 16 719 17+                                      , srcInfoPoints = []+                                      }+                                ]+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 719 21 719 33+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 719 21 719 27+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 719 21 719 27+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 719 21 719 27+                                              , srcInfoPoints = []+                                              }+                                            "return")))+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 719 28 719 33+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 719 28 719 33+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 719 28 719 33+                                              , srcInfoPoints = []+                                              }+                                            "False"))))))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 38 719 60+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Directory.hs" 719 50 719 52 ]+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 719 38 719 49+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 719 38 719 49+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 719 38 719 49+                                        , srcInfoPoints = []+                                        }+                                      "IOException")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 719 53 719 60+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 719 53 719 55+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 719 53 719 55+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 719 53 719 55+                                           , srcInfoPoints = []+                                           }+                                         "IO")))+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 719 56 719 60+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 719 56 719 60+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 719 56 719 60+                                           , srcInfoPoints = []+                                           }+                                         "Bool")))))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 1 725 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 725 15 725 17 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 1 725 14+                , srcInfoPoints = []+                }+              "doesFileExist"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 18 725 37+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 725 27 725 29 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 18 725 26+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 18 725 26+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 18 725 26+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 30 725 37+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 30 725 32+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 30 725 32+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 30 725 32+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 33 725 37+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 33 725 37+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 33 725 37+                           , srcInfoPoints = []+                           }+                         "Bool")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 1 728 61+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 1 728 61+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 1 726 14+                   , srcInfoPoints = []+                   }+                 "doesFileExist")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 15 726 19+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 15 726 19+                       , srcInfoPoints = []+                       }+                     "name")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 20 728 61+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 726 20 726 21 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 4 728 61+                      , srcInfoPoints = []+                      }+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 4 727 89+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 727 4 727 5+                             , SrcSpan "tests/examples/Directory.hs" 727 88 727 89+                             ]+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 5 727 88+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 5 727 40+                               , srcInfoPoints = []+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 5 727 35+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 727 5 727 19+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 727 5 727 19+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 727 5 727 19+                                           , srcInfoPoints = []+                                           }+                                         "withFileStatus")))+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 727 20 727 35+                                     , srcInfoPoints = []+                                     }+                                   (String+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 727 20 727 35+                                        , srcInfoPoints = []+                                        }+                                      "doesFileExist"+                                      "doesFileExist")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 727 36 727 40+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 727 36 727 40+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 727 36 727 40+                                        , srcInfoPoints = []+                                        }+                                      "name"))))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 41 727 42+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 727 41 727 42+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 727 41 727 42+                                     , srcInfoPoints = []+                                     }+                                   "$")))+                          (Lambda+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 43 727 88+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Directory.hs" 727 43 727 44+                                   , SrcSpan "tests/examples/Directory.hs" 727 47 727 49+                                   ]+                               }+                             [ PVar+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 727 44 727 46+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 727 44 727 46+                                      , srcInfoPoints = []+                                      }+                                    "st")+                             ]+                             (Do+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 727 50 727 88+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 727 50 727 52+                                      , SrcSpan "tests/examples/Directory.hs" 727 53 727 53+                                      , SrcSpan "tests/examples/Directory.hs" 727 72 727 73+                                      , SrcSpan "tests/examples/Directory.hs" 727 88 727 88+                                      ]+                                  }+                                [ Generator+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 727 53 727 72+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 727 55 727 57 ]+                                      }+                                    (PVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 727 53 727 54+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 727 53 727 54+                                            , srcInfoPoints = []+                                            }+                                          "b"))+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 727 58 727 72+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 727 58 727 69+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 727 58 727 69+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 727 58 727 69+                                                  , srcInfoPoints = []+                                                  }+                                                "isDirectory")))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 727 70 727 72+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 727 70 727 72+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 727 70 727 72+                                                  , srcInfoPoints = []+                                                  }+                                                "st"))))+                                , Qualifier+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 727 74 727 88+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 727 74 727 88+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 727 74 727 80+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 727 74 727 80+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 727 74 727 80+                                                  , srcInfoPoints = []+                                                  }+                                                "return")))+                                       (Paren+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 727 81 727 88+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 727 81 727 82+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 727 87 727 88+                                                ]+                                            }+                                          (App+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 727 82 727 87+                                               , srcInfoPoints = []+                                               }+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 727 82 727 85+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           727+                                                           82+                                                           727+                                                           85+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              727+                                                              82+                                                              727+                                                              85+                                                        , srcInfoPoints = []+                                                        }+                                                      "not")))+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 727 86 727 87+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           727+                                                           86+                                                           727+                                                           87+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              727+                                                              86+                                                              727+                                                              87+                                                        , srcInfoPoints = []+                                                        }+                                                      "b"))))))+                                ]))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 4 728 11+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 728 4 728 5+                             , SrcSpan "tests/examples/Directory.hs" 728 5 728 10+                             , SrcSpan "tests/examples/Directory.hs" 728 10 728 11+                             ]+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 4 728 11+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Directory.hs" 728 4 728 5+                                , SrcSpan "tests/examples/Directory.hs" 728 5 728 10+                                , SrcSpan "tests/examples/Directory.hs" 728 10 728 11+                                ]+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 5 728 10+                               , srcInfoPoints = []+                               }+                             "catch")))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 12 728 61+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 728 12 728 13+                             , SrcSpan "tests/examples/Directory.hs" 728 60 728 61+                             ]+                         }+                       (ExpTypeSig+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 13 728 60+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Directory.hs" 728 35 728 37 ]+                            }+                          (Paren+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 13 728 34+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Directory.hs" 728 13 728 14+                                   , SrcSpan "tests/examples/Directory.hs" 728 33 728 34+                                   ]+                               }+                             (Lambda+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 728 14 728 33+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 728 14 728 15+                                      , SrcSpan "tests/examples/Directory.hs" 728 18 728 20+                                      ]+                                  }+                                [ PWildCard+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 728 16 728 17+                                      , srcInfoPoints = []+                                      }+                                ]+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 728 21 728 33+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 728 21 728 27+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 728 21 728 27+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 728 21 728 27+                                              , srcInfoPoints = []+                                              }+                                            "return")))+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 728 28 728 33+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 728 28 728 33+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 728 28 728 33+                                              , srcInfoPoints = []+                                              }+                                            "False"))))))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 38 728 60+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Directory.hs" 728 50 728 52 ]+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 728 38 728 49+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 728 38 728 49+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 728 38 728 49+                                        , srcInfoPoints = []+                                        }+                                      "IOException")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 728 53 728 60+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 728 53 728 55+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 728 53 728 55+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 728 53 728 55+                                           , srcInfoPoints = []+                                           }+                                         "IO")))+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 728 56 728 60+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 728 56 728 60+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 728 56 728 60+                                           , srcInfoPoints = []+                                           }+                                         "Bool")))))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 1 742 48+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 742 21 742 23 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 1 742 20+                , srcInfoPoints = []+                }+              "getModificationTime"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 24 742 48+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 742 33 742 35 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 24 742 32+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 24 742 32+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 24 742 32+                        , srcInfoPoints = []+                        }+                      "FilePath")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 36 742 48+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 36 742 38+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 36 742 38+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 36 742 38+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 39 742 48+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 39 742 48+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 39 742 48+                           , srcInfoPoints = []+                           }+                         "ClockTime")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 1 746 21+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 1 746 21+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 1 743 20+                   , srcInfoPoints = []+                   }+                 "getModificationTime")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 21 743 25+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 21 743 25+                       , srcInfoPoints = []+                       }+                     "name")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 26 746 21+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 743 26 743 27 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 28 746 21+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 743 28 743 30+                          , SrcSpan "tests/examples/Directory.hs" 745 2 745 2+                          , SrcSpan "tests/examples/Directory.hs" 749 1 749 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 2 746 21+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 2 746 21+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 2 745 43+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 745 2 745 38+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 745 2 745 16+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 745 2 745 16+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 745 2 745 16+                                            , srcInfoPoints = []+                                            }+                                          "withFileStatus")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 745 17 745 38+                                      , srcInfoPoints = []+                                      }+                                    (String+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 745 17 745 38+                                         , srcInfoPoints = []+                                         }+                                       "getModificationTime"+                                       "getModificationTime")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 745 39 745 43+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 745 39 745 43+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 745 39 745 43+                                         , srcInfoPoints = []+                                         }+                                       "name"))))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 44 745 45+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 745 44 745 45+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 745 44 745 45+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (Lambda+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 46 746 21+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 745 46 745 47+                                    , SrcSpan "tests/examples/Directory.hs" 745 51 745 53+                                    ]+                                }+                              [ PVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 745 48 745 50+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 745 48 745 50+                                       , srcInfoPoints = []+                                       }+                                     "st")+                              ]+                              (Do+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 745 54 746 21+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 745 54 745 56+                                       , SrcSpan "tests/examples/Directory.hs" 746 2 746 2+                                       , SrcSpan "tests/examples/Directory.hs" 746 2 746 2+                                       , SrcSpan "tests/examples/Directory.hs" 749 1 749 0+                                       ]+                                   }+                                 [ Qualifier+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 746 2 746 21+                                       , srcInfoPoints = []+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 746 2 746 21+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 746 2 746 18+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 746 2 746 18+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 746 2 746 18+                                                   , srcInfoPoints = []+                                                   }+                                                 "modificationTime")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 746 19 746 21+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 746 19 746 21+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 746 19 746 21+                                                   , srcInfoPoints = []+                                                   }+                                                 "st"))))+                                 ])))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 1 749 68+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 749 16 749 18 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 1 749 15+                , srcInfoPoints = []+                }+              "withFileStatus"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 19 749 68+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 749 26 749 28 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 19 749 25+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 19 749 25+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 19 749 25+                        , srcInfoPoints = []+                        }+                      "String")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 29 749 68+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 749 38 749 40 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 29 749 37+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 29 749 37+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 29 749 37+                           , srcInfoPoints = []+                           }+                         "FilePath")))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 41 749 68+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 749 61 749 63 ]+                     }+                   (TyParen+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 41 749 60+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 749 41 749 42+                            , SrcSpan "tests/examples/Directory.hs" 749 59 749 60+                            ]+                        }+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 42 749 59+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 749 52 749 54 ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 42 749 51+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 42 749 45+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 749 42 749 45+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 749 42 749 45+                                       , srcInfoPoints = []+                                       }+                                     "Ptr")))+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 46 749 51+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 749 46 749 51+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 749 46 749 51+                                       , srcInfoPoints = []+                                       }+                                     "CStat"))))+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 55 749 59+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 55 749 57+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 749 55 749 57+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 749 55 749 57+                                       , srcInfoPoints = []+                                       }+                                     "IO")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 58 749 59+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 749 58 749 59+                                    , srcInfoPoints = []+                                    }+                                  "a")))))+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 64 749 68+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 64 749 66+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 64 749 66+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 64 749 66+                                 , srcInfoPoints = []+                                 }+                               "IO")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 67 749 68+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 67 749 68+                              , srcInfoPoints = []+                              }+                            "a"))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 1 754 50+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 1 754 50+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 1 750 15+                   , srcInfoPoints = []+                   }+                 "withFileStatus")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 16 750 19+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 16 750 19+                       , srcInfoPoints = []+                       }+                     "loc")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 20 750 24+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 20 750 24+                       , srcInfoPoints = []+                       }+                     "name")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 25 750 26+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 25 750 26+                       , srcInfoPoints = []+                       }+                     "f")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 27 754 50+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 750 27 750 28 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 29 754 50+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 750 29 750 31+                          , SrcSpan "tests/examples/Directory.hs" 751 3 751 3+                          , SrcSpan "tests/examples/Directory.hs" 756 1 756 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 751 3 754 50+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 751 3 754 50+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 751 3 751 40+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 751 3 751 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 751 3 751 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 751 3 751 16+                                         , srcInfoPoints = []+                                         }+                                       "modifyIOError")))+                              (RightSection+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 751 17 751 40+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 751 17 751 18+                                       , SrcSpan "tests/examples/Directory.hs" 751 39 751 40+                                       ]+                                   }+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 751 18 751 34+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 751 18 751 19+                                          , SrcSpan "tests/examples/Directory.hs" 751 19 751 33+                                          , SrcSpan "tests/examples/Directory.hs" 751 33 751 34+                                          ]+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 751 18 751 34+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 751 18 751 19+                                             , SrcSpan "tests/examples/Directory.hs" 751 19 751 33+                                             , SrcSpan "tests/examples/Directory.hs" 751 33 751 34+                                             ]+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 751 19 751 33+                                            , srcInfoPoints = []+                                            }+                                          "ioeSetFileName")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 751 35 751 39+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 751 35 751 39+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 751 35 751 39+                                            , srcInfoPoints = []+                                            }+                                          "name")))))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 751 41 751 42+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 751 41 751 42+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 751 41 751 42+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 752 5 754 50+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 752 5 752 28+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 752 5 752 16+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 752 5 752 16+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 752 5 752 16+                                            , srcInfoPoints = []+                                            }+                                          "allocaBytes")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 752 17 752 28+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 752 17 752 28+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 752 17 752 28+                                            , srcInfoPoints = []+                                            }+                                          "sizeof_stat"))))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 752 29 752 30+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 752 29 752 30+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 752 29 752 30+                                         , srcInfoPoints = []+                                         }+                                       "$")))+                              (Lambda+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 752 31 754 50+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 752 31 752 32+                                       , SrcSpan "tests/examples/Directory.hs" 752 34 752 36+                                       ]+                                   }+                                 [ PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 752 32 752 33+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 752 32 752 33+                                          , srcInfoPoints = []+                                          }+                                        "p")+                                 ]+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 753 7 754 50+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 753 7 753 43+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 753 7 753 19+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 753 7 753 19+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 753 7 753 19+                                                  , srcInfoPoints = []+                                                  }+                                                "withFilePath")))+                                       (Paren+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 753 20 753 43+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 753 20 753 21+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 753 42 753 43+                                                ]+                                            }+                                          (App+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 753 21 753 42+                                               , srcInfoPoints = []+                                               }+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 753 21 753 37+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           753+                                                           21+                                                           753+                                                           37+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              753+                                                              21+                                                              753+                                                              37+                                                        , srcInfoPoints = []+                                                        }+                                                      "fileNameEndClean")))+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 753 38 753 42+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           753+                                                           38+                                                           753+                                                           42+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              753+                                                              38+                                                              753+                                                              42+                                                        , srcInfoPoints = []+                                                        }+                                                      "name"))))))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 753 44 753 45+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 753 44 753 45+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 753 44 753 45+                                               , srcInfoPoints = []+                                               }+                                             "$")))+                                    (Lambda+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 753 46 754 50+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 753 46 753 47+                                             , SrcSpan "tests/examples/Directory.hs" 753 49 753 51+                                             ]+                                         }+                                       [ PVar+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 753 47 753 48+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 753 47 753 48+                                                , srcInfoPoints = []+                                                }+                                              "s")+                                       ]+                                       (Do+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 753 52 754 50+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 753 52 753 54+                                                , SrcSpan "tests/examples/Directory.hs" 754 9 754 9+                                                , SrcSpan "tests/examples/Directory.hs" 756 1 756 0+                                                ]+                                            }+                                          [ Qualifier+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 754 9 754 50+                                                , srcInfoPoints = []+                                                }+                                              (App+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 754 9 754 50+                                                   , srcInfoPoints = []+                                                   }+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            754+                                                            9+                                                            754+                                                            37+                                                      , srcInfoPoints = []+                                                      }+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               754+                                                               9+                                                               754+                                                               33+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  754+                                                                  9+                                                                  754+                                                                  33+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     754+                                                                     9+                                                                     754+                                                                     33+                                                               , srcInfoPoints = []+                                                               }+                                                             "throwErrnoIfMinus1Retry_")))+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               754+                                                               34+                                                               754+                                                               37+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  754+                                                                  34+                                                                  754+                                                                  37+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     754+                                                                     34+                                                                     754+                                                                     37+                                                               , srcInfoPoints = []+                                                               }+                                                             "loc"))))+                                                 (Paren+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            754+                                                            38+                                                            754+                                                            50+                                                      , srcInfoPoints =+                                                          [ SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              754+                                                              38+                                                              754+                                                              39+                                                          , SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              754+                                                              49+                                                              754+                                                              50+                                                          ]+                                                      }+                                                    (App+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               754+                                                               39+                                                               754+                                                               49+                                                         , srcInfoPoints = []+                                                         }+                                                       (App+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  754+                                                                  39+                                                                  754+                                                                  47+                                                            , srcInfoPoints = []+                                                            }+                                                          (Var+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     754+                                                                     39+                                                                     754+                                                                     45+                                                               , srcInfoPoints = []+                                                               }+                                                             (UnQual+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        754+                                                                        39+                                                                        754+                                                                        45+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Ident+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           754+                                                                           39+                                                                           754+                                                                           45+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   "c_stat")))+                                                          (Var+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     754+                                                                     46+                                                                     754+                                                                     47+                                                               , srcInfoPoints = []+                                                               }+                                                             (UnQual+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        754+                                                                        46+                                                                        754+                                                                        47+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Ident+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           754+                                                                           46+                                                                           754+                                                                           47+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   "s"))))+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  754+                                                                  48+                                                                  754+                                                                  49+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     754+                                                                     48+                                                                     754+                                                                     49+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        754+                                                                        48+                                                                        754+                                                                        49+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "p"))))))+                                          ]))))))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 1 756 77+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 756 25 756 27 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 1 756 24+                , srcInfoPoints = []+                }+              "withFileOrSymlinkStatus"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 28 756 77+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 756 35 756 37 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 28 756 34+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 28 756 34+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 28 756 34+                        , srcInfoPoints = []+                        }+                      "String")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 38 756 77+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 756 47 756 49 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 38 756 46+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 38 756 46+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 38 756 46+                           , srcInfoPoints = []+                           }+                         "FilePath")))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 50 756 77+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 756 70 756 72 ]+                     }+                   (TyParen+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 50 756 69+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 756 50 756 51+                            , SrcSpan "tests/examples/Directory.hs" 756 68 756 69+                            ]+                        }+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 51 756 68+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 756 61 756 63 ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 51 756 60+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 51 756 54+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 756 51 756 54+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 756 51 756 54+                                       , srcInfoPoints = []+                                       }+                                     "Ptr")))+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 55 756 60+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 756 55 756 60+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 756 55 756 60+                                       , srcInfoPoints = []+                                       }+                                     "CStat"))))+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 64 756 68+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 64 756 66+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 756 64 756 66+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 756 64 756 66+                                       , srcInfoPoints = []+                                       }+                                     "IO")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 67 756 68+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 756 67 756 68+                                    , srcInfoPoints = []+                                    }+                                  "a")))))+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 73 756 77+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 73 756 75+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 73 756 75+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 73 756 75+                                 , srcInfoPoints = []+                                 }+                               "IO")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 76 756 77+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 76 756 77+                              , srcInfoPoints = []+                              }+                            "a"))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 1 761 49+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 1 761 49+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 1 757 24+                   , srcInfoPoints = []+                   }+                 "withFileOrSymlinkStatus")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 25 757 28+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 25 757 28+                       , srcInfoPoints = []+                       }+                     "loc")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 29 757 33+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 29 757 33+                       , srcInfoPoints = []+                       }+                     "name")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 34 757 35+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 34 757 35+                       , srcInfoPoints = []+                       }+                     "f")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 36 761 49+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 757 36 757 37 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 38 761 49+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 757 38 757 40+                          , SrcSpan "tests/examples/Directory.hs" 758 3 758 3+                          , SrcSpan "tests/examples/Directory.hs" 763 1 763 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 758 3 761 49+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 758 3 761 49+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 758 3 758 40+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 758 3 758 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 758 3 758 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 758 3 758 16+                                         , srcInfoPoints = []+                                         }+                                       "modifyIOError")))+                              (RightSection+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 758 17 758 40+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 758 17 758 18+                                       , SrcSpan "tests/examples/Directory.hs" 758 39 758 40+                                       ]+                                   }+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 758 18 758 34+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 758 18 758 19+                                          , SrcSpan "tests/examples/Directory.hs" 758 19 758 33+                                          , SrcSpan "tests/examples/Directory.hs" 758 33 758 34+                                          ]+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 758 18 758 34+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 758 18 758 19+                                             , SrcSpan "tests/examples/Directory.hs" 758 19 758 33+                                             , SrcSpan "tests/examples/Directory.hs" 758 33 758 34+                                             ]+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 758 19 758 33+                                            , srcInfoPoints = []+                                            }+                                          "ioeSetFileName")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 758 35 758 39+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 758 35 758 39+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 758 35 758 39+                                            , srcInfoPoints = []+                                            }+                                          "name")))))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 758 41 758 42+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 758 41 758 42+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 758 41 758 42+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 759 5 761 49+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 759 5 759 28+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 759 5 759 16+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 759 5 759 16+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 759 5 759 16+                                            , srcInfoPoints = []+                                            }+                                          "allocaBytes")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 759 17 759 28+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 759 17 759 28+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 759 17 759 28+                                            , srcInfoPoints = []+                                            }+                                          "sizeof_stat"))))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 759 29 759 30+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 759 29 759 30+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 759 29 759 30+                                         , srcInfoPoints = []+                                         }+                                       "$")))+                              (Lambda+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 759 31 761 49+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 759 31 759 32+                                       , SrcSpan "tests/examples/Directory.hs" 759 34 759 36+                                       ]+                                   }+                                 [ PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 759 32 759 33+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 759 32 759 33+                                          , srcInfoPoints = []+                                          }+                                        "p")+                                 ]+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 760 7 761 49+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 760 7 760 24+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 760 7 760 19+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 760 7 760 19+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 760 7 760 19+                                                  , srcInfoPoints = []+                                                  }+                                                "withFilePath")))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 760 20 760 24+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 760 20 760 24+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 760 20 760 24+                                                  , srcInfoPoints = []+                                                  }+                                                "name"))))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 760 25 760 26+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 760 25 760 26+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 760 25 760 26+                                               , srcInfoPoints = []+                                               }+                                             "$")))+                                    (Lambda+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 760 27 761 49+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 760 27 760 28+                                             , SrcSpan "tests/examples/Directory.hs" 760 30 760 32+                                             ]+                                         }+                                       [ PVar+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 760 28 760 29+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 760 28 760 29+                                                , srcInfoPoints = []+                                                }+                                              "s")+                                       ]+                                       (Do+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 760 33 761 49+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 760 33 760 35+                                                , SrcSpan "tests/examples/Directory.hs" 761 9 761 9+                                                , SrcSpan "tests/examples/Directory.hs" 763 1 763 0+                                                ]+                                            }+                                          [ Qualifier+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 761 9 761 49+                                                , srcInfoPoints = []+                                                }+                                              (App+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 761 9 761 49+                                                   , srcInfoPoints = []+                                                   }+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            761+                                                            9+                                                            761+                                                            37+                                                      , srcInfoPoints = []+                                                      }+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               761+                                                               9+                                                               761+                                                               33+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  761+                                                                  9+                                                                  761+                                                                  33+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     761+                                                                     9+                                                                     761+                                                                     33+                                                               , srcInfoPoints = []+                                                               }+                                                             "throwErrnoIfMinus1Retry_")))+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               761+                                                               34+                                                               761+                                                               37+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  761+                                                                  34+                                                                  761+                                                                  37+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     761+                                                                     34+                                                                     761+                                                                     37+                                                               , srcInfoPoints = []+                                                               }+                                                             "loc"))))+                                                 (Paren+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            761+                                                            38+                                                            761+                                                            49+                                                      , srcInfoPoints =+                                                          [ SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              761+                                                              38+                                                              761+                                                              39+                                                          , SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              761+                                                              48+                                                              761+                                                              49+                                                          ]+                                                      }+                                                    (App+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               761+                                                               39+                                                               761+                                                               48+                                                         , srcInfoPoints = []+                                                         }+                                                       (App+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  761+                                                                  39+                                                                  761+                                                                  46+                                                            , srcInfoPoints = []+                                                            }+                                                          (Var+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     761+                                                                     39+                                                                     761+                                                                     44+                                                               , srcInfoPoints = []+                                                               }+                                                             (UnQual+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        761+                                                                        39+                                                                        761+                                                                        44+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Ident+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           761+                                                                           39+                                                                           761+                                                                           44+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   "lstat")))+                                                          (Var+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     761+                                                                     45+                                                                     761+                                                                     46+                                                               , srcInfoPoints = []+                                                               }+                                                             (UnQual+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        761+                                                                        45+                                                                        761+                                                                        46+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (Ident+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/Directory.hs"+                                                                           761+                                                                           45+                                                                           761+                                                                           46+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   "s"))))+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  761+                                                                  47+                                                                  761+                                                                  48+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     761+                                                                     47+                                                                     761+                                                                     48+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        761+                                                                        47+                                                                        761+                                                                        48+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "p"))))))+                                          ]))))))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 1 763 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 763 18 763 20 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 1 763 17+                , srcInfoPoints = []+                }+              "modificationTime"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 46+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 763 31 763 33 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 30+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 24+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 24+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 24+                           , srcInfoPoints = []+                           }+                         "Ptr")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 25 763 30+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 25 763 30+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 25 763 30+                           , srcInfoPoints = []+                           }+                         "CStat"))))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 34 763 46+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 34 763 36+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 34 763 36+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 34 763 36+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 37 763 46+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 37 763 46+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 37 763 46+                           , srcInfoPoints = []+                           }+                         "ClockTime")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 1 767 52+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 1 767 52+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 1 764 17+                   , srcInfoPoints = []+                   }+                 "modificationTime")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 18 764 22+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 18 764 22+                       , srcInfoPoints = []+                       }+                     "stat")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 23 767 52+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 764 23 764 24 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 25 767 52+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 764 25 764 27+                          , SrcSpan "tests/examples/Directory.hs" 765 5 765 5+                          , SrcSpan "tests/examples/Directory.hs" 766 5 766 5+                          , SrcSpan "tests/examples/Directory.hs" 767 5 767 5+                          , SrcSpan "tests/examples/Directory.hs" 769 1 769 0+                          ]+                      }+                    [ Generator+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 5 765 27+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 765 11 765 13 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 5 765 10+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 5 765 10+                                , srcInfoPoints = []+                                }+                              "mtime"))+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 14 765 27+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 14 765 22+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 765 14 765 22+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 765 14 765 22+                                      , srcInfoPoints = []+                                      }+                                    "st_mtime")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 23 765 27+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 765 23 765 27+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 765 23 765 27+                                      , srcInfoPoints = []+                                      }+                                    "stat"))))+                    , LetStmt+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 766 5 766 69+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 766 5 766 8 ]+                          }+                        (BDecls+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 766 9 766 69+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Directory.hs" 766 9 766 9+                                 , SrcSpan "tests/examples/Directory.hs" 767 5 767 0+                                 ]+                             }+                           [ PatBind+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 766 9 766 69+                                 , srcInfoPoints = []+                                 }+                               (PVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 766 9 766 22+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 766 9 766 22+                                       , srcInfoPoints = []+                                       }+                                     "realToInteger"))+                               (UnGuardedRhs+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 766 23 766 69+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Directory.hs" 766 23 766 24 ]+                                    }+                                  (ExpTypeSig+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 766 25 766 69+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Directory.hs" 766 44 766 46 ]+                                       }+                                     (InfixApp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 766 25 766 43+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 766 25 766 30+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 766 25 766 30+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 766 25 766 30+                                                   , srcInfoPoints = []+                                                   }+                                                 "round")))+                                        (QVarOp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 766 31 766 32+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 766 31 766 32+                                                , srcInfoPoints = []+                                                }+                                              (Symbol+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 766 31 766 32+                                                   , srcInfoPoints = []+                                                   }+                                                 ".")))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 766 33 766 43+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 766 33 766 43+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 766 33 766 43+                                                   , srcInfoPoints = []+                                                   }+                                                 "realToFrac"))))+                                     (TyForall+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 766 47 766 69+                                          , srcInfoPoints = []+                                          }+                                        Nothing+                                        (Just+                                           (CxSingle+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 766 47 766 56+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/Directory.hs" 766 54 766 56+                                                    ]+                                                }+                                              (TypeA+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 766 47 766 56+                                                   , srcInfoPoints =+                                                       [ SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           766+                                                           54+                                                           766+                                                           56+                                                       ]+                                                   }+                                                 (TyApp+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            766+                                                            47+                                                            766+                                                            56+                                                      , srcInfoPoints =+                                                          [ SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              766+                                                              54+                                                              766+                                                              56+                                                          ]+                                                      }+                                                    (TyCon+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               766+                                                               47+                                                               766+                                                               56+                                                         , srcInfoPoints =+                                                             [ SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 766+                                                                 54+                                                                 766+                                                                 56+                                                             ]+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  766+                                                                  47+                                                                  766+                                                                  51+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     766+                                                                     47+                                                                     766+                                                                     51+                                                               , srcInfoPoints = []+                                                               }+                                                             "Real")))+                                                    (TyVar+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               766+                                                               52+                                                               766+                                                               53+                                                         , srcInfoPoints = []+                                                         }+                                                       (Ident+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  766+                                                                  52+                                                                  766+                                                                  53+                                                            , srcInfoPoints = []+                                                            }+                                                          "a"))))))+                                        (TyFun+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 766 57 766 69+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 766 59 766 61+                                                 ]+                                             }+                                           (TyVar+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 766 57 766 58+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 766 57 766 58+                                                   , srcInfoPoints = []+                                                   }+                                                 "a"))+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 766 62 766 69+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 766 62 766 69+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            766+                                                            62+                                                            766+                                                            69+                                                      , srcInfoPoints = []+                                                      }+                                                    "Integer")))))))+                               Nothing+                           ])+                    , Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 767 5 767 52+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 767 5 767 52+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 767 5 767 11+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 767 5 767 11+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 767 5 767 11+                                      , srcInfoPoints = []+                                      }+                                    "return")))+                           (Paren+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 767 12 767 52+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 767 12 767 13+                                    , SrcSpan "tests/examples/Directory.hs" 767 51 767 52+                                    ]+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 767 13 767 51+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 767 13 767 49+                                      , srcInfoPoints = []+                                      }+                                    (Con+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 767 13 767 16+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 767 13 767 16+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 767 13 767 16+                                               , srcInfoPoints = []+                                               }+                                             "TOD")))+                                    (Paren+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 767 17 767 49+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 767 17 767 18+                                             , SrcSpan "tests/examples/Directory.hs" 767 48 767 49+                                             ]+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 767 18 767 48+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 767 18 767 31+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 767 18 767 31+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           767+                                                           18+                                                           767+                                                           31+                                                     , srcInfoPoints = []+                                                     }+                                                   "realToInteger")))+                                          (Paren+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 767 32 767 48+                                               , srcInfoPoints =+                                                   [ SrcSpan+                                                       "tests/examples/Directory.hs" 767 32 767 33+                                                   , SrcSpan+                                                       "tests/examples/Directory.hs" 767 47 767 48+                                                   ]+                                               }+                                             (ExpTypeSig+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 767 33 767 47+                                                  , srcInfoPoints =+                                                      [ SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          767+                                                          39+                                                          767+                                                          41+                                                      ]+                                                  }+                                                (Var+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           767+                                                           33+                                                           767+                                                           38+                                                     , srcInfoPoints = []+                                                     }+                                                   (UnQual+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              767+                                                              33+                                                              767+                                                              38+                                                        , srcInfoPoints = []+                                                        }+                                                      (Ident+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 767+                                                                 33+                                                                 767+                                                                 38+                                                           , srcInfoPoints = []+                                                           }+                                                         "mtime")))+                                                (TyCon+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           767+                                                           42+                                                           767+                                                           47+                                                     , srcInfoPoints = []+                                                     }+                                                   (UnQual+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              767+                                                              42+                                                              767+                                                              47+                                                        , srcInfoPoints = []+                                                        }+                                                      (Ident+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 767+                                                                 42+                                                                 767+                                                                 47+                                                           , srcInfoPoints = []+                                                           }+                                                         "CTime"))))))))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 767 50 767 51+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 767 50 767 51+                                         , srcInfoPoints = []+                                         }+                                       0+                                       "0")))))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 1 769 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 769 13 769 15 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 1 769 12+                , srcInfoPoints = []+                }+              "isDirectory"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 36+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 769 26 769 28 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 25+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 19+                           , srcInfoPoints = []+                           }+                         "Ptr")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 20 769 25+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 20 769 25+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 20 769 25+                           , srcInfoPoints = []+                           }+                         "CStat"))))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 29 769 36+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 29 769 31+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 29 769 31+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 29 769 31+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 32 769 36+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 32 769 36+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 32 769 36+                           , srcInfoPoints = []+                           }+                         "Bool")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 1 772 24+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 1 772 24+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 1 770 12+                   , srcInfoPoints = []+                   }+                 "isDirectory")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 13 770 17+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 13 770 17+                       , srcInfoPoints = []+                       }+                     "stat")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 18 772 24+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 770 18 770 19 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 20 772 24+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 770 20 770 22+                          , SrcSpan "tests/examples/Directory.hs" 771 3 771 3+                          , SrcSpan "tests/examples/Directory.hs" 772 3 772 3+                          , SrcSpan "tests/examples/Directory.hs" 774 1 774 0+                          ]+                      }+                    [ Generator+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 3 771 23+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Directory.hs" 771 8 771 10 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 3 771 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 3 771 7+                                , srcInfoPoints = []+                                }+                              "mode"))+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 11 771 23+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 11 771 18+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 771 11 771 18+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 771 11 771 18+                                      , srcInfoPoints = []+                                      }+                                    "st_mode")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 19 771 23+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 771 19 771 23+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 771 19 771 23+                                      , srcInfoPoints = []+                                      }+                                    "stat"))))+                    , Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 3 772 24+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 3 772 24+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 3 772 9+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 3 772 9+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 772 3 772 9+                                      , srcInfoPoints = []+                                      }+                                    "return")))+                           (Paren+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 10 772 24+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 772 10 772 11+                                    , SrcSpan "tests/examples/Directory.hs" 772 23 772 24+                                    ]+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 772 11 772 23+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 772 11 772 18+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 772 11 772 18+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 772 11 772 18+                                            , srcInfoPoints = []+                                            }+                                          "s_isdir")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 772 19 772 23+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 772 19 772 23+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 772 19 772 23+                                            , srcInfoPoints = []+                                            }+                                          "mode"))))))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 1 774 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 774 18 774 20 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 1 774 17+                , srcInfoPoints = []+                }+              "fileNameEndClean"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 21 774 37+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 774 28 774 30 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 21 774 27+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 21 774 27+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 21 774 27+                        , srcInfoPoints = []+                        }+                      "String")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 31 774 37+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 31 774 37+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 31 774 37+                        , srcInfoPoints = []+                        }+                      "String"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 1 776 76+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 1 776 76+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 1 775 17+                   , srcInfoPoints = []+                   }+                 "fileNameEndClean")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 18 775 22+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 18 775 22+                       , srcInfoPoints = []+                       }+                     "name")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 23 776 76+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 775 23 775 24 ]+                   }+                 (If+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 25 776 76+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 775 25 775 27+                          , SrcSpan "tests/examples/Directory.hs" 775 41 775 45+                          , SrcSpan "tests/examples/Directory.hs" 776 41 776 45+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 28 775 40+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 28 775 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 28 775 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 775 28 775 35+                                  , srcInfoPoints = []+                                  }+                                "isDrive")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 36 775 40+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 36 775 40+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 775 36 775 40+                                  , srcInfoPoints = []+                                  }+                                "name"))))+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 46 775 75+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 46 775 70+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 46 775 70+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 775 46 775 70+                                  , srcInfoPoints = []+                                  }+                                "addTrailingPathSeparator")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 71 775 75+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 71 775 75+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 775 71 775 75+                                  , srcInfoPoints = []+                                  }+                                "name"))))+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 46 776 76+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 46 776 71+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 46 776 71+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 776 46 776 71+                                  , srcInfoPoints = []+                                  }+                                "dropTrailingPathSeparator")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 72 776 76+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 72 776 76+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 776 72 776 76+                                  , srcInfoPoints = []+                                  }+                                "name"))))))+              Nothing+          ]+      , ForImp+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 1 778 78+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 778 1 778 8+                , SrcSpan "tests/examples/Directory.hs" 778 9 778 15+                , SrcSpan "tests/examples/Directory.hs" 778 29 778 61+                , SrcSpan "tests/examples/Directory.hs" 778 70 778 72+                ]+            }+          (CCall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 16 778 21+               , srcInfoPoints = []+               })+          (Just+             (PlayRisky+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 22 778 28+                  , srcInfoPoints = []+                  }))+          (Just "HsDirectory.h __hscore_S_IRUSR")+          (Ident+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 62 778 69+               , srcInfoPoints = []+               }+             "s_IRUSR")+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 73 778 78+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 73 778 78+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 73 778 78+                     , srcInfoPoints = []+                     }+                   "CMode")))+      , ForImp+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 1 779 78+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 779 1 779 8+                , SrcSpan "tests/examples/Directory.hs" 779 9 779 15+                , SrcSpan "tests/examples/Directory.hs" 779 29 779 61+                , SrcSpan "tests/examples/Directory.hs" 779 70 779 72+                ]+            }+          (CCall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 16 779 21+               , srcInfoPoints = []+               })+          (Just+             (PlayRisky+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 22 779 28+                  , srcInfoPoints = []+                  }))+          (Just "HsDirectory.h __hscore_S_IWUSR")+          (Ident+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 62 779 69+               , srcInfoPoints = []+               }+             "s_IWUSR")+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 73 779 78+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 73 779 78+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 73 779 78+                     , srcInfoPoints = []+                     }+                   "CMode")))+      , ForImp+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 1 780 78+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 780 1 780 8+                , SrcSpan "tests/examples/Directory.hs" 780 9 780 15+                , SrcSpan "tests/examples/Directory.hs" 780 29 780 61+                , SrcSpan "tests/examples/Directory.hs" 780 70 780 72+                ]+            }+          (CCall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 16 780 21+               , srcInfoPoints = []+               })+          (Just+             (PlayRisky+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 22 780 28+                  , srcInfoPoints = []+                  }))+          (Just "HsDirectory.h __hscore_S_IXUSR")+          (Ident+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 62 780 69+               , srcInfoPoints = []+               }+             "s_IXUSR")+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 73 780 78+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 73 780 78+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 73 780 78+                     , srcInfoPoints = []+                     }+                   "CMode")))+      , ForImp+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 1 781 64+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 781 1 781 8+                , SrcSpan "tests/examples/Directory.hs" 781 9 781 15+                , SrcSpan "tests/examples/Directory.hs" 781 29 781 47+                , SrcSpan "tests/examples/Directory.hs" 781 56 781 58+                ]+            }+          (CCall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 16 781 21+               , srcInfoPoints = []+               })+          (Just+             (PlayRisky+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 22 781 28+                  , srcInfoPoints = []+                  }))+          (Just "__hscore_S_IFDIR")+          (Ident+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 48 781 55+               , srcInfoPoints = []+               }+             "s_IFDIR")+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 59 781 64+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 59 781 64+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 59 781 64+                     , srcInfoPoints = []+                     }+                   "CMode")))+      , ForImp+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 784 1 785 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 784 1 784 8+                , SrcSpan "tests/examples/Directory.hs" 784 9 784 15+                , SrcSpan "tests/examples/Directory.hs" 784 29 784 54+                , SrcSpan "tests/examples/Directory.hs" 785 18 785 20+                ]+            }+          (CCall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 784 16 784 21+               , srcInfoPoints = []+               })+          (Just+             (PlayRisky+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 784 22 784 28+                  , srcInfoPoints = []+                  }))+          (Just "__hscore_long_path_size")+          (Ident+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 785 3 785 17+               , srcInfoPoints = []+               }+             "long_path_size")+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 785 21 785 24+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 785 21 785 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 785 21 785 24+                     , srcInfoPoints = []+                     }+                   "Int")))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 1 808 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 808 18 808 20 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 1 808 17+                , srcInfoPoints = []+                }+              "getHomeDirectory"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 21 808 32+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 21 808 23+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 21 808 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 21 808 23+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 24 808 32+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 24 808 32+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 24 808 32+                        , srcInfoPoints = []+                        }+                      "FilePath"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 809 1 818 46+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 809 1 809 17+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 809 1 809 17+                  , srcInfoPoints = []+                  }+                "getHomeDirectory"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 809 18 818 46+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 809 18 809 19 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 818 46+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 810 56+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 810 16+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 810 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 810 16+                              , srcInfoPoints = []+                              }+                            "modifyIOError")))+                   (Paren+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 17 810 56+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Directory.hs" 810 17 810 18+                            , SrcSpan "tests/examples/Directory.hs" 810 55 810 56+                            ]+                        }+                      (RightSection+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 18 810 55+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Directory.hs" 810 18 810 19+                               , SrcSpan "tests/examples/Directory.hs" 810 54 810 55+                               ]+                           }+                         (QVarOp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 19 810 35+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Directory.hs" 810 19 810 20+                                  , SrcSpan "tests/examples/Directory.hs" 810 20 810 34+                                  , SrcSpan "tests/examples/Directory.hs" 810 34 810 35+                                  ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 19 810 35+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Directory.hs" 810 19 810 20+                                     , SrcSpan "tests/examples/Directory.hs" 810 20 810 34+                                     , SrcSpan "tests/examples/Directory.hs" 810 34 810 35+                                     ]+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 810 20 810 34+                                    , srcInfoPoints = []+                                    }+                                  "ioeSetLocation")))+                         (Lit+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 36 810 54+                              , srcInfoPoints = []+                              }+                            (String+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 36 810 54+                                 , srcInfoPoints = []+                                 }+                               "getHomeDirectory"+                               "getHomeDirectory")))))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 57 810 58+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 57 810 58+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 57 810 58+                           , srcInfoPoints = []+                           }+                         "$")))+                (Do+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 59 818 46+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Directory.hs" 810 59 810 61+                         , SrcSpan "tests/examples/Directory.hs" 811 3 811 3+                         , SrcSpan "tests/examples/Directory.hs" 812 3 812 3+                         , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+                         ]+                     }+                   [ Generator+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 3 811 73+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 811 5 811 7 ]+                         }+                       (PVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 3 811 4+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 3 811 4+                               , srcInfoPoints = []+                               }+                             "r"))+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 8 811 73+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 8 811 11+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 8 811 11+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 811 8 811 11+                                     , srcInfoPoints = []+                                     }+                                   "try")))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 12 811 13+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 811 12 811 13+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 811 12 811 13+                                     , srcInfoPoints = []+                                     }+                                   "$")))+                          (App+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 14 811 73+                               , srcInfoPoints = []+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 811 14 811 71+                                  , srcInfoPoints = []+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 811 14 811 63+                                     , srcInfoPoints = []+                                     }+                                   (App+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 811 14 811 43+                                        , srcInfoPoints = []+                                        }+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 811 14 811 35+                                           , srcInfoPoints = []+                                           }+                                         (Qual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 811 14 811 35+                                              , srcInfoPoints = []+                                              }+                                            (ModuleName+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 811 14 811 35+                                                 , srcInfoPoints = []+                                                 }+                                               "Win32")+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 811 14 811 35+                                                 , srcInfoPoints = []+                                                 }+                                               "sHGetFolderPath")))+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 811 36 811 43+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 811 36 811 43+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 811 36 811 43+                                                 , srcInfoPoints = []+                                                 }+                                               "nullPtr"))))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 811 44 811 63+                                        , srcInfoPoints = []+                                        }+                                      (Qual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 811 44 811 63+                                           , srcInfoPoints = []+                                           }+                                         (ModuleName+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 811 44 811 63+                                              , srcInfoPoints = []+                                              }+                                            "Win32")+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 811 44 811 63+                                              , srcInfoPoints = []+                                              }+                                            "cSIDL_PROFILE"))))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 811 64 811 71+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 811 64 811 71+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 811 64 811 71+                                           , srcInfoPoints = []+                                           }+                                         "nullPtr"))))+                             (Lit+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 811 72 811 73+                                  , srcInfoPoints = []+                                  }+                                (Int+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 811 72 811 73+                                     , srcInfoPoints = []+                                     }+                                   0+                                   "0"))))+                   , Qualifier+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 812 3 818 46+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Directory.hs" 812 3 812 7+                             , SrcSpan "tests/examples/Directory.hs" 812 41 812 43+                             , SrcSpan "tests/examples/Directory.hs" 813 5 813 5+                             , SrcSpan "tests/examples/Directory.hs" 814 5 814 5+                             , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+                             ]+                         }+                       (Case+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 812 3 818 46+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Directory.hs" 812 3 812 7+                                , SrcSpan "tests/examples/Directory.hs" 812 41 812 43+                                , SrcSpan "tests/examples/Directory.hs" 813 5 813 5+                                , SrcSpan "tests/examples/Directory.hs" 814 5 814 5+                                , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+                                ]+                            }+                          (Paren+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 812 8 812 40+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Directory.hs" 812 8 812 9+                                   , SrcSpan "tests/examples/Directory.hs" 812 39 812 40+                                   ]+                               }+                             (ExpTypeSig+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 812 9 812 39+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 812 11 812 13 ]+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 812 9 812 10+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 812 9 812 10+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 812 9 812 10+                                           , srcInfoPoints = []+                                           }+                                         "r")))+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 812 14 812 39+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 812 14 812 32+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 812 14 812 20+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 812 14 812 20+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 812 14 812 20+                                                 , srcInfoPoints = []+                                                 }+                                               "Either")))+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 812 21 812 32+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 812 21 812 32+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 812 21 812 32+                                                 , srcInfoPoints = []+                                                 }+                                               "IOException"))))+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 812 33 812 39+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 812 33 812 39+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/Directory.hs" 812 33 812 39+                                              , srcInfoPoints = []+                                              }+                                            "String"))))))+                          [ Alt+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 813 5 813 24+                                , srcInfoPoints = []+                                }+                              (PApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 813 5 813 12+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 813 5 813 10+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 813 5 813 10+                                         , srcInfoPoints = []+                                         }+                                       "Right"))+                                 [ PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 813 11 813 12+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 813 11 813 12+                                          , srcInfoPoints = []+                                          }+                                        "s")+                                 ])+                              (UnGuardedRhs+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 813 13 813 24+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 813 13 813 15 ]+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 813 16 813 24+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 813 16 813 22+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 813 16 813 22+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 813 16 813 22+                                               , srcInfoPoints = []+                                               }+                                             "return")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 813 23 813 24+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 813 23 813 24+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 813 23 813 24+                                               , srcInfoPoints = []+                                               }+                                             "s")))))+                              Nothing+                          , Alt+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 814 5 818 46+                                , srcInfoPoints = []+                                }+                              (PApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 814 5 814 12+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 814 5 814 9+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 814 5 814 9+                                         , srcInfoPoints = []+                                         }+                                       "Left"))+                                 [ PWildCard+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 814 11 814 12+                                       , srcInfoPoints = []+                                       }+                                 ])+                              (UnGuardedRhs+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 814 13 818 46+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 814 13 814 15 ]+                                   }+                                 (Do+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 814 16 818 46+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 814 16 814 18+                                          , SrcSpan "tests/examples/Directory.hs" 815 7 815 7+                                          , SrcSpan "tests/examples/Directory.hs" 816 7 816 7+                                          , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+                                          ]+                                      }+                                    [ Generator+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 815 7 815 78+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 815 10 815 12+                                              ]+                                          }+                                        (PVar+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 815 7 815 9+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 815 7 815 9+                                                , srcInfoPoints = []+                                                }+                                              "r1"))+                                        (InfixApp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 815 13 815 78+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 815 13 815 16+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 815 13 815 16+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            815+                                                            13+                                                            815+                                                            16+                                                      , srcInfoPoints = []+                                                      }+                                                    "try")))+                                           (QVarOp+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 815 17 815 18+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 815 17 815 18+                                                   , srcInfoPoints = []+                                                   }+                                                 (Symbol+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            815+                                                            17+                                                            815+                                                            18+                                                      , srcInfoPoints = []+                                                      }+                                                    "$")))+                                           (App+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 815 19 815 78+                                                , srcInfoPoints = []+                                                }+                                              (App+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 815 19 815 76+                                                   , srcInfoPoints = []+                                                   }+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            815+                                                            19+                                                            815+                                                            68+                                                      , srcInfoPoints = []+                                                      }+                                                    (App+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               815+                                                               19+                                                               815+                                                               48+                                                         , srcInfoPoints = []+                                                         }+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  815+                                                                  19+                                                                  815+                                                                  40+                                                            , srcInfoPoints = []+                                                            }+                                                          (Qual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     815+                                                                     19+                                                                     815+                                                                     40+                                                               , srcInfoPoints = []+                                                               }+                                                             (ModuleName+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        815+                                                                        19+                                                                        815+                                                                        40+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "Win32")+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        815+                                                                        19+                                                                        815+                                                                        40+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "sHGetFolderPath")))+                                                       (Var+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  815+                                                                  41+                                                                  815+                                                                  48+                                                            , srcInfoPoints = []+                                                            }+                                                          (UnQual+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     815+                                                                     41+                                                                     815+                                                                     48+                                                               , srcInfoPoints = []+                                                               }+                                                             (Ident+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/Directory.hs"+                                                                        815+                                                                        41+                                                                        815+                                                                        48+                                                                  , srcInfoPoints = []+                                                                  }+                                                                "nullPtr"))))+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               815+                                                               49+                                                               815+                                                               68+                                                         , srcInfoPoints = []+                                                         }+                                                       (Qual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  815+                                                                  49+                                                                  815+                                                                  68+                                                            , srcInfoPoints = []+                                                            }+                                                          (ModuleName+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     815+                                                                     49+                                                                     815+                                                                     68+                                                               , srcInfoPoints = []+                                                               }+                                                             "Win32")+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     815+                                                                     49+                                                                     815+                                                                     68+                                                               , srcInfoPoints = []+                                                               }+                                                             "cSIDL_WINDOWS"))))+                                                 (Var+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            815+                                                            69+                                                            815+                                                            76+                                                      , srcInfoPoints = []+                                                      }+                                                    (UnQual+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               815+                                                               69+                                                               815+                                                               76+                                                         , srcInfoPoints = []+                                                         }+                                                       (Ident+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  815+                                                                  69+                                                                  815+                                                                  76+                                                            , srcInfoPoints = []+                                                            }+                                                          "nullPtr"))))+                                              (Lit+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 815 77 815 78+                                                   , srcInfoPoints = []+                                                   }+                                                 (Int+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            815+                                                            77+                                                            815+                                                            78+                                                      , srcInfoPoints = []+                                                      }+                                                    0+                                                    "0"))))+                                    , Qualifier+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 816 7 818 46+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 816 7 816 11+                                              , SrcSpan "tests/examples/Directory.hs" 816 15 816 17+                                              , SrcSpan "tests/examples/Directory.hs" 817 9 817 9+                                              , SrcSpan "tests/examples/Directory.hs" 818 9 818 9+                                              , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+                                              ]+                                          }+                                        (Case+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 816 7 818 46+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/Directory.hs" 816 7 816 11+                                                 , SrcSpan+                                                     "tests/examples/Directory.hs" 816 15 816 17+                                                 , SrcSpan "tests/examples/Directory.hs" 817 9 817 9+                                                 , SrcSpan "tests/examples/Directory.hs" 818 9 818 9+                                                 , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+                                                 ]+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 816 12 816 14+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 816 12 816 14+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            816+                                                            12+                                                            816+                                                            14+                                                      , srcInfoPoints = []+                                                      }+                                                    "r1")))+                                           [ Alt+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 817 9 817 28+                                                 , srcInfoPoints = []+                                                 }+                                               (PApp+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 817 9 817 16+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             817+                                                             9+                                                             817+                                                             14+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                817+                                                                9+                                                                817+                                                                14+                                                          , srcInfoPoints = []+                                                          }+                                                        "Right"))+                                                  [ PVar+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              817+                                                              15+                                                              817+                                                              16+                                                        , srcInfoPoints = []+                                                        }+                                                      (Ident+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 817+                                                                 15+                                                                 817+                                                                 16+                                                           , srcInfoPoints = []+                                                           }+                                                         "s")+                                                  ])+                                               (UnGuardedRhs+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          817+                                                          17+                                                          817+                                                          28+                                                    , srcInfoPoints =+                                                        [ SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            817+                                                            17+                                                            817+                                                            19+                                                        ]+                                                    }+                                                  (App+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             817+                                                             20+                                                             817+                                                             28+                                                       , srcInfoPoints = []+                                                       }+                                                     (Var+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                817+                                                                20+                                                                817+                                                                26+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   817+                                                                   20+                                                                   817+                                                                   26+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      817+                                                                      20+                                                                      817+                                                                      26+                                                                , srcInfoPoints = []+                                                                }+                                                              "return")))+                                                     (Var+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                817+                                                                27+                                                                817+                                                                28+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   817+                                                                   27+                                                                   817+                                                                   28+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      817+                                                                      27+                                                                      817+                                                                      28+                                                                , srcInfoPoints = []+                                                                }+                                                              "s")))))+                                               Nothing+                                           , Alt+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/Directory.hs" 818 9 818 46+                                                 , srcInfoPoints = []+                                                 }+                                               (PApp+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs" 818 9 818 16+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             818+                                                             9+                                                             818+                                                             13+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                818+                                                                9+                                                                818+                                                                13+                                                          , srcInfoPoints = []+                                                          }+                                                        "Left"))+                                                  [ PVar+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/Directory.hs"+                                                              818+                                                              15+                                                              818+                                                              16+                                                        , srcInfoPoints = []+                                                        }+                                                      (Ident+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/Directory.hs"+                                                                 818+                                                                 15+                                                                 818+                                                                 16+                                                           , srcInfoPoints = []+                                                           }+                                                         "e")+                                                  ])+                                               (UnGuardedRhs+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Directory.hs"+                                                          818+                                                          17+                                                          818+                                                          46+                                                    , srcInfoPoints =+                                                        [ SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            818+                                                            17+                                                            818+                                                            19+                                                        ]+                                                    }+                                                  (App+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Directory.hs"+                                                             818+                                                             20+                                                             818+                                                             46+                                                       , srcInfoPoints = []+                                                       }+                                                     (Var+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                818+                                                                20+                                                                818+                                                                27+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   818+                                                                   20+                                                                   818+                                                                   27+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      818+                                                                      20+                                                                      818+                                                                      27+                                                                , srcInfoPoints = []+                                                                }+                                                              "ioError")))+                                                     (Paren+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/Directory.hs"+                                                                818+                                                                28+                                                                818+                                                                46+                                                          , srcInfoPoints =+                                                              [ SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  818+                                                                  28+                                                                  818+                                                                  29+                                                              , SrcSpan+                                                                  "tests/examples/Directory.hs"+                                                                  818+                                                                  45+                                                                  818+                                                                  46+                                                              ]+                                                          }+                                                        (ExpTypeSig+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/Directory.hs"+                                                                   818+                                                                   29+                                                                   818+                                                                   45+                                                             , srcInfoPoints =+                                                                 [ SrcSpan+                                                                     "tests/examples/Directory.hs"+                                                                     818+                                                                     31+                                                                     818+                                                                     33+                                                                 ]+                                                             }+                                                           (Var+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      818+                                                                      29+                                                                      818+                                                                      30+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         818+                                                                         29+                                                                         818+                                                                         30+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/Directory.hs"+                                                                            818+                                                                            29+                                                                            818+                                                                            30+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "e")))+                                                           (TyCon+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/Directory.hs"+                                                                      818+                                                                      34+                                                                      818+                                                                      45+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/Directory.hs"+                                                                         818+                                                                         34+                                                                         818+                                                                         45+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/Directory.hs"+                                                                            818+                                                                            34+                                                                            818+                                                                            45+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "IOException")))))))+                                               Nothing+                                           ])+                                    ]))+                              Nothing+                          ])+                   ])))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 1 847 49+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 847 25 847 27 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 1 847 24+                , srcInfoPoints = []+                }+              "getAppUserDataDirectory"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 28 847 49+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 847 35 847 37 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 28 847 34+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 28 847 34+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 28 847 34+                        , srcInfoPoints = []+                        }+                      "String")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 38 847 49+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 38 847 40+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 38 847 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 38 847 40+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 41 847 49+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 41 847 49+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 41 847 49+                           , srcInfoPoints = []+                           }+                         "FilePath")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 1 851 27+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 1 851 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 1 848 24+                   , srcInfoPoints = []+                   }+                 "getAppUserDataDirectory")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 25 848 32+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 25 848 32+                       , srcInfoPoints = []+                       }+                     "appName")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 33 851 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Directory.hs" 848 33 848 34 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 35 851 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Directory.hs" 848 35 848 37+                          , SrcSpan "tests/examples/Directory.hs" 849 3 849 3+                          , SrcSpan "tests/examples/Directory.hs" 874 1 874 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 3 851 27+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 3 851 27+                             , srcInfoPoints = []+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 3 849 63+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 849 3 849 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 849 3 849 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 849 3 849 16+                                         , srcInfoPoints = []+                                         }+                                       "modifyIOError")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 849 17 849 63+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Directory.hs" 849 17 849 18+                                       , SrcSpan "tests/examples/Directory.hs" 849 62 849 63+                                       ]+                                   }+                                 (RightSection+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 849 18 849 62+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Directory.hs" 849 18 849 19+                                          , SrcSpan "tests/examples/Directory.hs" 849 61 849 62+                                          ]+                                      }+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 849 19 849 35+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Directory.hs" 849 19 849 20+                                             , SrcSpan "tests/examples/Directory.hs" 849 20 849 34+                                             , SrcSpan "tests/examples/Directory.hs" 849 34 849 35+                                             ]+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 849 19 849 35+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/Directory.hs" 849 19 849 20+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 849 20 849 34+                                                , SrcSpan+                                                    "tests/examples/Directory.hs" 849 34 849 35+                                                ]+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 849 20 849 34+                                               , srcInfoPoints = []+                                               }+                                             "ioeSetLocation")))+                                    (Lit+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 849 36 849 61+                                         , srcInfoPoints = []+                                         }+                                       (String+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 849 36 849 61+                                            , srcInfoPoints = []+                                            }+                                          "getAppUserDataDirectory"+                                          "getAppUserDataDirectory")))))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 64 849 65+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 849 64 849 65+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 849 64 849 65+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (Do+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 66 851 27+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Directory.hs" 849 66 849 68+                                    , SrcSpan "tests/examples/Directory.hs" 850 3 850 3+                                    , SrcSpan "tests/examples/Directory.hs" 850 3 850 3+                                    , SrcSpan "tests/examples/Directory.hs" 851 3 851 3+                                    , SrcSpan "tests/examples/Directory.hs" 874 1 874 0+                                    ]+                                }+                              [ Generator+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 850 3 850 67+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Directory.hs" 850 5 850 7 ]+                                    }+                                  (PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 850 3 850 4+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 850 3 850 4+                                          , srcInfoPoints = []+                                          }+                                        "s"))+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 850 8 850 67+                                       , srcInfoPoints = []+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 850 8 850 65+                                          , srcInfoPoints = []+                                          }+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 850 8 850 57+                                             , srcInfoPoints = []+                                             }+                                           (App+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 850 8 850 37+                                                , srcInfoPoints = []+                                                }+                                              (Var+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 850 8 850 29+                                                   , srcInfoPoints = []+                                                   }+                                                 (Qual+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            850+                                                            8+                                                            850+                                                            29+                                                      , srcInfoPoints = []+                                                      }+                                                    (ModuleName+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               850+                                                               8+                                                               850+                                                               29+                                                         , srcInfoPoints = []+                                                         }+                                                       "Win32")+                                                    (Ident+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               850+                                                               8+                                                               850+                                                               29+                                                         , srcInfoPoints = []+                                                         }+                                                       "sHGetFolderPath")))+                                              (Var+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 850 30 850 37+                                                   , srcInfoPoints = []+                                                   }+                                                 (UnQual+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            850+                                                            30+                                                            850+                                                            37+                                                      , srcInfoPoints = []+                                                      }+                                                    (Ident+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               850+                                                               30+                                                               850+                                                               37+                                                         , srcInfoPoints = []+                                                         }+                                                       "nullPtr"))))+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 850 38 850 57+                                                , srcInfoPoints = []+                                                }+                                              (Qual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 850 38 850 57+                                                   , srcInfoPoints = []+                                                   }+                                                 (ModuleName+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            850+                                                            38+                                                            850+                                                            57+                                                      , srcInfoPoints = []+                                                      }+                                                    "Win32")+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            850+                                                            38+                                                            850+                                                            57+                                                      , srcInfoPoints = []+                                                      }+                                                    "cSIDL_APPDATA"))))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 850 58 850 65+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 850 58 850 65+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 850 58 850 65+                                                   , srcInfoPoints = []+                                                   }+                                                 "nullPtr"))))+                                     (Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 850 66 850 67+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 850 66 850 67+                                             , srcInfoPoints = []+                                             }+                                           0+                                           "0")))+                              , Qualifier+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/Directory.hs" 851 3 851 27+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Directory.hs" 851 3 851 27+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 851 3 851 9+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 851 3 851 9+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 851 3 851 9+                                                , srcInfoPoints = []+                                                }+                                              "return")))+                                     (Paren+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Directory.hs" 851 10 851 27+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Directory.hs" 851 10 851 11+                                              , SrcSpan "tests/examples/Directory.hs" 851 26 851 27+                                              ]+                                          }+                                        (InfixApp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Directory.hs" 851 11 851 26+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 851 11 851 12+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 851 11 851 12+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            851+                                                            11+                                                            851+                                                            12+                                                      , srcInfoPoints = []+                                                      }+                                                    "s")))+                                           (QVarOp+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 851 12 851 14+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 851 12 851 14+                                                   , srcInfoPoints = []+                                                   }+                                                 (Symbol+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            851+                                                            12+                                                            851+                                                            14+                                                      , srcInfoPoints = []+                                                      }+                                                    "++")))+                                           (InfixApp+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/Directory.hs" 851 14 851 26+                                                , srcInfoPoints = []+                                                }+                                              (Lit+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 851 14 851 18+                                                   , srcInfoPoints = []+                                                   }+                                                 (Char+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            851+                                                            14+                                                            851+                                                            18+                                                      , srcInfoPoints = []+                                                      }+                                                    '\\'+                                                    "\\\\"))+                                              (QConOp+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 851 18 851 19+                                                   , srcInfoPoints = []+                                                   }+                                                 (Special+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            851+                                                            18+                                                            851+                                                            19+                                                      , srcInfoPoints = []+                                                      }+                                                    (Cons+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               851+                                                               18+                                                               851+                                                               19+                                                         , srcInfoPoints = []+                                                         })))+                                              (Var+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/Directory.hs" 851 19 851 26+                                                   , srcInfoPoints = []+                                                   }+                                                 (UnQual+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Directory.hs"+                                                            851+                                                            19+                                                            851+                                                            26+                                                      , srcInfoPoints = []+                                                      }+                                                    (Ident+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/Directory.hs"+                                                               851+                                                               19+                                                               851+                                                               26+                                                         , srcInfoPoints = []+                                                         }+                                                       "appName")))))))+                              ]))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 1 874 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 874 27 874 29 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 1 874 26+                , srcInfoPoints = []+                }+              "getUserDocumentsDirectory"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 30 874 41+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 30 874 32+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 30 874 32+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 30 874 32+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 33 874 41+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 33 874 41+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 33 874 41+                        , srcInfoPoints = []+                        }+                      "FilePath"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 1 877 63+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 1 875 26+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 1 875 26+                  , srcInfoPoints = []+                  }+                "getUserDocumentsDirectory"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 27 877 63+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 875 27 875 28 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 29 877 63+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 875 29 875 31+                      , SrcSpan "tests/examples/Directory.hs" 876 3 876 3+                      , SrcSpan "tests/examples/Directory.hs" 905 1 905 0+                      ]+                  }+                [ Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 877 63+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 877 63+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 876 65+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 876 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 876 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 876 3 876 16+                                     , srcInfoPoints = []+                                     }+                                   "modifyIOError")))+                          (Paren+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 17 876 65+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Directory.hs" 876 17 876 18+                                   , SrcSpan "tests/examples/Directory.hs" 876 64 876 65+                                   ]+                               }+                             (RightSection+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 876 18 876 64+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Directory.hs" 876 18 876 19+                                      , SrcSpan "tests/examples/Directory.hs" 876 63 876 64+                                      ]+                                  }+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 876 19 876 35+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/Directory.hs" 876 19 876 20+                                         , SrcSpan "tests/examples/Directory.hs" 876 20 876 34+                                         , SrcSpan "tests/examples/Directory.hs" 876 34 876 35+                                         ]+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 876 19 876 35+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Directory.hs" 876 19 876 20+                                            , SrcSpan "tests/examples/Directory.hs" 876 20 876 34+                                            , SrcSpan "tests/examples/Directory.hs" 876 34 876 35+                                            ]+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Directory.hs" 876 20 876 34+                                           , srcInfoPoints = []+                                           }+                                         "ioeSetLocation")))+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Directory.hs" 876 36 876 63+                                     , srcInfoPoints = []+                                     }+                                   (String+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Directory.hs" 876 36 876 63+                                        , srcInfoPoints = []+                                        }+                                      "getUserDocumentsDirectory"+                                      "getUserDocumentsDirectory")))))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 66 876 67+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 66 876 67+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/Directory.hs" 876 66 876 67+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (Do+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 68 877 63+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Directory.hs" 876 68 876 70+                                , SrcSpan "tests/examples/Directory.hs" 877 3 877 3+                                , SrcSpan "tests/examples/Directory.hs" 877 3 877 3+                                , SrcSpan "tests/examples/Directory.hs" 905 1 905 0+                                ]+                            }+                          [ Qualifier+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 877 3 877 63+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Directory.hs" 877 3 877 63+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 877 3 877 61+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 877 3 877 53+                                         , srcInfoPoints = []+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 877 3 877 32+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 877 3 877 24+                                               , srcInfoPoints = []+                                               }+                                             (Qual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 877 3 877 24+                                                  , srcInfoPoints = []+                                                  }+                                                (ModuleName+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           877+                                                           3+                                                           877+                                                           24+                                                     , srcInfoPoints = []+                                                     }+                                                   "Win32")+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           877+                                                           3+                                                           877+                                                           24+                                                     , srcInfoPoints = []+                                                     }+                                                   "sHGetFolderPath")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 877 25 877 32+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 877 25 877 32+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Directory.hs"+                                                           877+                                                           25+                                                           877+                                                           32+                                                     , srcInfoPoints = []+                                                     }+                                                   "nullPtr"))))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 877 33 877 53+                                            , srcInfoPoints = []+                                            }+                                          (Qual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 877 33 877 53+                                               , srcInfoPoints = []+                                               }+                                             (ModuleName+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 877 33 877 53+                                                  , srcInfoPoints = []+                                                  }+                                                "Win32")+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Directory.hs" 877 33 877 53+                                                  , srcInfoPoints = []+                                                  }+                                                "cSIDL_PERSONAL"))))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 877 54 877 61+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Directory.hs" 877 54 877 61+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/Directory.hs" 877 54 877 61+                                               , srcInfoPoints = []+                                               }+                                             "nullPtr"))))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Directory.hs" 877 62 877 63+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Directory.hs" 877 62 877 63+                                         , srcInfoPoints = []+                                         }+                                       0+                                       "0")))+                          ]))+                ]))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 1 905 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 905 23 905 25 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 1 905 22+                , srcInfoPoints = []+                }+              "getTemporaryDirectory"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 26 905 37+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 26 905 28+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 26 905 28+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 26 905 28+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 29 905 37+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 29 905 37+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 29 905 37+                        , srcInfoPoints = []+                        }+                      "FilePath"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 1 907 30+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 1 906 22+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 1 906 22+                  , srcInfoPoints = []+                  }+                "getTemporaryDirectory"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 23 907 30+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 906 23 906 24 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 25 907 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Directory.hs" 906 25 906 27+                      , SrcSpan "tests/examples/Directory.hs" 907 3 907 3+                      , SrcSpan "tests/examples/Directory.hs" 912 1 912 0+                      ]+                  }+                [ Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+                         , srcInfoPoints = []+                         }+                       (Qual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+                            , srcInfoPoints = []+                            }+                          (ModuleName+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+                               , srcInfoPoints = []+                               }+                             "Win32")+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+                               , srcInfoPoints = []+                               }+                             "getTemporaryDirectory")))+                ]))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 1 912 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Directory.hs" 912 14 912 16 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 1 912 13+                , srcInfoPoints = []+                }+              "exeExtension"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 17 912 23+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 17 912 23+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 17 912 23+                     , srcInfoPoints = []+                     }+                   "String")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 1 913 21+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 1 913 13+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 1 913 13+                  , srcInfoPoints = []+                  }+                "exeExtension"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 14 913 21+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Directory.hs" 913 14 913 15 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 16 913 21+                  , srcInfoPoints = []+                  }+                (String+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 16 913 21+                     , srcInfoPoints = []+                     }+                   "exe"+                   "exe")))+          Nothing+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 3 1 3 78)+        "---------------------------------------------------------------------------"+    , Comment+        False (SrcSpan "tests/examples/Directory.hs" 4 1 4 5) " |"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 5 1 5 35)+        " Module      :  System.Directory"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 6 1 6 53)+        " Copyright   :  (c) The University of Glasgow 2001"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 7 1 7 66)+        " License     :  BSD-style (see the file libraries/base/LICENSE)"+    , Comment False (SrcSpan "tests/examples/Directory.hs" 8 1 8 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 9 1 9 40)+        " Maintainer  :  libraries@haskell.org"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 10 1 10 25)+        " Stability   :  stable"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 11 1 11 27)+        " Portability :  portable"+    , Comment+        False (SrcSpan "tests/examples/Directory.hs" 12 1 12 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 13 1 13 59)+        " System-independent interface to directory manipulation."+    , Comment+        False (SrcSpan "tests/examples/Directory.hs" 14 1 14 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 15 1 15 78)+        "---------------------------------------------------------------------------"+    , Comment+        False (SrcSpan "tests/examples/Directory.hs" 19 5 19 14) " $intro"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 21 5 21 32)+        " * Actions on directories"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 22 29 22 52)+        " :: FilePath -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 23 33 23 64)+        " :: Bool -> FilePath -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 24 29 24 52)+        " :: FilePath -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 25 33 25 56)+        " :: FilePath -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 26 29 26 64)+        " :: FilePath -> FilePath -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 28 33 28 64)+        " :: FilePath -> IO [FilePath]"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 29 33 29 50)+        " :: IO FilePath"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 30 33 30 56)+        " :: FilePath -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 32 5 32 33)+        " * Pre-defined directories"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 38 5 38 26)+        " * Actions on files"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 39 25 39 48)+        " :: FilePath -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 40 33 40 68)+        " :: FilePath -> FilePath -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 41 33 41 68)+        " :: FilePath -> FilePath -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 47 5 47 25)+        " * Existence tests"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 48 25 48 50)+        " :: FilePath -> IO Bool"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 49 33 49 58)+        " :: FilePath -> IO Bool"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 51 5 51 21)+        " * Permissions"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 53 5 53 20)+        " $permissions"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 57 21 57 46)+        " :: Permissions -> Bool"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 58 21 58 46)+        " :: Permissions -> Bool"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 59 21 59 46)+        " :: Permissions -> Bool"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 60 21 60 46)+        " :: Permissions -> Bool"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 63 33 63 65)+        " :: FilePath -> IO Permissions"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 64 33 64 71)+        " :: FilePath -> Permissions -> IO ()"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 67 5 67 20)+        " * Timestamps"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 69 33 69 63)+        " :: FilePath -> IO ClockTime"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 86 1 86 33)+        "# CFILES cbits/directory.c #"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 96 1 110 3)+        " $intro\nA directory contains a series of entries, each of which is a named\nreference to a file system object (file, directory etc.).  Some\nentries may be hidden, inaccessible, or have some administrative\nfunction (e.g. `.' or `..' under POSIX\n<http://www.opengroup.org/onlinepubs/009695399/>), but in\nthis standard all such entries are considered to form part of the\ndirectory contents. Entries in sub-directories are not, however,\nconsidered to form part of the directory contents.\n\nEach file system object is referenced by a /path/.  There is\nnormally at least one absolute path to each file system object.  In\nsome operating systems, it may also be possible to have paths which\nare relative to the current directory.\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 112 1 112 78)+        "---------------------------------------------------------------------------"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 113 1 113 15)+        " Permissions"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 115 1 132 3)+        " $permissions\n\n The 'Permissions' type is used to record whether certain operations are\n permissible on a file\\/directory. 'getPermissions' and 'setPermissions'\n get and set these permissions, respectively. Permissions apply both to\n files and directories. For directories, the executable field will be\n 'False', and for files the searchable field will be 'False'. Note that\n directories may be searchable without being readable, if permission has\n been given to use them as part of a path, but not to examine the\n directory contents.\n\nNote that to change some, but not all permissions, a construct on the following lines must be used.\n\n>  makeReadable f = do\n>     p <- getPermissions f\n>     setPermissions f (p {readable = True})\n\n"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 140 1 150 3)+        " |The 'getPermissions' operation returns the\npermissions for the file or directory.\n\nThe operation may fail with:\n\n* 'isPermissionError' if the user is not permitted to access\n  the permissions; or\n\n* 'isDoesNotExistError' if the file or directory does not exist.\n\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 155 3 155 69)+        " stat() does a better job of guessing the permissions on Windows"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 156 3 156 71)+        " than access() does.  e.g. for execute permission, it looks at the"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 157 3 157 28)+        " filename extension :-)"+    , Comment+        False (SrcSpan "tests/examples/Directory.hs" 158 3 158 5) ""+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 159 3 159 78)+        " I tried for a while to do this properly, using the Windows security API,"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 160 3 160 79)+        " and eventually gave up.  getPermissions is a flawed API anyway. -- SimonM"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 177 1 187 3)+        " |The 'setPermissions' operation sets the\npermissions for the file or directory.\n\nThe operation may fail with:\n\n* 'isPermissionError' if the user is not permitted to set\n  the permissions; or\n\n* 'isDoesNotExistError' if the file or directory does not exist.\n\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 217 1 217 78)+        "---------------------------------------------------------------------------"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 218 1 218 18)+        " Implementation"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 220 1 255 3)+        " |@'createDirectory' dir@ creates a new directory @dir@ which is\ninitially empty, or as near to empty as the operating system\nallows.\n\nThe operation may fail with:\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES]@\n\n* 'isAlreadyExistsError' \\/ 'AlreadyExists'\nThe operand refers to a directory that already exists.\n@ [EEXIST]@\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nThe operand is not a valid directory name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'NoSuchThing'\nThere is no path to the directory.\n@[ENOENT, ENOTDIR]@\n\n* 'ResourceExhausted'\nInsufficient resources (virtual memory, process file descriptors,\nphysical disk space, etc.) are available to perform the operation.\n@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@\n\n* 'InappropriateType'\nThe path refers to an existing non-directory object.\n@[EEXIST]@\n\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 261 1 261 70)+        " | @'createDirectoryIfMissing' parents dir@ creates a new directory"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 262 1 262 63)+        " @dir@ if it doesn\\'t exist. If the first argument is 'True'"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 263 1 263 77)+        " the function will also create all parent directories if they are missing."+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 264 38 264 66)+        " ^ Create its parents too?"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 265 30 265 77)+        " ^ The path to the directory you want to make"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 287 11 287 75)+        " createDirectory (and indeed POSIX mkdir) does not distinguish"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 288 11 288 79)+        " between a dir already existing and a file already existing. So we"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 289 11 289 79)+        " check for it here. Unfortunately there is a slight race condition"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 290 11 290 77)+        " here, but we think it is benign. It could report an exeption in"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 291 11 291 77)+        " the case that the dir did exist but another process deletes the"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 292 11 292 75)+        " directory and creates a file in its place before we can check"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 293 11 293 50)+        " that the directory did indeed exist."+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 302 1 341 3)+        " | @'removeDirectory' dir@ removes an existing directory /dir/.  The\nimplementation may specify additional constraints which must be\nsatisfied before a directory can be removed (e.g. the directory has to\nbe empty, or may not be in use by other processes).  It is not legal\nfor an implementation to partially remove a directory unless the\nentire directory is removed. A conformant implementation need not\nsupport directory removal in all situations (e.g. removal of the root\ndirectory).\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\nEIO\n\n* 'InvalidArgument'\nThe operand is not a valid directory name.\n[ENAMETOOLONG, ELOOP]\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe directory does not exist.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES, EPERM]@\n\n* 'UnsatisfiedConstraints'\nImplementation-dependent constraints are not satisfied.\n@[EBUSY, ENOTEMPTY, EEXIST]@\n\n* 'UnsupportedOperation'\nThe implementation does not support removal in this situation.\n@[EINVAL]@\n\n* 'InappropriateType'\nThe operand refers to an existing non-directory object.\n@[ENOTDIR]@\n\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 347 1 347 75)+        " | @'removeDirectoryRecursive' dir@  removes an existing directory /dir/"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 348 1 348 65)+        " together with its content and all subdirectories. Be careful,"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 349 1 349 70)+        " if the directory contains symlinks, the function will follow them."+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 360 31 360 77)+        " If f is not a directory, re-throw the error"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 365 1 397 3)+        " |'removeFile' /file/ removes the directory entry for an existing file\n/file/, where /file/ is not itself a directory. The\nimplementation may specify additional constraints which must be\nsatisfied before a file can be removed (e.g. the file may not be in\nuse by other processes).\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nThe operand is not a valid file name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe file does not exist.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES, EPERM]@\n\n* 'UnsatisfiedConstraints'\nImplementation-dependent constraints are not satisfied.\n@[EBUSY]@\n\n* 'InappropriateType'\nThe operand refers to an existing directory.\n@[EPERM, EINVAL]@\n\n"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 403 1 450 3)+        " |@'renameDirectory' old new@ changes the name of an existing\ndirectory from /old/ to /new/.  If the /new/ directory\nalready exists, it is atomically replaced by the /old/ directory.\nIf the /new/ directory is neither the /old/ directory nor an\nalias of the /old/ directory, it is removed as if by\n'removeDirectory'.  A conformant implementation need not support\nrenaming directories in all situations (e.g. renaming to an existing\ndirectory, or across different physical devices), but the constraints\nmust be documented.\n\nOn Win32 platforms, @renameDirectory@ fails if the /new/ directory already\nexists.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nEither operand is not a valid directory name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe original directory does not exist, or there is no path to the target.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES, EPERM]@\n\n* 'ResourceExhausted'\nInsufficient resources are available to perform the operation.\n@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@\n\n* 'UnsatisfiedConstraints'\nImplementation-dependent constraints are not satisfied.\n@[EBUSY, ENOTEMPTY, EEXIST]@\n\n* 'UnsupportedOperation'\nThe implementation does not support renaming in this situation.\n@[EINVAL, EXDEV]@\n\n* 'InappropriateType'\nEither path refers to an existing non-directory object.\n@[ENOTDIR, EISDIR]@\n\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 454 4 454 73)+        " XXX this test isn't performed atomically with the following rename"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 455 4 455 26)+        " ToDo: use Win32 API"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 465 1 507 3)+        " |@'renameFile' old new@ changes the name of an existing file system\nobject from /old/ to /new/.  If the /new/ object already\nexists, it is atomically replaced by the /old/ object.  Neither\npath may refer to an existing directory.  A conformant implementation\nneed not support renaming files in all situations (e.g. renaming\nacross different physical devices), but the constraints must be\ndocumented.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nEither operand is not a valid file name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe original file does not exist, or there is no path to the target.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES, EPERM]@\n\n* 'ResourceExhausted'\nInsufficient resources are available to perform the operation.\n@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@\n\n* 'UnsatisfiedConstraints'\nImplementation-dependent constraints are not satisfied.\n@[EBUSY]@\n\n* 'UnsupportedOperation'\nThe implementation does not support renaming in this situation.\n@[EXDEV]@\n\n* 'InappropriateType'\nEither path refers to an existing directory.\n@[ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]@\n\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 511 4 511 73)+        " XXX this test isn't performed atomically with the following rename"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 512 4 512 26)+        " ToDo: use Win32 API"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 522 1 526 3)+        " |@'copyFile' old new@ copies the existing file from /old/ to /new/.\nIf the /new/ file already exists, it is atomically replaced by the /old/ file.\nNeither path may refer to an existing directory.  The permissions of /old/ are\ncopied to /new/, if possible.\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 553 1 553 60)+        " | Given path referring to a file or directory, returns a"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 554 1 554 64)+        " canonicalized path, with the intent that two paths referring"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 555 1 555 66)+        " to the same file\\/directory will map to the same canonicalized"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 556 1 556 58)+        " path. Note that it is impossible to guarantee that the"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 557 1 557 67)+        " implication (same file\\/dir \\<=\\> same canonicalizedPath) holds"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 558 1 558 66)+        " in either direction: this function can make only a best-effort"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 559 1 559 12)+        " attempt."+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 564 9 564 73)+        " normalise does more stuff, like upper-casing the drive letter"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 567 1 567 43)+        " | 'makeRelative' the current directory."+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 573 1 573 66)+        " | Given an executable file name, searches for such file in the"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 574 1 574 69)+        " directories listed in system PATH. The returned value is the path"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 575 1 575 70)+        " to the found executable or Nothing if an executable with the given"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 576 1 576 70)+        " name was not found. For example (findExecutable \\\"ghc\\\") gives you"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 577 1 577 20)+        " the path to GHC."+    , Comment+        False (SrcSpan "tests/examples/Directory.hs" 578 1 578 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 579 1 579 60)+        " The path returned by 'findExecutable' corresponds to the"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 580 1 580 68)+        " program that would be executed by 'System.Process.createProcess'"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 581 1 581 70)+        " when passed the same string (as a RawCommand, not a ShellCommand)."+    , Comment+        False (SrcSpan "tests/examples/Directory.hs" 582 1 582 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 583 1 583 71)+        " On Windows, 'findExecutable' calls the Win32 function 'SearchPath',"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 584 1 584 68)+        " which may search other places before checking the directories in"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 585 1 585 69)+        " @PATH@.  Where it actually searches depends on registry settings,"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 586 1 586 61)+        " but notably includes the directory containing the current"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 587 1 587 19)+        " executable. See"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 588 1 588 68)+        " <http://msdn.microsoft.com/en-us/library/aa365527.aspx> for more"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 589 1 589 12)+        " details."+    , Comment+        False (SrcSpan "tests/examples/Directory.hs" 590 1 590 3) ""+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 596 1 625 3)+        " |@'getDirectoryContents' dir@ returns a list of /all/ entries\nin /dir/.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nThe operand is not a valid directory name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe directory does not exist.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EACCES]@\n\n* 'ResourceExhausted'\nInsufficient resources are available to perform the operation.\n@[EMFILE, ENFILE]@\n\n* 'InappropriateType'\nThe path refers to an existing non-directory object.\n@[ENOTDIR]@\n\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 636 9 636 71)+        " we needn't worry about empty directories: adirectory always"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 637 9 637 45)+        " has at least \".\" and \"..\" entries"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 645 18 645 62)+        " no need to reverse, ordering is undefined"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 647 1 671 3)+        " |If the operating system has a notion of current directories,\n'getCurrentDirectory' returns an absolute path to the\ncurrent directory of the calling process.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThere is no path referring to the current directory.\n@[EPERM, ENOENT, ESTALE...]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EACCES]@\n\n* 'ResourceExhausted'\nInsufficient resources are available to perform the operation.\n\n* 'UnsupportedOperation'\nThe operating system has no notion of current directory.\n\n"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 676 1 706 3)+        " |If the operating system has a notion of current directories,\n@'setCurrentDirectory' dir@ changes the current\ndirectory of the calling process to /dir/.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nThe operand is not a valid directory name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe directory does not exist.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EACCES]@\n\n* 'UnsupportedOperation'\nThe operating system has no notion of current directory, or the\ncurrent directory cannot be dynamically changed.\n\n* 'InappropriateType'\nThe path refers to an existing non-directory object.\n@[ENOTDIR]@\n\n"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 712 1 714 3)+        " |The operation 'doesDirectoryExist' returns 'True' if the argument file\nexists and is a directory, and 'False' otherwise.\n"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 721 1 723 3)+        " |The operation 'doesFileExist' returns 'True'\nif the argument file exists and is not a directory, and 'False' otherwise.\n"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 730 1 740 3)+        " |The 'getModificationTime' operation returns the\nclock time at which the file or directory was last modified.\n\nThe operation may fail with:\n\n* 'isPermissionError' if the user is not permitted to access\n  the modification time; or\n\n* 'isDoesNotExistError' if the file or directory does not exist.\n\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 744 2 744 24)+        " ToDo: use Win32 API"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 787 1 807 3)+        " | Returns the current user's home directory.\n\nThe directory returned is expected to be writable by the current user,\nbut note that it isn't generally considered good practice to store\napplication-specific data here; use 'getAppUserDataDirectory'\ninstead.\n\nOn Unix, 'getHomeDirectory' returns the value of the @HOME@\nenvironment variable.  On Windows, the system is queried for a\nsuitable path; a typical path might be\n@C:/Documents And Settings/user@.\n\nThe operation may fail with:\n\n* 'UnsupportedOperation'\nThe operating system has no notion of home directory.\n\n* 'isDoesNotExistError'\nThe home directory for the current user does not exist, or\ncannot be found.\n"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 820 1 846 3)+        " | Returns the pathname of a directory in which application-specific\ndata for the current user can be stored.  The result of\n'getAppUserDataDirectory' for a given application is specific to\nthe current user.\n\nThe argument should be the name of the application, which will be used\nto construct the pathname (so avoid using unusual characters that\nmight result in an invalid pathname).\n\nNote: the directory may not actually exist, and may need to be created\nfirst.  It is expected that the parent directory exists and is\nwritable.\n\nOn Unix, this function returns @$HOME\\/.appName@.  On Windows, a\ntypical path might be\n\n> C:/Documents And Settings/user/Application Data/appName\n\nThe operation may fail with:\n\n* 'UnsupportedOperation'\nThe operating system has no notion of application-specific data directory.\n\n* 'isDoesNotExistError'\nThe home directory for the current user does not exist, or\ncannot be found.\n"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 853 1 873 3)+        " | Returns the current user's document directory.\n\nThe directory returned is expected to be writable by the current user,\nbut note that it isn't generally considered good practice to store\napplication-specific data here; use 'getAppUserDataDirectory'\ninstead.\n\nOn Unix, 'getUserDocumentsDirectory' returns the value of the @HOME@\nenvironment variable.  On Windows, the system is queried for a\nsuitable path; a typical path might be\n@C:\\/Documents and Settings\\/user\\/My Documents@.\n\nThe operation may fail with:\n\n* 'UnsupportedOperation'\nThe operating system has no notion of document directory.\n\n* 'isDoesNotExistError'\nThe document directory for the current user does not exist, or\ncannot be found.\n"+    , Comment+        True+        (SrcSpan "tests/examples/Directory.hs" 879 1 904 3)+        " | Returns the current directory for temporary files.\n\nOn Unix, 'getTemporaryDirectory' returns the value of the @TMPDIR@\nenvironment variable or \\\"\\/tmp\\\" if the variable isn\\'t defined.\nOn Windows, the function checks for the existence of environment variables in\nthe following order and uses the first path found:\n\n*\nTMP environment variable.\n\n*\nTEMP environment variable.\n\n*\nUSERPROFILE environment variable.\n\n*\nThe Windows directory\n\nThe operation may fail with:\n\n* 'UnsupportedOperation'\nThe operating system has no notion of temporary directory.\n\nThe function doesn\\'t verify whether the path exists.\n"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 909 1 909 60)+        " ToDo: This should be determined via autoconf (AC_EXEEXT)"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 910 1 910 36)+        " | Extension for executable files"+    , Comment+        False+        (SrcSpan "tests/examples/Directory.hs" 911 1 911 64)+        " (typically @\\\"\\\"@ on Unix and @\\\"exe\\\"@ on Windows or OS\\/2)"+    ]+  )
+ tests/examples/Directory.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Directory.hs.prettyprinter.golden view
@@ -0,0 +1,324 @@+{-# LANGUAGE ForeignFunctionInterface, NondecreasingIndentation #-}+module System.Directory+       (createDirectory, createDirectoryIfMissing, removeDirectory,+        removeDirectoryRecursive, renameDirectory, getDirectoryContents,+        getCurrentDirectory, setCurrentDirectory, getHomeDirectory,+        getAppUserDataDirectory, getUserDocumentsDirectory,+        getTemporaryDirectory, removeFile, renameFile, copyFile,+        canonicalizePath, makeRelativeToCurrentDirectory, findExecutable,+        doesFileExist, doesDirectoryExist,+        Permissions(Permissions, readable, writable, executable,+                    searchable),+        getPermissions, setPermissions, copyPermissions,+        getModificationTime)+       where+import Prelude hiding (catch)+import qualified Prelude+import Control.Monad (guard)+import System.Environment (getEnv)+import System.FilePath+import System.IO+import System.IO.Error hiding (catch, try)+import Control.Monad (when, unless)+import Control.Exception.Base+import Foreign+import Foreign.C+import System.Time (ClockTime(..))+import GHC.IO.Exception+       (IOException(..), IOErrorType(..), ioException)+import System.Posix.Types+import System.Posix.Internals+import qualified System.Win32 as Win32++data Permissions = Permissions{readable, writable, executable,+                               searchable :: Bool}+                     deriving (Eq, Ord, Read, Show)++getPermissions :: FilePath -> IO Permissions+getPermissions name+  = do withFilePath name $+         \ s ->+           do allocaBytes sizeof_stat $+                \ p_stat ->+                  do throwErrnoIfMinus1_ "getPermissions" $ c_stat s p_stat+                     mode <- st_mode p_stat+                     let usr_read = mode .&. s_IRUSR+                     let usr_write = mode .&. s_IWUSR+                     let usr_exec = mode .&. s_IXUSR+                     let is_dir = mode .&. s_IFDIR+                     return+                       (Permissions{readable = usr_read /= 0, writable = usr_write /= 0,+                                    executable = is_dir == 0 && usr_exec /= 0,+                                    searchable = is_dir /= 0 && usr_exec /= 0})++setPermissions :: FilePath -> Permissions -> IO ()+setPermissions name (Permissions r w e s)+  = do allocaBytes sizeof_stat $+         \ p_stat ->+           do withFilePath name $+                \ p_name ->+                  do throwErrnoIfMinus1_ "setPermissions" $+                       do c_stat p_name p_stat+                          mode <- st_mode p_stat+                          let mode1 = modifyBit r mode s_IRUSR+                          let mode2 = modifyBit w mode1 s_IWUSR+                          let mode3 = modifyBit (e || s) mode2 s_IXUSR+                          c_wchmod p_name mode3+  where modifyBit :: Bool -> CMode -> CMode -> CMode+        modifyBit False m b = m .&. (complement b)+        modifyBit True m b = m .|. b++foreign import ccall unsafe "_wchmod" c_wchmod ::+               CWString -> CMode -> IO CInt++copyPermissions :: FilePath -> FilePath -> IO ()+copyPermissions source dest+  = do allocaBytes sizeof_stat $+         \ p_stat ->+           do withFilePath source $+                \ p_source ->+                  do withFilePath dest $+                       \ p_dest ->+                         do throwErrnoIfMinus1_ "copyPermissions" $ c_stat p_source p_stat+                            mode <- st_mode p_stat+                            throwErrnoIfMinus1_ "copyPermissions" $ c_wchmod p_dest mode++createDirectory :: FilePath -> IO ()+createDirectory path = do Win32.createDirectory path Nothing++createDirectoryIfMissing :: Bool -> FilePath -> IO ()+createDirectoryIfMissing create_parents path0+  | create_parents = createDirs (parents path0)+  | otherwise = createDirs (take 1 (parents path0))+  where parents+          = reverse . scanl1 (</>) . splitDirectories . normalise+        createDirs [] = return ()+        createDirs (dir : []) = createDir dir throw+        createDirs (dir : dirs)+          = createDir dir $+              \ _ ->+                do createDirs dirs+                   createDir dir throw+        +        createDir :: FilePath -> (IOException -> IO ()) -> IO ()+        createDir dir notExistHandler+          = do r <- try $ createDirectory dir+               case (r :: Either IOException ()) of+                   Right () -> return ()+                   Left e | isDoesNotExistError e -> notExistHandler e+                          | isAlreadyExistsError e ->+                            (do withFileStatus "createDirectoryIfMissing" dir $+                                  \ st ->+                                    do isDir <- isDirectory st+                                       if isDir then return () else throw e)+                              `catch` ((\ _ -> return ()) :: IOException -> IO ())+                          | otherwise -> throw e++removeDirectory :: FilePath -> IO ()+removeDirectory path = Win32.removeDirectory path++removeDirectoryRecursive :: FilePath -> IO ()+removeDirectoryRecursive startLoc+  = do cont <- getDirectoryContents startLoc+       sequence_ [rm (startLoc </> x) | x <- cont, x /= "." && x /= ".."]+       removeDirectory startLoc+  where rm :: FilePath -> IO ()+        rm f+          = do temp <- try (removeFile f)+               case temp of+                   Left e -> do isDir <- doesDirectoryExist f+                                unless isDir $ throw (e :: SomeException)+                                removeDirectoryRecursive f+                   Right _ -> return ()++removeFile :: FilePath -> IO ()+removeFile path = Win32.deleteFile path++renameDirectory :: FilePath -> FilePath -> IO ()+renameDirectory opath npath+  = do withFileStatus "renameDirectory" opath $+         \ st ->+           do is_dir <- isDirectory st+              if (not is_dir) then+                ioException+                  (ioeSetErrorString+                     (mkIOError InappropriateType "renameDirectory" Nothing+                        (Just opath))+                     "not a directory")+                else+                do Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING++renameFile :: FilePath -> FilePath -> IO ()+renameFile opath npath+  = do withFileOrSymlinkStatus "renameFile" opath $+         \ st ->+           do is_dir <- isDirectory st+              if is_dir then+                ioException+                  (ioeSetErrorString+                     (mkIOError InappropriateType "renameFile" Nothing (Just opath))+                     "is a directory")+                else+                do Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING++copyFile :: FilePath -> FilePath -> IO ()+copyFile fromFPath toFPath+  = copy `Prelude.catch`+      (\ exc -> throw $ ioeSetLocation exc "copyFile")+  where copy+          = bracket (openBinaryFile fromFPath ReadMode) hClose $+              \ hFrom ->+                bracketOnError openTmp cleanTmp $+                  \ (tmpFPath, hTmp) ->+                    do allocaBytes bufferSize $ copyContents hFrom hTmp+                       hClose hTmp+                       ignoreIOExceptions $ copyPermissions fromFPath tmpFPath+                       renameFile tmpFPath toFPath+        openTmp+          = openBinaryTempFile (takeDirectory toFPath) ".copyFile.tmp"+        cleanTmp (tmpFPath, hTmp)+          = do ignoreIOExceptions $ hClose hTmp+               ignoreIOExceptions $ removeFile tmpFPath+        bufferSize = 1024+        copyContents hFrom hTo buffer+          = do count <- hGetBuf hFrom buffer bufferSize+               when (count > 0) $+                 do hPutBuf hTo buffer count+                    copyContents hFrom hTo buffer+        ignoreIOExceptions io = io `catch` ioExceptionIgnorer+        +        ioExceptionIgnorer :: IOException -> IO ()+        ioExceptionIgnorer _ = return ()++canonicalizePath :: FilePath -> IO FilePath+canonicalizePath fpath+  = do path <- Win32.getFullPathName fpath+       return (normalise path)++makeRelativeToCurrentDirectory :: FilePath -> IO FilePath+makeRelativeToCurrentDirectory x+  = do cur <- getCurrentDirectory+       return $ makeRelative cur x++findExecutable :: String -> IO (Maybe FilePath)+findExecutable binary+  = Win32.searchPath Nothing binary ('.' : exeExtension)++getDirectoryContents :: FilePath -> IO [FilePath]+getDirectoryContents path+  = modifyIOError+      ((`ioeSetFileName` path) .+         (`ioeSetLocation` "getDirectoryContents"))+      $+      do bracket (Win32.findFirstFile (path </> "*"))+           (\ (h, _) -> Win32.findClose h)+           (\ (h, fdat) -> loop h fdat [])+  where loop ::+             Win32.HANDLE -> Win32.FindData -> [FilePath] -> IO [FilePath]+        loop h fdat acc+          = do filename <- Win32.getFindDataFileName fdat+               more <- Win32.findNextFile h fdat+               if more then loop h fdat (filename : acc) else+                 return (filename : acc)++getCurrentDirectory :: IO FilePath+getCurrentDirectory = do Win32.getCurrentDirectory++setCurrentDirectory :: FilePath -> IO ()+setCurrentDirectory path = Win32.setCurrentDirectory path++doesDirectoryExist :: FilePath -> IO Bool+doesDirectoryExist name+  = (withFileStatus "doesDirectoryExist" name $+       \ st -> isDirectory st)+      `catch` ((\ _ -> return False) :: IOException -> IO Bool)++doesFileExist :: FilePath -> IO Bool+doesFileExist name+  = (withFileStatus "doesFileExist" name $+       \ st ->+         do b <- isDirectory st+            return (not b))+      `catch` ((\ _ -> return False) :: IOException -> IO Bool)++getModificationTime :: FilePath -> IO ClockTime+getModificationTime name+  = do withFileStatus "getModificationTime" name $+         \ st -> do modificationTime st++withFileStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a+withFileStatus loc name f+  = do modifyIOError (`ioeSetFileName` name) $+         allocaBytes sizeof_stat $+           \ p ->+             withFilePath (fileNameEndClean name) $+               \ s -> do throwErrnoIfMinus1Retry_ loc (c_stat s p)++withFileOrSymlinkStatus ::+                        String -> FilePath -> (Ptr CStat -> IO a) -> IO a+withFileOrSymlinkStatus loc name f+  = do modifyIOError (`ioeSetFileName` name) $+         allocaBytes sizeof_stat $+           \ p ->+             withFilePath name $+               \ s -> do throwErrnoIfMinus1Retry_ loc (lstat s p)++modificationTime :: Ptr CStat -> IO ClockTime+modificationTime stat+  = do mtime <- st_mtime stat+       let realToInteger = round . realToFrac :: Real a => a -> Integer+       return (TOD (realToInteger (mtime :: CTime)) 0)++isDirectory :: Ptr CStat -> IO Bool+isDirectory stat+  = do mode <- st_mode stat+       return (s_isdir mode)++fileNameEndClean :: String -> String+fileNameEndClean name+  = if isDrive name then addTrailingPathSeparator name else+      dropTrailingPathSeparator name++foreign import ccall unsafe "HsDirectory.h __hscore_S_IRUSR"+               s_IRUSR :: CMode++foreign import ccall unsafe "HsDirectory.h __hscore_S_IWUSR"+               s_IWUSR :: CMode++foreign import ccall unsafe "HsDirectory.h __hscore_S_IXUSR"+               s_IXUSR :: CMode++foreign import ccall unsafe "__hscore_S_IFDIR" s_IFDIR :: CMode++foreign import ccall unsafe "__hscore_long_path_size"+               long_path_size :: Int++getHomeDirectory :: IO FilePath+getHomeDirectory+  = modifyIOError ((`ioeSetLocation` "getHomeDirectory")) $+      do r <- try $+                Win32.sHGetFolderPath nullPtr Win32.cSIDL_PROFILE nullPtr 0+         case (r :: Either IOException String) of+             Right s -> return s+             Left _ -> do r1 <- try $+                                  Win32.sHGetFolderPath nullPtr Win32.cSIDL_WINDOWS nullPtr 0+                          case r1 of+                              Right s -> return s+                              Left e -> ioError (e :: IOException)++getAppUserDataDirectory :: String -> IO FilePath+getAppUserDataDirectory appName+  = do modifyIOError ((`ioeSetLocation` "getAppUserDataDirectory")) $+         do s <- Win32.sHGetFolderPath nullPtr Win32.cSIDL_APPDATA nullPtr 0+            return (s ++ '\\' : appName)++getUserDocumentsDirectory :: IO FilePath+getUserDocumentsDirectory+  = do modifyIOError ((`ioeSetLocation` "getUserDocumentsDirectory"))+         $ do Win32.sHGetFolderPath nullPtr Win32.cSIDL_PERSONAL nullPtr 0++getTemporaryDirectory :: IO FilePath+getTemporaryDirectory = do Win32.getTemporaryDirectory++exeExtension :: String+exeExtension = "exe"
+ tests/examples/DoRec.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE DoRec #-}++main = do rec let x = 1+          return ()
+ tests/examples/DoRec.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DoRec.hs.parser.golden view
@@ -0,0 +1,177 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DoRec.hs" 1 1 1 1+            , SrcSpan "tests/examples/DoRec.hs" 3 1 3 1+            , SrcSpan "tests/examples/DoRec.hs" 3 1 3 1+            , SrcSpan "tests/examples/DoRec.hs" 3 1 3 1+            , SrcSpan "tests/examples/DoRec.hs" 5 1 5 1+            , SrcSpan "tests/examples/DoRec.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 1 1 1 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DoRec.hs" 1 1 1 13+                , SrcSpan "tests/examples/DoRec.hs" 1 20 1 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 1 14 1 19+                , srcInfoPoints = []+                }+              "DoRec"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 1 4 20+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 1 3 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 1 3 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 6 4 20+               , srcInfoPoints = [ SrcSpan "tests/examples/DoRec.hs" 3 6 3 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 8 4 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DoRec.hs" 3 8 3 10+                      , SrcSpan "tests/examples/DoRec.hs" 3 11 3 11+                      , SrcSpan "tests/examples/DoRec.hs" 4 11 4 11+                      , SrcSpan "tests/examples/DoRec.hs" 5 1 5 0+                      ]+                  }+                [ RecStmt+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 11 3 24+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/DoRec.hs" 3 11 3 14+                          , SrcSpan "tests/examples/DoRec.hs" 3 15 3 15+                          , SrcSpan "tests/examples/DoRec.hs" 4 11 4 0+                          ]+                      }+                    [ LetStmt+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 15 3 24+                          , srcInfoPoints = [ SrcSpan "tests/examples/DoRec.hs" 3 15 3 18 ]+                          }+                        (BDecls+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 19 3 24+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/DoRec.hs" 3 19 3 19+                                 , SrcSpan "tests/examples/DoRec.hs" 4 11 4 0+                                 ]+                             }+                           [ PatBind+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 19 3 24+                                 , srcInfoPoints = []+                                 }+                               (PVar+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 19 3 20+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 19 3 20+                                       , srcInfoPoints = []+                                       }+                                     "x"))+                               (UnGuardedRhs+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 21 3 24+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/DoRec.hs" 3 21 3 22 ]+                                    }+                                  (Lit+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 23 3 24+                                       , srcInfoPoints = []+                                       }+                                     (Int+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DoRec.hs" 3 23 3 24+                                          , srcInfoPoints = []+                                          }+                                        1+                                        "1")))+                               Nothing+                           ])+                    ]+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 20+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 20+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 17+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 17+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 17+                                  , srcInfoPoints = []+                                  }+                                "return")))+                       (Con+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 18 4 20+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DoRec.hs" 4 18 4 19+                                , SrcSpan "tests/examples/DoRec.hs" 4 19 4 20+                                ]+                            }+                          (Special+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 18 4 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DoRec.hs" 4 18 4 19+                                   , SrcSpan "tests/examples/DoRec.hs" 4 19 4 20+                                   ]+                               }+                             (UnitCon+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 18 4 20+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DoRec.hs" 4 18 4 19+                                      , SrcSpan "tests/examples/DoRec.hs" 4 19 4 20+                                      ]+                                  }))))+                ]))+          Nothing+      ]+  , []+  )
+ tests/examples/DoRec.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DoRec.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE DoRec #-}+main+  = do rec let x = 1+       return ()
+ tests/examples/DoubleHashOp.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE UnboxedTuples #-}+module DoubleHashOp where++(##) :: a -> b -> Int+a ## b = 0++(#*) :: a -> b -> Int+a #* b = 1++-- This still does not work though:+-- (#) :: a -> b -> Int+-- a # b = 2
+ tests/examples/DoubleHashOp.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DoubleHashOp.hs.parser.golden view
@@ -0,0 +1,317 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 1 1 13 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DoubleHashOp.hs" 1 1 1 1+            , SrcSpan "tests/examples/DoubleHashOp.hs" 2 1 2 1+            , SrcSpan "tests/examples/DoubleHashOp.hs" 2 1 2 1+            , SrcSpan "tests/examples/DoubleHashOp.hs" 4 1 4 1+            , SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 1+            , SrcSpan "tests/examples/DoubleHashOp.hs" 7 1 7 1+            , SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 1+            , SrcSpan "tests/examples/DoubleHashOp.hs" 13 1 13 1+            , SrcSpan "tests/examples/DoubleHashOp.hs" 13 1 13 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 2 1 2 26+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/DoubleHashOp.hs" 2 1 2 7+                  , SrcSpan "tests/examples/DoubleHashOp.hs" 2 21 2 26+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 2 8 2 20+                 , srcInfoPoints = []+                 }+               "DoubleHashOp")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DoubleHashOp.hs" 1 1 1 13+                , SrcSpan "tests/examples/DoubleHashOp.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnboxedTuples"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 1 4 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DoubleHashOp.hs" 4 6 4 8 ]+            }+          [ Symbol+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 1 4 5+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DoubleHashOp.hs" 4 1 4 2+                    , SrcSpan "tests/examples/DoubleHashOp.hs" 4 2 4 4+                    , SrcSpan "tests/examples/DoubleHashOp.hs" 4 4 4 5+                    ]+                }+              "##"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 9 4 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DoubleHashOp.hs" 4 11 4 13 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 9 4 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 9 4 10+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 14 4 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DoubleHashOp.hs" 4 16 4 18 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 14 4 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 14 4 15+                        , srcInfoPoints = []+                        }+                      "b"))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 19 4 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 19 4 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 19 4 22+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 11+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 11+                , srcInfoPoints = []+                }+              (PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 2+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 2+                      , srcInfoPoints = []+                      }+                    "a"))+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 3 5 5+                   , srcInfoPoints = []+                   }+                 "##")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 6 5 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 6 5 7+                       , srcInfoPoints = []+                       }+                     "b")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 8 5 11+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DoubleHashOp.hs" 5 8 5 9 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 10 5 11+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 10 5 11+                         , srcInfoPoints = []+                         }+                       0+                       "0")))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 1 7 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DoubleHashOp.hs" 7 6 7 8 ]+            }+          [ Symbol+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 1 7 5+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DoubleHashOp.hs" 7 1 7 2+                    , SrcSpan "tests/examples/DoubleHashOp.hs" 7 2 7 4+                    , SrcSpan "tests/examples/DoubleHashOp.hs" 7 4 7 5+                    ]+                }+              "#*"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 9 7 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DoubleHashOp.hs" 7 11 7 13 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 9 7 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 9 7 10+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 14 7 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DoubleHashOp.hs" 7 16 7 18 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 14 7 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 14 7 15+                        , srcInfoPoints = []+                        }+                      "b"))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 19 7 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 19 7 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 19 7 22+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 11+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 11+                , srcInfoPoints = []+                }+              (PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 2+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 2+                      , srcInfoPoints = []+                      }+                    "a"))+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 3 8 5+                   , srcInfoPoints = []+                   }+                 "#*")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 6 8 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 6 8 7+                       , srcInfoPoints = []+                       }+                     "b")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 8 8 11+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DoubleHashOp.hs" 8 8 8 9 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 10 8 11+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 10 8 11+                         , srcInfoPoints = []+                         }+                       1+                       "1")))+              Nothing+          ]+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/DoubleHashOp.hs" 10 1 10 36)+        " This still does not work though:"+    , Comment+        False+        (SrcSpan "tests/examples/DoubleHashOp.hs" 11 1 11 24)+        " (#) :: a -> b -> Int"+    , Comment+        False+        (SrcSpan "tests/examples/DoubleHashOp.hs" 12 1 12 13)+        " a # b = 2"+    ]+  )
+ tests/examples/DoubleHashOp.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DoubleHashOp.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE UnboxedTuples #-}+module DoubleHashOp where++( ## ) :: a -> b -> Int+a ## b = 0++( #* ) :: a -> b -> Int+a #* b = 1
+ tests/examples/DsStrictData.hs view
@@ -0,0 +1,48 @@+{-# LANGUAGE ScopedTypeVariables, StrictData, GADTs #-}++-- | Tests the StrictData LANGUAGE pragma.+module Main where++import qualified Control.Exception as E+import System.IO.Unsafe (unsafePerformIO)++data Strict a = S a+data Strict2 b = S2 !b+data Strict3 c where+  S3 :: c -> Strict3 c++data UStrict = US {-# UNPACK #-} Int++data Lazy d = L ~d+data Lazy2 e where+  L2 :: ~e -> Lazy2 e++main :: IO ()+main =+  do print (isBottom (S bottom))+     print (isBottom (S2 bottom))+     print (isBottom (US bottom))+     print (isBottom (S3 bottom))+     putStrLn ""+     print (not (isBottom (L bottom)))+     print (not (isBottom (L2 bottom)))+     print (not (isBottom (Just bottom))) -- sanity check++------------------------------------------------------------------------+-- Support for testing for bottom++bottom :: a+bottom = error "_|_"++isBottom :: a -> Bool+isBottom f = unsafePerformIO $+  (E.evaluate f >> return False) `E.catches`+    [ E.Handler (\(_ :: E.ArrayException)   -> return True)+    , E.Handler (\(_ :: E.ErrorCall)        -> return True)+    , E.Handler (\(_ :: E.NoMethodError)    -> return True)+    , E.Handler (\(_ :: E.NonTermination)   -> return True)+    , E.Handler (\(_ :: E.PatternMatchFail) -> return True)+    , E.Handler (\(_ :: E.RecConError)      -> return True)+    , E.Handler (\(_ :: E.RecSelError)      -> return True)+    , E.Handler (\(_ :: E.RecUpdError)      -> return True)+    ]
+ tests/examples/DsStrictData.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DsStrictData.hs.parser.golden view
@@ -0,0 +1,3591 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 1 49 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/DsStrictData.hs" 1 1 1 1+            , SrcSpan "tests/examples/DsStrictData.hs" 4 1 4 1+            , SrcSpan "tests/examples/DsStrictData.hs" 4 1 4 1+            , SrcSpan "tests/examples/DsStrictData.hs" 6 1 6 1+            , SrcSpan "tests/examples/DsStrictData.hs" 7 1 7 1+            , SrcSpan "tests/examples/DsStrictData.hs" 9 1 9 1+            , SrcSpan "tests/examples/DsStrictData.hs" 10 1 10 1+            , SrcSpan "tests/examples/DsStrictData.hs" 11 1 11 1+            , SrcSpan "tests/examples/DsStrictData.hs" 14 1 14 1+            , SrcSpan "tests/examples/DsStrictData.hs" 16 1 16 1+            , SrcSpan "tests/examples/DsStrictData.hs" 17 1 17 1+            , SrcSpan "tests/examples/DsStrictData.hs" 20 1 20 1+            , SrcSpan "tests/examples/DsStrictData.hs" 21 1 21 1+            , SrcSpan "tests/examples/DsStrictData.hs" 34 1 34 1+            , SrcSpan "tests/examples/DsStrictData.hs" 35 1 35 1+            , SrcSpan "tests/examples/DsStrictData.hs" 37 1 37 1+            , SrcSpan "tests/examples/DsStrictData.hs" 38 1 38 1+            , SrcSpan "tests/examples/DsStrictData.hs" 49 1 49 1+            , SrcSpan "tests/examples/DsStrictData.hs" 49 1 49 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 4 1 4 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/DsStrictData.hs" 4 1 4 7+                  , SrcSpan "tests/examples/DsStrictData.hs" 4 13 4 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 4 8 4 12+                 , srcInfoPoints = []+                 }+               "Main")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 1 1 56+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 1 1 1 13+                , SrcSpan "tests/examples/DsStrictData.hs" 1 33 1 34+                , SrcSpan "tests/examples/DsStrictData.hs" 1 45 1 46+                , SrcSpan "tests/examples/DsStrictData.hs" 1 53 1 56+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 14 1 33+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 35 1 45+                , srcInfoPoints = []+                }+              "StrictData"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 47 1 52+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 6 1 6 40+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DsStrictData.hs" 6 1 6 7+                    , SrcSpan "tests/examples/DsStrictData.hs" 6 8 6 17+                    , SrcSpan "tests/examples/DsStrictData.hs" 6 36 6 38+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 6 18 6 35+                  , srcInfoPoints = []+                  }+                "Control.Exception"+          , importQualified = True+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 6 39 6 40+                     , srcInfoPoints = []+                     }+                   "E")+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 1 7 42+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DsStrictData.hs" 7 1 7 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 8 7 24+                  , srcInfoPoints = []+                  }+                "System.IO.Unsafe"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 25 7 42+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DsStrictData.hs" 7 25 7 26+                         , SrcSpan "tests/examples/DsStrictData.hs" 7 41 7 42+                         ]+                     }+                   False+                   [ IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 26 7 41+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 26 7 41+                            , srcInfoPoints = []+                            }+                          "unsafePerformIO")+                   ])+          }+      ]+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 1 9 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 9 15 9 16 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 1 9 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 6 9 14+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 6 9 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 6 9 12+                     , srcInfoPoints = []+                     }+                   "Strict"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 13 9 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 13 9 14+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 17 9 20+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 17 9 20+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 17 9 18+                      , srcInfoPoints = []+                      }+                    "S")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 19 9 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 19 9 20+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 1 10 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 10 16 10 17 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 1 10 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 6 10 15+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 6 10 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 6 10 13+                     , srcInfoPoints = []+                     }+                   "Strict2"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DsStrictData.hs" 10 14 10 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DsStrictData.hs" 10 14 10 15+                     , srcInfoPoints = []+                     }+                   "b")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DsStrictData.hs" 10 18 10 23+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DsStrictData.hs" 10 18 10 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DsStrictData.hs" 10 18 10 20+                      , srcInfoPoints = []+                      }+                    "S2")+                 [ TyBang+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DsStrictData.hs" 10 21 10 23+                       , srcInfoPoints = []+                       }+                     (BangedTy+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DsStrictData.hs" 10 21 10 22+                          , srcInfoPoints = []+                          })+                     (NoUnpackPragma+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+                          , srcInfoPoints = []+                          })+                     (TyVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DsStrictData.hs" 10 22 10 23+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DsStrictData.hs" 10 22 10 23+                             , srcInfoPoints = []+                             }+                           "b"))+                 ])+          ]+          []+      , GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 1 14 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 11 16 11 21+                , SrcSpan "tests/examples/DsStrictData.hs" 12 3 12 3+                , SrcSpan "tests/examples/DsStrictData.hs" 14 1 14 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 1 11 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 6 11 15+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 6 11 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 6 11 13+                     , srcInfoPoints = []+                     }+                   "Strict3"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DsStrictData.hs" 11 14 11 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DsStrictData.hs" 11 14 11 15+                     , srcInfoPoints = []+                     }+                   "c")))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 3 12 23+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DsStrictData.hs" 12 6 12 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 3 12 5+                   , srcInfoPoints = []+                   }+                 "S3")+              Nothing+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 9 12 23+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DsStrictData.hs" 12 11 12 13 ]+                   }+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 9 12 10+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 9 12 10+                         , srcInfoPoints = []+                         }+                       "c"))+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DsStrictData.hs" 12 14 12 23+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DsStrictData.hs" 12 14 12 21+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 12 14 12 21+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 12 14 12 21+                               , srcInfoPoints = []+                               }+                             "Strict3")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DsStrictData.hs" 12 22 12 23+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 12 22 12 23+                            , srcInfoPoints = []+                            }+                          "c"))))+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 14 1 14 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 14 14 14 15 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 14 1 14 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 14 6 14 13+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 14 6 14 13+                  , srcInfoPoints = []+                  }+                "UStrict"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DsStrictData.hs" 14 16 14 37+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DsStrictData.hs" 14 16 14 37+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DsStrictData.hs" 14 16 14 18+                      , srcInfoPoints = []+                      }+                    "US")+                 [ TyBang+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DsStrictData.hs" 14 19 14 37+                       , srcInfoPoints = []+                       }+                     (NoStrictAnnot+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+                          , srcInfoPoints = []+                          })+                     (Unpack+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DsStrictData.hs" 14 19 14 33+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/DsStrictData.hs" 14 19 14 29+                              , SrcSpan "tests/examples/DsStrictData.hs" 14 30 14 33+                              ]+                          })+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DsStrictData.hs" 14 34 14 37+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DsStrictData.hs" 14 34 14 37+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/DsStrictData.hs" 14 34 14 37+                                , srcInfoPoints = []+                                }+                              "Int")))+                 ])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 1 16 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 16 13 16 14 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 1 16 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 6 16 12+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 6 16 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 6 16 10+                     , srcInfoPoints = []+                     }+                   "Lazy"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DsStrictData.hs" 16 11 16 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DsStrictData.hs" 16 11 16 12+                     , srcInfoPoints = []+                     }+                   "d")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/DsStrictData.hs" 16 15 16 19+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/DsStrictData.hs" 16 15 16 19+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DsStrictData.hs" 16 15 16 16+                      , srcInfoPoints = []+                      }+                    "L")+                 [ TyBang+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DsStrictData.hs" 16 17 16 19+                       , srcInfoPoints = []+                       }+                     (LazyTy+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DsStrictData.hs" 16 17 16 18+                          , srcInfoPoints = []+                          })+                     (NoUnpackPragma+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+                          , srcInfoPoints = []+                          })+                     (TyVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/DsStrictData.hs" 16 18 16 19+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/DsStrictData.hs" 16 18 16 19+                             , srcInfoPoints = []+                             }+                           "d"))+                 ])+          ]+          []+      , GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 1 20 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 17 14 17 19+                , SrcSpan "tests/examples/DsStrictData.hs" 18 3 18 3+                , SrcSpan "tests/examples/DsStrictData.hs" 20 1 20 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 1 17 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 6 17 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 6 17 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 6 17 11+                     , srcInfoPoints = []+                     }+                   "Lazy2"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DsStrictData.hs" 17 12 17 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DsStrictData.hs" 17 12 17 13+                     , srcInfoPoints = []+                     }+                   "e")))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 3 18 22+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/DsStrictData.hs" 18 6 18 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 3 18 5+                   , srcInfoPoints = []+                   }+                 "L2")+              Nothing+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 9 18 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DsStrictData.hs" 18 12 18 14 ]+                   }+                 (TyBang+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 9 18 11+                      , srcInfoPoints = []+                      }+                    (LazyTy+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 9 18 10+                         , srcInfoPoints = []+                         })+                    (NoUnpackPragma+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+                         , srcInfoPoints = []+                         })+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DsStrictData.hs" 18 10 18 11+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 18 10 18 11+                            , srcInfoPoints = []+                            }+                          "e")))+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/DsStrictData.hs" 18 15 18 22+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DsStrictData.hs" 18 15 18 20+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 18 15 18 20+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 18 15 18 20+                               , srcInfoPoints = []+                               }+                             "Lazy2")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DsStrictData.hs" 18 21 18 22+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 18 21 18 22+                            , srcInfoPoints = []+                            }+                          "e"))))+          ]+          []+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 1 20 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 20 6 20 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 1 20 5+                , srcInfoPoints = []+                }+              "main"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 9 20 14+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 9 20 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 9 20 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 9 20 11+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 13+                      , SrcSpan "tests/examples/DsStrictData.hs" 20 13 20 14+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 13+                         , SrcSpan "tests/examples/DsStrictData.hs" 20 13 20 14+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 13+                            , SrcSpan "tests/examples/DsStrictData.hs" 20 13 20 14+                            ]+                        }))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 21 1 29 42+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 21 1 21 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 21 1 21 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 21 6 29 42+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DsStrictData.hs" 21 6 21 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 3 29 42+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/DsStrictData.hs" 22 3 22 5+                      , SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 6+                      , SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 6+                      , SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 6+                      , SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 6+                      , SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 6+                      , SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 6+                      , SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 6+                      , SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 6+                      , SrcSpan "tests/examples/DsStrictData.hs" 34 1 34 0+                      ]+                  }+                [ Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 33+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 33+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 11+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 22 12 22 33+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 22 12 22 13+                                , SrcSpan "tests/examples/DsStrictData.hs" 22 32 22 33+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 22 13 22 32+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 22 13 22 21+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 22 13 22 21+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 22 13 22 21+                                        , srcInfoPoints = []+                                        }+                                      "isBottom")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 22 22 22 32+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DsStrictData.hs" 22 22 22 23+                                      , SrcSpan "tests/examples/DsStrictData.hs" 22 31 22 32+                                      ]+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 22 23 22 31+                                     , srcInfoPoints = []+                                     }+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 22 23 22 24+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 22 23 22 24+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 22 23 22 24+                                              , srcInfoPoints = []+                                              }+                                            "S")))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 22 25 22 31+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 22 25 22 31+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 22 25 22 31+                                              , srcInfoPoints = []+                                              }+                                            "bottom"))))))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 34+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 34+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 11+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 23 12 23 34+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 23 12 23 13+                                , SrcSpan "tests/examples/DsStrictData.hs" 23 33 23 34+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 23 13 23 33+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 23 13 23 21+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 23 13 23 21+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 23 13 23 21+                                        , srcInfoPoints = []+                                        }+                                      "isBottom")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 23 22 23 33+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DsStrictData.hs" 23 22 23 23+                                      , SrcSpan "tests/examples/DsStrictData.hs" 23 32 23 33+                                      ]+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 23 23 23 32+                                     , srcInfoPoints = []+                                     }+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 23 23 23 25+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 23 23 23 25+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 23 23 23 25+                                              , srcInfoPoints = []+                                              }+                                            "S2")))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 23 26 23 32+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 23 26 23 32+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 23 26 23 32+                                              , srcInfoPoints = []+                                              }+                                            "bottom"))))))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 34+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 34+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 11+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 24 12 24 34+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 24 12 24 13+                                , SrcSpan "tests/examples/DsStrictData.hs" 24 33 24 34+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 24 13 24 33+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 24 13 24 21+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 24 13 24 21+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 24 13 24 21+                                        , srcInfoPoints = []+                                        }+                                      "isBottom")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 24 22 24 33+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DsStrictData.hs" 24 22 24 23+                                      , SrcSpan "tests/examples/DsStrictData.hs" 24 32 24 33+                                      ]+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 24 23 24 32+                                     , srcInfoPoints = []+                                     }+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 24 23 24 25+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 24 23 24 25+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 24 23 24 25+                                              , srcInfoPoints = []+                                              }+                                            "US")))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 24 26 24 32+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 24 26 24 32+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 24 26 24 32+                                              , srcInfoPoints = []+                                              }+                                            "bottom"))))))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 34+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 34+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 11+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 25 12 25 34+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 25 12 25 13+                                , SrcSpan "tests/examples/DsStrictData.hs" 25 33 25 34+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 25 13 25 33+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 25 13 25 21+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 25 13 25 21+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 25 13 25 21+                                        , srcInfoPoints = []+                                        }+                                      "isBottom")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 25 22 25 33+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DsStrictData.hs" 25 22 25 23+                                      , SrcSpan "tests/examples/DsStrictData.hs" 25 32 25 33+                                      ]+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 25 23 25 32+                                     , srcInfoPoints = []+                                     }+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 25 23 25 25+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 25 23 25 25+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 25 23 25 25+                                              , srcInfoPoints = []+                                              }+                                            "S3")))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 25 26 25 32+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 25 26 25 32+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 25 26 25 32+                                              , srcInfoPoints = []+                                              }+                                            "bottom"))))))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 17+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 17+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 14+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 14+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 14+                                  , srcInfoPoints = []+                                  }+                                "putStrLn")))+                       (Lit+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 26 15 26 17+                            , srcInfoPoints = []+                            }+                          (String+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 26 15 26 17+                               , srcInfoPoints = []+                               }+                             ""+                             "")))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 39+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 39+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 11+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 27 12 27 39+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 27 12 27 13+                                , SrcSpan "tests/examples/DsStrictData.hs" 27 38 27 39+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 27 13 27 38+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 27 13 27 16+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 27 13 27 16+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 27 13 27 16+                                        , srcInfoPoints = []+                                        }+                                      "not")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 27 17 27 38+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DsStrictData.hs" 27 17 27 18+                                      , SrcSpan "tests/examples/DsStrictData.hs" 27 37 27 38+                                      ]+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 27 18 27 37+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 27 18 27 26+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 27 18 27 26+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 27 18 27 26+                                              , srcInfoPoints = []+                                              }+                                            "isBottom")))+                                   (Paren+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 27 27 27 37+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DsStrictData.hs" 27 27 27 28+                                            , SrcSpan "tests/examples/DsStrictData.hs" 27 36 27 37+                                            ]+                                        }+                                      (App+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 27 28 27 36+                                           , srcInfoPoints = []+                                           }+                                         (Con+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 27 28 27 29+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DsStrictData.hs" 27 28 27 29+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DsStrictData.hs"+                                                          27+                                                          28+                                                          27+                                                          29+                                                    , srcInfoPoints = []+                                                    }+                                                  "L")))+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 27 30 27 36+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DsStrictData.hs" 27 30 27 36+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DsStrictData.hs"+                                                          27+                                                          30+                                                          27+                                                          36+                                                    , srcInfoPoints = []+                                                    }+                                                  "bottom"))))))))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 40+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 40+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 11+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 28 12 28 40+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 28 12 28 13+                                , SrcSpan "tests/examples/DsStrictData.hs" 28 39 28 40+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 28 13 28 39+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 28 13 28 16+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 28 13 28 16+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 28 13 28 16+                                        , srcInfoPoints = []+                                        }+                                      "not")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 28 17 28 39+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DsStrictData.hs" 28 17 28 18+                                      , SrcSpan "tests/examples/DsStrictData.hs" 28 38 28 39+                                      ]+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 28 18 28 38+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 28 18 28 26+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 28 18 28 26+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 28 18 28 26+                                              , srcInfoPoints = []+                                              }+                                            "isBottom")))+                                   (Paren+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 28 27 28 38+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DsStrictData.hs" 28 27 28 28+                                            , SrcSpan "tests/examples/DsStrictData.hs" 28 37 28 38+                                            ]+                                        }+                                      (App+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 28 28 28 37+                                           , srcInfoPoints = []+                                           }+                                         (Con+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 28 28 28 30+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DsStrictData.hs" 28 28 28 30+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DsStrictData.hs"+                                                          28+                                                          28+                                                          28+                                                          30+                                                    , srcInfoPoints = []+                                                    }+                                                  "L2")))+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 28 31 28 37+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DsStrictData.hs" 28 31 28 37+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DsStrictData.hs"+                                                          28+                                                          31+                                                          28+                                                          37+                                                    , srcInfoPoints = []+                                                    }+                                                  "bottom"))))))))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 42+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 42+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 11+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 29 12 29 42+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 29 12 29 13+                                , SrcSpan "tests/examples/DsStrictData.hs" 29 41 29 42+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 29 13 29 41+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 29 13 29 16+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 29 13 29 16+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 29 13 29 16+                                        , srcInfoPoints = []+                                        }+                                      "not")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 29 17 29 41+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/DsStrictData.hs" 29 17 29 18+                                      , SrcSpan "tests/examples/DsStrictData.hs" 29 40 29 41+                                      ]+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 29 18 29 40+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 29 18 29 26+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 29 18 29 26+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 29 18 29 26+                                              , srcInfoPoints = []+                                              }+                                            "isBottom")))+                                   (Paren+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 29 27 29 40+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/DsStrictData.hs" 29 27 29 28+                                            , SrcSpan "tests/examples/DsStrictData.hs" 29 39 29 40+                                            ]+                                        }+                                      (App+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 29 28 29 39+                                           , srcInfoPoints = []+                                           }+                                         (Con+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 29 28 29 32+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DsStrictData.hs" 29 28 29 32+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DsStrictData.hs"+                                                          29+                                                          28+                                                          29+                                                          32+                                                    , srcInfoPoints = []+                                                    }+                                                  "Just")))+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/DsStrictData.hs" 29 33 29 39+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/DsStrictData.hs" 29 33 29 39+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/DsStrictData.hs"+                                                          29+                                                          33+                                                          29+                                                          39+                                                    , srcInfoPoints = []+                                                    }+                                                  "bottom"))))))))))+                ]))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 34 1 34 12+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 34 8 34 10 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 34 1 34 7+                , srcInfoPoints = []+                }+              "bottom"+          ]+          (TyVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DsStrictData.hs" 34 11 34 12+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DsStrictData.hs" 34 11 34 12+                  , srcInfoPoints = []+                  }+                "a"))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 35 1 35 21+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 35 1 35 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 35 1 35 7+                  , srcInfoPoints = []+                  }+                "bottom"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 35 8 35 21+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DsStrictData.hs" 35 8 35 9 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DsStrictData.hs" 35 10 35 21+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DsStrictData.hs" 35 10 35 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DsStrictData.hs" 35 10 35 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/DsStrictData.hs" 35 10 35 15+                           , srcInfoPoints = []+                           }+                         "error")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DsStrictData.hs" 35 16 35 21+                     , srcInfoPoints = []+                     }+                   (String+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DsStrictData.hs" 35 16 35 21+                        , srcInfoPoints = []+                        }+                      "_|_"+                      "_|_"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 37 1 37 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/DsStrictData.hs" 37 10 37 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 37 1 37 9+                , srcInfoPoints = []+                }+              "isBottom"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/DsStrictData.hs" 37 13 37 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/DsStrictData.hs" 37 15 37 17 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DsStrictData.hs" 37 13 37 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DsStrictData.hs" 37 13 37 14+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/DsStrictData.hs" 37 18 37 22+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/DsStrictData.hs" 37 18 37 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/DsStrictData.hs" 37 18 37 22+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 1 48 6+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 1 48 6+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 1 38 9+                   , srcInfoPoints = []+                   }+                 "isBottom")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/DsStrictData.hs" 38 10 38 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/DsStrictData.hs" 38 10 38 11+                       , srcInfoPoints = []+                       }+                     "f")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 12 48 6+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/DsStrictData.hs" 38 12 38 13 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 14 48 6+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DsStrictData.hs" 38 14 38 29+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 38 14 38 29+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 38 14 38 29+                               , srcInfoPoints = []+                               }+                             "unsafePerformIO")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/DsStrictData.hs" 38 30 38 31+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 38 30 38 31+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 38 30 38 31+                               , srcInfoPoints = []+                               }+                             "$")))+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 39 3 48 6+                         , srcInfoPoints = []+                         }+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 39 3 39 33+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 39 3 39 4+                                , SrcSpan "tests/examples/DsStrictData.hs" 39 32 39 33+                                ]+                            }+                          (InfixApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 32+                               , srcInfoPoints = []+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 16+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 14+                                     , srcInfoPoints = []+                                     }+                                   (Qual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 14+                                        , srcInfoPoints = []+                                        }+                                      (ModuleName+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 14+                                           , srcInfoPoints = []+                                           }+                                         "E")+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 14+                                           , srcInfoPoints = []+                                           }+                                         "evaluate")))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 39 15 39 16+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 39 15 39 16+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 39 15 39 16+                                           , srcInfoPoints = []+                                           }+                                         "f"))))+                             (QVarOp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 39 17 39 19+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 39 17 39 19+                                     , srcInfoPoints = []+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 39 17 39 19+                                        , srcInfoPoints = []+                                        }+                                      ">>")))+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 39 20 39 32+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 39 20 39 26+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 39 20 39 26+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 39 20 39 26+                                           , srcInfoPoints = []+                                           }+                                         "return")))+                                (Con+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/DsStrictData.hs" 39 27 39 32+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/DsStrictData.hs" 39 27 39 32+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/DsStrictData.hs" 39 27 39 32+                                           , srcInfoPoints = []+                                           }+                                         "False"))))))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/DsStrictData.hs" 39 34 39 45+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 39 34 39 35+                                , SrcSpan "tests/examples/DsStrictData.hs" 39 35 39 44+                                , SrcSpan "tests/examples/DsStrictData.hs" 39 44 39 45+                                ]+                            }+                          (Qual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/DsStrictData.hs" 39 34 39 45+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/DsStrictData.hs" 39 34 39 35+                                   , SrcSpan "tests/examples/DsStrictData.hs" 39 35 39 44+                                   , SrcSpan "tests/examples/DsStrictData.hs" 39 44 39 45+                                   ]+                               }+                             (ModuleName+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 39 35 39 44+                                  , srcInfoPoints = []+                                  }+                                "E")+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/DsStrictData.hs" 39 35 39 44+                                  , srcInfoPoints = []+                                  }+                                "catches")))+                       (List+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 40 5 48 6+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/DsStrictData.hs" 40 5 40 6+                                , SrcSpan "tests/examples/DsStrictData.hs" 41 5 41 6+                                , SrcSpan "tests/examples/DsStrictData.hs" 42 5 42 6+                                , SrcSpan "tests/examples/DsStrictData.hs" 43 5 43 6+                                , SrcSpan "tests/examples/DsStrictData.hs" 44 5 44 6+                                , SrcSpan "tests/examples/DsStrictData.hs" 45 5 45 6+                                , SrcSpan "tests/examples/DsStrictData.hs" 46 5 46 6+                                , SrcSpan "tests/examples/DsStrictData.hs" 47 5 47 6+                                , SrcSpan "tests/examples/DsStrictData.hs" 48 5 48 6+                                ]+                            }+                          [ App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 60+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 16+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 16+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 16+                                         , srcInfoPoints = []+                                         }+                                       "E")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 16+                                         , srcInfoPoints = []+                                         }+                                       "Handler")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 40 17 40 60+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DsStrictData.hs" 40 17 40 18+                                       , SrcSpan "tests/examples/DsStrictData.hs" 40 59 40 60+                                       ]+                                   }+                                 (Lambda+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 40 18 40 59+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DsStrictData.hs" 40 18 40 19+                                          , SrcSpan "tests/examples/DsStrictData.hs" 40 45 40 47+                                          ]+                                      }+                                    [ PParen+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DsStrictData.hs" 40 19 40 42+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/DsStrictData.hs" 40 19 40 20+                                              , SrcSpan "tests/examples/DsStrictData.hs" 40 41 40 42+                                              ]+                                          }+                                        (PatTypeSig+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DsStrictData.hs" 40 20 40 41+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/DsStrictData.hs" 40 22 40 24+                                                 ]+                                             }+                                           (PWildCard+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 40 20 40 21+                                                , srcInfoPoints = []+                                                })+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 40 25 40 41+                                                , srcInfoPoints = []+                                                }+                                              (Qual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DsStrictData.hs"+                                                         40+                                                         25+                                                         40+                                                         41+                                                   , srcInfoPoints = []+                                                   }+                                                 (ModuleName+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            40+                                                            25+                                                            40+                                                            41+                                                      , srcInfoPoints = []+                                                      }+                                                    "E")+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            40+                                                            25+                                                            40+                                                            41+                                                      , srcInfoPoints = []+                                                      }+                                                    "ArrayException"))))+                                    ]+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 40 48 40 59+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 40 48 40 54+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 40 48 40 54+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 40 48 40 54+                                                  , srcInfoPoints = []+                                                  }+                                                "return")))+                                       (Con+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 40 55 40 59+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 40 55 40 59+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 40 55 40 59+                                                  , srcInfoPoints = []+                                                  }+                                                "True"))))))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 60+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 16+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 16+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 16+                                         , srcInfoPoints = []+                                         }+                                       "E")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 16+                                         , srcInfoPoints = []+                                         }+                                       "Handler")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 41 17 41 60+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DsStrictData.hs" 41 17 41 18+                                       , SrcSpan "tests/examples/DsStrictData.hs" 41 59 41 60+                                       ]+                                   }+                                 (Lambda+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 41 18 41 59+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DsStrictData.hs" 41 18 41 19+                                          , SrcSpan "tests/examples/DsStrictData.hs" 41 45 41 47+                                          ]+                                      }+                                    [ PParen+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DsStrictData.hs" 41 19 41 37+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/DsStrictData.hs" 41 19 41 20+                                              , SrcSpan "tests/examples/DsStrictData.hs" 41 36 41 37+                                              ]+                                          }+                                        (PatTypeSig+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DsStrictData.hs" 41 20 41 36+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/DsStrictData.hs" 41 22 41 24+                                                 ]+                                             }+                                           (PWildCard+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 41 20 41 21+                                                , srcInfoPoints = []+                                                })+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 41 25 41 36+                                                , srcInfoPoints = []+                                                }+                                              (Qual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DsStrictData.hs"+                                                         41+                                                         25+                                                         41+                                                         36+                                                   , srcInfoPoints = []+                                                   }+                                                 (ModuleName+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            41+                                                            25+                                                            41+                                                            36+                                                      , srcInfoPoints = []+                                                      }+                                                    "E")+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            41+                                                            25+                                                            41+                                                            36+                                                      , srcInfoPoints = []+                                                      }+                                                    "ErrorCall"))))+                                    ]+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 41 48 41 59+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 41 48 41 54+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 41 48 41 54+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 41 48 41 54+                                                  , srcInfoPoints = []+                                                  }+                                                "return")))+                                       (Con+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 41 55 41 59+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 41 55 41 59+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 41 55 41 59+                                                  , srcInfoPoints = []+                                                  }+                                                "True"))))))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 60+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 16+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 16+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 16+                                         , srcInfoPoints = []+                                         }+                                       "E")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 16+                                         , srcInfoPoints = []+                                         }+                                       "Handler")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 42 17 42 60+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DsStrictData.hs" 42 17 42 18+                                       , SrcSpan "tests/examples/DsStrictData.hs" 42 59 42 60+                                       ]+                                   }+                                 (Lambda+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 42 18 42 59+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DsStrictData.hs" 42 18 42 19+                                          , SrcSpan "tests/examples/DsStrictData.hs" 42 45 42 47+                                          ]+                                      }+                                    [ PParen+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DsStrictData.hs" 42 19 42 41+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/DsStrictData.hs" 42 19 42 20+                                              , SrcSpan "tests/examples/DsStrictData.hs" 42 40 42 41+                                              ]+                                          }+                                        (PatTypeSig+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DsStrictData.hs" 42 20 42 40+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/DsStrictData.hs" 42 22 42 24+                                                 ]+                                             }+                                           (PWildCard+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 42 20 42 21+                                                , srcInfoPoints = []+                                                })+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 42 25 42 40+                                                , srcInfoPoints = []+                                                }+                                              (Qual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DsStrictData.hs"+                                                         42+                                                         25+                                                         42+                                                         40+                                                   , srcInfoPoints = []+                                                   }+                                                 (ModuleName+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            42+                                                            25+                                                            42+                                                            40+                                                      , srcInfoPoints = []+                                                      }+                                                    "E")+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            42+                                                            25+                                                            42+                                                            40+                                                      , srcInfoPoints = []+                                                      }+                                                    "NoMethodError"))))+                                    ]+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 42 48 42 59+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 42 48 42 54+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 42 48 42 54+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 42 48 42 54+                                                  , srcInfoPoints = []+                                                  }+                                                "return")))+                                       (Con+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 42 55 42 59+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 42 55 42 59+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 42 55 42 59+                                                  , srcInfoPoints = []+                                                  }+                                                "True"))))))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 60+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 16+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 16+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 16+                                         , srcInfoPoints = []+                                         }+                                       "E")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 16+                                         , srcInfoPoints = []+                                         }+                                       "Handler")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 43 17 43 60+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DsStrictData.hs" 43 17 43 18+                                       , SrcSpan "tests/examples/DsStrictData.hs" 43 59 43 60+                                       ]+                                   }+                                 (Lambda+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 43 18 43 59+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DsStrictData.hs" 43 18 43 19+                                          , SrcSpan "tests/examples/DsStrictData.hs" 43 45 43 47+                                          ]+                                      }+                                    [ PParen+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DsStrictData.hs" 43 19 43 42+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/DsStrictData.hs" 43 19 43 20+                                              , SrcSpan "tests/examples/DsStrictData.hs" 43 41 43 42+                                              ]+                                          }+                                        (PatTypeSig+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DsStrictData.hs" 43 20 43 41+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/DsStrictData.hs" 43 22 43 24+                                                 ]+                                             }+                                           (PWildCard+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 43 20 43 21+                                                , srcInfoPoints = []+                                                })+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 43 25 43 41+                                                , srcInfoPoints = []+                                                }+                                              (Qual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DsStrictData.hs"+                                                         43+                                                         25+                                                         43+                                                         41+                                                   , srcInfoPoints = []+                                                   }+                                                 (ModuleName+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            43+                                                            25+                                                            43+                                                            41+                                                      , srcInfoPoints = []+                                                      }+                                                    "E")+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            43+                                                            25+                                                            43+                                                            41+                                                      , srcInfoPoints = []+                                                      }+                                                    "NonTermination"))))+                                    ]+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 43 48 43 59+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 43 48 43 54+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 43 48 43 54+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 43 48 43 54+                                                  , srcInfoPoints = []+                                                  }+                                                "return")))+                                       (Con+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 43 55 43 59+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 43 55 43 59+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 43 55 43 59+                                                  , srcInfoPoints = []+                                                  }+                                                "True"))))))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 60+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 16+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 16+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 16+                                         , srcInfoPoints = []+                                         }+                                       "E")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 16+                                         , srcInfoPoints = []+                                         }+                                       "Handler")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 44 17 44 60+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DsStrictData.hs" 44 17 44 18+                                       , SrcSpan "tests/examples/DsStrictData.hs" 44 59 44 60+                                       ]+                                   }+                                 (Lambda+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 44 18 44 59+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DsStrictData.hs" 44 18 44 19+                                          , SrcSpan "tests/examples/DsStrictData.hs" 44 45 44 47+                                          ]+                                      }+                                    [ PParen+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DsStrictData.hs" 44 19 44 44+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/DsStrictData.hs" 44 19 44 20+                                              , SrcSpan "tests/examples/DsStrictData.hs" 44 43 44 44+                                              ]+                                          }+                                        (PatTypeSig+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DsStrictData.hs" 44 20 44 43+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/DsStrictData.hs" 44 22 44 24+                                                 ]+                                             }+                                           (PWildCard+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 44 20 44 21+                                                , srcInfoPoints = []+                                                })+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 44 25 44 43+                                                , srcInfoPoints = []+                                                }+                                              (Qual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DsStrictData.hs"+                                                         44+                                                         25+                                                         44+                                                         43+                                                   , srcInfoPoints = []+                                                   }+                                                 (ModuleName+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            44+                                                            25+                                                            44+                                                            43+                                                      , srcInfoPoints = []+                                                      }+                                                    "E")+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            44+                                                            25+                                                            44+                                                            43+                                                      , srcInfoPoints = []+                                                      }+                                                    "PatternMatchFail"))))+                                    ]+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 44 48 44 59+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 44 48 44 54+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 44 48 44 54+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 44 48 44 54+                                                  , srcInfoPoints = []+                                                  }+                                                "return")))+                                       (Con+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 44 55 44 59+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 44 55 44 59+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 44 55 44 59+                                                  , srcInfoPoints = []+                                                  }+                                                "True"))))))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 60+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 16+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 16+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 16+                                         , srcInfoPoints = []+                                         }+                                       "E")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 16+                                         , srcInfoPoints = []+                                         }+                                       "Handler")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 45 17 45 60+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DsStrictData.hs" 45 17 45 18+                                       , SrcSpan "tests/examples/DsStrictData.hs" 45 59 45 60+                                       ]+                                   }+                                 (Lambda+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 45 18 45 59+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DsStrictData.hs" 45 18 45 19+                                          , SrcSpan "tests/examples/DsStrictData.hs" 45 45 45 47+                                          ]+                                      }+                                    [ PParen+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DsStrictData.hs" 45 19 45 39+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/DsStrictData.hs" 45 19 45 20+                                              , SrcSpan "tests/examples/DsStrictData.hs" 45 38 45 39+                                              ]+                                          }+                                        (PatTypeSig+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DsStrictData.hs" 45 20 45 38+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/DsStrictData.hs" 45 22 45 24+                                                 ]+                                             }+                                           (PWildCard+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 45 20 45 21+                                                , srcInfoPoints = []+                                                })+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 45 25 45 38+                                                , srcInfoPoints = []+                                                }+                                              (Qual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DsStrictData.hs"+                                                         45+                                                         25+                                                         45+                                                         38+                                                   , srcInfoPoints = []+                                                   }+                                                 (ModuleName+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            45+                                                            25+                                                            45+                                                            38+                                                      , srcInfoPoints = []+                                                      }+                                                    "E")+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            45+                                                            25+                                                            45+                                                            38+                                                      , srcInfoPoints = []+                                                      }+                                                    "RecConError"))))+                                    ]+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 45 48 45 59+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 45 48 45 54+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 45 48 45 54+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 45 48 45 54+                                                  , srcInfoPoints = []+                                                  }+                                                "return")))+                                       (Con+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 45 55 45 59+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 45 55 45 59+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 45 55 45 59+                                                  , srcInfoPoints = []+                                                  }+                                                "True"))))))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 60+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 16+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 16+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 16+                                         , srcInfoPoints = []+                                         }+                                       "E")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 16+                                         , srcInfoPoints = []+                                         }+                                       "Handler")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 46 17 46 60+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DsStrictData.hs" 46 17 46 18+                                       , SrcSpan "tests/examples/DsStrictData.hs" 46 59 46 60+                                       ]+                                   }+                                 (Lambda+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 46 18 46 59+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DsStrictData.hs" 46 18 46 19+                                          , SrcSpan "tests/examples/DsStrictData.hs" 46 45 46 47+                                          ]+                                      }+                                    [ PParen+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DsStrictData.hs" 46 19 46 39+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/DsStrictData.hs" 46 19 46 20+                                              , SrcSpan "tests/examples/DsStrictData.hs" 46 38 46 39+                                              ]+                                          }+                                        (PatTypeSig+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DsStrictData.hs" 46 20 46 38+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/DsStrictData.hs" 46 22 46 24+                                                 ]+                                             }+                                           (PWildCard+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 46 20 46 21+                                                , srcInfoPoints = []+                                                })+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 46 25 46 38+                                                , srcInfoPoints = []+                                                }+                                              (Qual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DsStrictData.hs"+                                                         46+                                                         25+                                                         46+                                                         38+                                                   , srcInfoPoints = []+                                                   }+                                                 (ModuleName+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            46+                                                            25+                                                            46+                                                            38+                                                      , srcInfoPoints = []+                                                      }+                                                    "E")+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            46+                                                            25+                                                            46+                                                            38+                                                      , srcInfoPoints = []+                                                      }+                                                    "RecSelError"))))+                                    ]+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 46 48 46 59+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 46 48 46 54+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 46 48 46 54+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 46 48 46 54+                                                  , srcInfoPoints = []+                                                  }+                                                "return")))+                                       (Con+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 46 55 46 59+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 46 55 46 59+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 46 55 46 59+                                                  , srcInfoPoints = []+                                                  }+                                                "True"))))))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 60+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 16+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 16+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 16+                                         , srcInfoPoints = []+                                         }+                                       "E")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 16+                                         , srcInfoPoints = []+                                         }+                                       "Handler")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/DsStrictData.hs" 47 17 47 60+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/DsStrictData.hs" 47 17 47 18+                                       , SrcSpan "tests/examples/DsStrictData.hs" 47 59 47 60+                                       ]+                                   }+                                 (Lambda+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/DsStrictData.hs" 47 18 47 59+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/DsStrictData.hs" 47 18 47 19+                                          , SrcSpan "tests/examples/DsStrictData.hs" 47 45 47 47+                                          ]+                                      }+                                    [ PParen+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/DsStrictData.hs" 47 19 47 39+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/DsStrictData.hs" 47 19 47 20+                                              , SrcSpan "tests/examples/DsStrictData.hs" 47 38 47 39+                                              ]+                                          }+                                        (PatTypeSig+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/DsStrictData.hs" 47 20 47 38+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/DsStrictData.hs" 47 22 47 24+                                                 ]+                                             }+                                           (PWildCard+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 47 20 47 21+                                                , srcInfoPoints = []+                                                })+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/DsStrictData.hs" 47 25 47 38+                                                , srcInfoPoints = []+                                                }+                                              (Qual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/DsStrictData.hs"+                                                         47+                                                         25+                                                         47+                                                         38+                                                   , srcInfoPoints = []+                                                   }+                                                 (ModuleName+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            47+                                                            25+                                                            47+                                                            38+                                                      , srcInfoPoints = []+                                                      }+                                                    "E")+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/DsStrictData.hs"+                                                            47+                                                            25+                                                            47+                                                            38+                                                      , srcInfoPoints = []+                                                      }+                                                    "RecUpdError"))))+                                    ]+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/DsStrictData.hs" 47 48 47 59+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 47 48 47 54+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 47 48 47 54+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 47 48 47 54+                                                  , srcInfoPoints = []+                                                  }+                                                "return")))+                                       (Con+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/DsStrictData.hs" 47 55 47 59+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/DsStrictData.hs" 47 55 47 59+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/DsStrictData.hs" 47 55 47 59+                                                  , srcInfoPoints = []+                                                  }+                                                "True"))))))+                          ]))))+              Nothing+          ]+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/DsStrictData.hs" 3 1 3 43)+        " | Tests the StrictData LANGUAGE pragma."+    , Comment+        False+        (SrcSpan "tests/examples/DsStrictData.hs" 29 43 29 58)+        " sanity check"+    , Comment+        False+        (SrcSpan "tests/examples/DsStrictData.hs" 31 1 31 73)+        "----------------------------------------------------------------------"+    , Comment+        False+        (SrcSpan "tests/examples/DsStrictData.hs" 32 1 32 34)+        " Support for testing for bottom"+    ]+  )
+ tests/examples/DsStrictData.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DsStrictData.hs.prettyprinter.golden view
@@ -0,0 +1,45 @@+{-# LANGUAGE ScopedTypeVariables, StrictData, GADTs #-}+module Main where+import qualified Control.Exception as E+import System.IO.Unsafe (unsafePerformIO)++data Strict a = S a++data Strict2 b = S2 !b++data Strict3 c where+        S3 :: c -> Strict3 c++data UStrict = US {-# UNPACK #-} Int++data Lazy d = L ~d++data Lazy2 e where+        L2 :: ~e -> Lazy2 e++main :: IO ()+main+  = do print (isBottom (S bottom))+       print (isBottom (S2 bottom))+       print (isBottom (US bottom))+       print (isBottom (S3 bottom))+       putStrLn ""+       print (not (isBottom (L bottom)))+       print (not (isBottom (L2 bottom)))+       print (not (isBottom (Just bottom)))++bottom :: a+bottom = error "_|_"++isBottom :: a -> Bool+isBottom f+  = unsafePerformIO $+      (E.evaluate f >> return False) `E.catches`+        [E.Handler (\ (_ :: E.ArrayException) -> return True),+         E.Handler (\ (_ :: E.ErrorCall) -> return True),+         E.Handler (\ (_ :: E.NoMethodError) -> return True),+         E.Handler (\ (_ :: E.NonTermination) -> return True),+         E.Handler (\ (_ :: E.PatternMatchFail) -> return True),+         E.Handler (\ (_ :: E.RecConError) -> return True),+         E.Handler (\ (_ :: E.RecSelError) -> return True),+         E.Handler (\ (_ :: E.RecUpdError) -> return True)]
+ tests/examples/EmptyAnn.hs view
@@ -0,0 +1,1 @@+{-# ANN foo "Hlint: ignore Test4" #-}
+ tests/examples/EmptyAnn.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyAnn.hs.parser.golden view
@@ -0,0 +1,49 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 1 2 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/EmptyAnn.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyAnn.hs" 2 1 2 1+            , SrcSpan "tests/examples/EmptyAnn.hs" 2 1 2 1+            , SrcSpan "tests/examples/EmptyAnn.hs" 2 1 2 1+            , SrcSpan "tests/examples/EmptyAnn.hs" 2 1 2 1+            ]+        }+      Nothing+      [ AnnModulePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 1 1 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EmptyAnn.hs" 1 1 1 8+                , SrcSpan "tests/examples/EmptyAnn.hs" 1 35 1 38+                ]+            }+          (Ann+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 9 1 34+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 9 1 12+                  , srcInfoPoints = []+                  }+                "foo")+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 13 1 34+                  , srcInfoPoints = []+                  }+                (String+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 13 1 34+                     , srcInfoPoints = []+                     }+                   "Hlint: ignore Test4"+                   "Hlint: ignore Test4")))+      ]+      []+      []+  , []+  )
+ tests/examples/EmptyAnn.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyAnn.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+{-# ANN foo "Hlint: ignore Test4" #-}
+ tests/examples/EmptyCase.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE EmptyCase #-}+{-# LANGUAGE LambdaCase #-}++f x = case x of {}++g x = \case {}
+ tests/examples/EmptyCase.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyCase.hs.parser.golden view
@@ -0,0 +1,159 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/EmptyCase.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyCase.hs" 2 1 2 1+            , SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 1+            , SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 1+            , SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 1+            , SrcSpan "tests/examples/EmptyCase.hs" 6 1 6 1+            , SrcSpan "tests/examples/EmptyCase.hs" 7 1 7 1+            , SrcSpan "tests/examples/EmptyCase.hs" 7 1 7 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 1 1 1 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EmptyCase.hs" 1 1 1 13+                , SrcSpan "tests/examples/EmptyCase.hs" 1 24 1 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "EmptyCase"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 2 1 2 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EmptyCase.hs" 2 1 2 13+                , SrcSpan "tests/examples/EmptyCase.hs" 2 25 2 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 2 14 2 24+                , srcInfoPoints = []+                }+              "LambdaCase"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 19+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 19+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 3 4 4+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 3 4 4+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 5 4 19+                   , srcInfoPoints = [ SrcSpan "tests/examples/EmptyCase.hs" 4 5 4 6 ]+                   }+                 (Case+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 7 4 19+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/EmptyCase.hs" 4 7 4 11+                          , SrcSpan "tests/examples/EmptyCase.hs" 4 14 4 16+                          , SrcSpan "tests/examples/EmptyCase.hs" 4 17 4 18+                          , SrcSpan "tests/examples/EmptyCase.hs" 4 18 4 19+                          ]+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 12 4 13+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 12 4 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 12 4 13+                               , srcInfoPoints = []+                               }+                             "x")))+                    []))+              Nothing+          ]+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 1 6 15+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 1 6 15+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 1 6 2+                   , srcInfoPoints = []+                   }+                 "g")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 3 6 4+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 3 6 4+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 5 6 15+                   , srcInfoPoints = [ SrcSpan "tests/examples/EmptyCase.hs" 6 5 6 6 ]+                   }+                 (LCase+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 7 6 15+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/EmptyCase.hs" 6 7 6 8+                          , SrcSpan "tests/examples/EmptyCase.hs" 6 8 6 12+                          , SrcSpan "tests/examples/EmptyCase.hs" 6 13 6 14+                          , SrcSpan "tests/examples/EmptyCase.hs" 6 14 6 15+                          ]+                      }+                    []))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/EmptyCase.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyCase.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE EmptyCase #-}+{-# LANGUAGE LambdaCase #-}+f x = case x of { }+g x = \case { }
+ tests/examples/EmptyContext.hs view
@@ -0,0 +1,1 @@+happyThen :: () => P a
+ tests/examples/EmptyContext.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyContext.hs.parser.golden view
@@ -0,0 +1,79 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 1 2 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyContext.hs" 2 1 2 1+            , SrcSpan "tests/examples/EmptyContext.hs" 2 1 2 1+            ]+        }+      Nothing+      []+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EmptyContext.hs" 1 11 1 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 10+                , srcInfoPoints = []+                }+              "happyThen"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 14 1 23+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxEmpty+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 14 1 19+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/EmptyContext.hs" 1 14 1 15+                         , SrcSpan "tests/examples/EmptyContext.hs" 1 15 1 16+                         , SrcSpan "tests/examples/EmptyContext.hs" 1 17 1 19+                         ]+                     }))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 20 1 23+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 20 1 21+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 20 1 21+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 20 1 21+                           , srcInfoPoints = []+                           }+                         "P")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 22 1 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 22 1 23+                        , srcInfoPoints = []+                        }+                      "a"))))+      ]+  , []+  )
+ tests/examples/EmptyContext.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyContext.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+happyThen :: () => P a
+ tests/examples/EmptyFunDepPremise.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE FunctionalDependencies #-}+module EmptyFunDepPremise where++class C a | -> a
+ tests/examples/EmptyFunDepPremise.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyFunDepPremise.hs.parser.golden view
@@ -0,0 +1,115 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 1 2 1+            , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 1 2 1+            , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 1 4 1+            , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 5 1 5 1+            , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 1 2 32+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 1 2 7+                  , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 27 2 32+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 8 2 26+                 , srcInfoPoints = []+                 }+               "EmptyFunDepPremise")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 1 1 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 1 1 13+                , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 37 1 40+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 14 1 36+                , srcInfoPoints = []+                }+              "FunctionalDependencies"+          ]+      ]+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 1 4 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 1 4 6+                , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 11 4 12+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 7 4 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 7 4 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 7 4 8+                     , srcInfoPoints = []+                     }+                   "C"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 9 4 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 9 4 10+                     , srcInfoPoints = []+                     }+                   "a")))+          [ FunDep+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 13 4 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 13 4 15 ]+                }+              []+              [ Ident+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 16 4 17+                    , srcInfoPoints = []+                    }+                  "a"+              ]+          ]+          Nothing+      ]+  , []+  )
+ tests/examples/EmptyFunDepPremise.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyFunDepPremise.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE FunctionalDependencies #-}+module EmptyFunDepPremise where++class C a | -> a
+ tests/examples/EmptyInstance.hs view
@@ -0,0 +1,4 @@+instance Traversable Tree where++x :: Int+x = 1
+ tests/examples/EmptyInstance.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyInstance.hs.parser.golden view
@@ -0,0 +1,141 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/EmptyInstance.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyInstance.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyInstance.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 1+            , SrcSpan "tests/examples/EmptyInstance.hs" 4 1 4 1+            , SrcSpan "tests/examples/EmptyInstance.hs" 5 1 5 1+            , SrcSpan "tests/examples/EmptyInstance.hs" 5 1 5 1+            ]+        }+      Nothing+      []+      []+      [ InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 1 3 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EmptyInstance.hs" 1 1 1 9+                , SrcSpan "tests/examples/EmptyInstance.hs" 1 27 1 32+                , SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 1+                , SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 1+                , SrcSpan "tests/examples/EmptyInstance.hs" 3 0 3 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 26+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 26+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 21+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 21+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 21+                           , srcInfoPoints = []+                           }+                         "Traversable")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 22 1 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 22 1 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 22 1 26+                           , srcInfoPoints = []+                           }+                         "Tree")))))+          (Just [])+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 9+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EmptyInstance.hs" 3 3 3 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 2+                , srcInfoPoints = []+                }+              "x"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 6 3 9+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 6 3 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 6 3 9+                     , srcInfoPoints = []+                     }+                   "Int")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 1 4 6+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 1 4 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 1 4 2+                  , srcInfoPoints = []+                  }+                "x"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 3 4 6+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/EmptyInstance.hs" 4 3 4 4 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 5 4 6+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 5 4 6+                     , srcInfoPoints = []+                     }+                   1+                   "1")))+          Nothing+      ]+  , []+  )
+ tests/examples/EmptyInstance.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyInstance.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+instance Traversable Tree where++x :: Int+x = 1
+ tests/examples/EmptyList.hs view
@@ -0,0 +1,3 @@+module EmptyList where++eAttrs = []
+ tests/examples/EmptyList.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyList.hs.parser.golden view
@@ -0,0 +1,65 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/EmptyList.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyList.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyList.hs" 3 1 3 1+            , SrcSpan "tests/examples/EmptyList.hs" 4 1 4 1+            , SrcSpan "tests/examples/EmptyList.hs" 4 1 4 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 1 1 1 23+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/EmptyList.hs" 1 1 1 7+                  , SrcSpan "tests/examples/EmptyList.hs" 1 18 1 23+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 1 8 1 17+                 , srcInfoPoints = []+                 }+               "EmptyList")+            Nothing+            Nothing))+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 1 3 12+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 1 3 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 1 3 7+                  , srcInfoPoints = []+                  }+                "eAttrs"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 8 3 12+               , srcInfoPoints = [ SrcSpan "tests/examples/EmptyList.hs" 3 8 3 9 ]+               }+             (List+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 10 3 12+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/EmptyList.hs" 3 10 3 11+                      , SrcSpan "tests/examples/EmptyList.hs" 3 11 3 12+                      ]+                  }+                []))+          Nothing+      ]+  , []+  )
+ tests/examples/EmptyList.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyList.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module EmptyList where+eAttrs = []
+ tests/examples/EmptyWhere.hs view
@@ -0,0 +1,1 @@+foo = 5 where
+ tests/examples/EmptyWhere.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyWhere.hs.parser.golden view
@@ -0,0 +1,64 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 1 2 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 1+            , SrcSpan "tests/examples/EmptyWhere.hs" 2 1 2 1+            , SrcSpan "tests/examples/EmptyWhere.hs" 2 1 2 1+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 1 2 1+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EmptyWhere.hs" 1 9 1 14 ]+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 5 1 8+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/EmptyWhere.hs" 1 5 1 6 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 7 1 8+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 7 1 8+                     , srcInfoPoints = []+                     }+                   5+                   "5")))+          (Just+             (BDecls+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 2 0 2 1+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/EmptyWhere.hs" 2 1 2 1+                      , SrcSpan "tests/examples/EmptyWhere.hs" 2 1 2 1+                      , SrcSpan "tests/examples/EmptyWhere.hs" 2 0 2 0+                      ]+                  }+                []))+      ]+  , []+  )
+ tests/examples/EmptyWhere.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyWhere.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+foo = 5+  where
+ tests/examples/EqualityConstraints1.hs view
@@ -0,0 +1,5 @@+-- https://github.com/haskell-suite/haskell-src-exts/issues/91+{-# LANGUAGE GADTs #-}++one :: a ~ Int => a+one = 1
+ tests/examples/EqualityConstraints1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EqualityConstraints1.hs.parser.golden view
@@ -0,0 +1,178 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/EqualityConstraints1.hs" 2 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/EqualityConstraints1.hs" 2 1 2 1+            , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 1+            , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 1+            , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 1+            , SrcSpan "tests/examples/EqualityConstraints1.hs" 5 1 5 1+            , SrcSpan "tests/examples/EqualityConstraints1.hs" 6 1 6 1+            , SrcSpan "tests/examples/EqualityConstraints1.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/EqualityConstraints1.hs" 2 1 2 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EqualityConstraints1.hs" 2 1 2 13+                , SrcSpan "tests/examples/EqualityConstraints1.hs" 2 20 2 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/EqualityConstraints1.hs" 2 14 2 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 5 4 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 4+                , srcInfoPoints = []+                }+              "one"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 20+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11+                         , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18+                         ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11+                            , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18+                            ]+                        }+                      (TyEquals+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11+                               , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18+                               ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9+                                 , srcInfoPoints = []+                                 }+                               "a"))+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15+                                    , srcInfoPoints = []+                                    }+                                  "Int")))))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/EqualityConstraints1.hs" 4 19 4 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/EqualityConstraints1.hs" 4 19 4 20+                     , srcInfoPoints = []+                     }+                   "a")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/EqualityConstraints1.hs" 5 1 5 8+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/EqualityConstraints1.hs" 5 1 5 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/EqualityConstraints1.hs" 5 1 5 4+                  , srcInfoPoints = []+                  }+                "one"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/EqualityConstraints1.hs" 5 5 5 8+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/EqualityConstraints1.hs" 5 5 5 6 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/EqualityConstraints1.hs" 5 7 5 8+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/EqualityConstraints1.hs" 5 7 5 8+                     , srcInfoPoints = []+                     }+                   1+                   "1")))+          Nothing+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/EqualityConstraints1.hs" 1 1 1 63)+        " https://github.com/haskell-suite/haskell-src-exts/issues/91"+    ]+  )
+ tests/examples/EqualityConstraints1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EqualityConstraints1.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++one :: a ~ Int => a+one = 1
+ tests/examples/EqualityConstraints2.hs view
@@ -0,0 +1,2 @@+one :: a ~ Int => a+one = 1
+ tests/examples/EqualityConstraints2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/EqualityConstraints2.hs" 1 19) "At least one of TypeFamilies or GADTs language extensions needs to be enabled. Please add: {-# LANGUAGE TypeFamilies #-} or {-# LANGUAGE GADTs #-} language pragma at the top of your module."
+ tests/examples/EqualityConstraints2.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/EqualityConstraints2.hs" 1 19)+  "At least one of TypeFamilies or GADTs language extensions needs to be enabled. Please add: {-# LANGUAGE TypeFamilies #-} or {-# LANGUAGE GADTs #-} language pragma at the top of your module."
+ tests/examples/EqualityConstraints2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/EqualityConstraints2.hs" 1 19) "At least one of TypeFamilies or GADTs language extensions needs to be enabled. Please add: {-# LANGUAGE TypeFamilies #-} or {-# LANGUAGE GADTs #-} language pragma at the top of your module."
+ tests/examples/EqualityConstraints2.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/EqualityConstraints2.hs" 1 19) "At least one of TypeFamilies or GADTs language extensions needs to be enabled. Please add: {-# LANGUAGE TypeFamilies #-} or {-# LANGUAGE GADTs #-} language pragma at the top of your module."
+ tests/examples/ExplicitNamespaces1.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitNamespaces #-}+import Data.Array.Repa ( type (++) )+import Data.Array.Repa ( type {- comment here -} (++) )+import Data.Array.Repa (    type {- comment2 here -} (++)  {- and here -} )
+ tests/examples/ExplicitNamespaces1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces1.hs.parser.golden view
@@ -0,0 +1,237 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 1 1 1+            , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 1+            , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 1+            , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 1+            , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 1 3 1+            , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 1 4 1+            , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 5 1 5 1+            , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 1 1 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 1 1 13+                , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 33 1 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 14 1 32+                , srcInfoPoints = []+                }+              "ExplicitNamespaces"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 37+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 8 2 23+                  , srcInfoPoints = []+                  }+                "Data.Array.Repa"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 24 2 37+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 24 2 25+                         , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 36 2 37+                         ]+                     }+                   False+                   [ IAbs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 26 2 35+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 26 2 30+                             , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 31 2 35+                             ]+                         }+                       (TypeNamespace+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 26 2 30+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 26 2 30 ]+                            })+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 31 2 35+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 31 2 32+                                , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 32 2 34+                                , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 34 2 35+                                ]+                            }+                          "++")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 1 3 56+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 1 3 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 8 3 23+                  , srcInfoPoints = []+                  }+                "Data.Array.Repa"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 24 3 56+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 24 3 25+                         , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 55 3 56+                         ]+                     }+                   False+                   [ IAbs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 26 3 54+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 26 3 30+                             , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 50 3 54+                             ]+                         }+                       (TypeNamespace+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 26 3 30+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 26 3 30 ]+                            })+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 50 3 54+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 50 3 51+                                , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 51 3 53+                                , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 53 3 54+                                ]+                            }+                          "++")+                   ])+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 1 4 76+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 1 4 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 8 4 23+                  , srcInfoPoints = []+                  }+                "Data.Array.Repa"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 24 4 76+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 24 4 25+                         , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 75 4 76+                         ]+                     }+                   False+                   [ IAbs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 29 4 58+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 29 4 33+                             , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 54 4 58+                             ]+                         }+                       (TypeNamespace+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 29 4 33+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 29 4 33 ]+                            })+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 54 4 58+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 54 4 55+                                , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 55 4 57+                                , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 57 4 58+                                ]+                            }+                          "++")+                   ])+          }+      ]+      []+  , [ Comment+        True+        (SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 31 3 49)+        " comment here "+    , Comment+        True+        (SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 34 4 53)+        " comment2 here "+    , Comment+        True+        (SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 60 4 74)+        " and here "+    ]+  )
+ tests/examples/ExplicitNamespaces1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces1.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitNamespaces #-}+import Data.Array.Repa (type (++))+import Data.Array.Repa (type (++))+import Data.Array.Repa (type (++))
+ tests/examples/ExplicitNamespaces2.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitNamespaces #-}+module ExplicitNamespaces2 ( f, type (++) ) where++f = undefined
+ tests/examples/ExplicitNamespaces2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces2.hs.parser.golden view
@@ -0,0 +1,164 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 1 1 1+            , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 1 2 1+            , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 1 2 1+            , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 1 4 1+            , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 5 1 5 1+            , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 1 2 50+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 1 2 7+                  , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 45 2 50+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 8 2 27+                 , srcInfoPoints = []+                 }+               "ExplicitNamespaces2")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 28 2 44+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 28 2 29+                        , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 31 2 32+                        , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 43 2 44+                        ]+                    }+                  [ EVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 30 2 31+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 30 2 31+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 30 2 31+                              , srcInfoPoints = []+                              }+                            "f"))+                  , EAbs+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 33 2 42+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 33 2 37+                            , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 38 2 42+                            ]+                        }+                      (TypeNamespace+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 33 2 37+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 33 2 37 ]+                           })+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 38 2 42+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 38 2 39+                               , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 39 2 41+                               , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 41 2 42+                               ]+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 39 2 41+                              , srcInfoPoints = []+                              }+                            "++"))+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 1 1 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 1 1 13+                , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 33 1 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 14 1 32+                , srcInfoPoints = []+                }+              "ExplicitNamespaces"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 1 4 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 1 4 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 1 4 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 3 4 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 3 4 4 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 5 4 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 5 4 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 5 4 14+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      ]+  , []+  )
+ tests/examples/ExplicitNamespaces2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces2.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE ExplicitNamespaces #-}+module ExplicitNamespaces2 (f, type (++)) where+f = undefined
+ tests/examples/ExplicitNamespaces3.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE ExplicitNamespaces #-}++module Foo(type Str) where++data Str = Str
+ tests/examples/ExplicitNamespaces3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces3.hs.parser.golden view
@@ -0,0 +1,145 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 1 1 1+            , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 1 3 1+            , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 1 3 1+            , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 1 5 1+            , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 6 1 6 1+            , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 6 1 6 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 1 3 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 1 3 7+                  , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 22 3 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 8 3 11+                 , srcInfoPoints = []+                 }+               "Foo")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 11 3 21+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 11 3 12+                        , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 20 3 21+                        ]+                    }+                  [ EAbs+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 12 3 20+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 12 3 16+                            , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 17 3 20+                            ]+                        }+                      (TypeNamespace+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 12 3 16+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 12 3 16 ]+                           })+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 17 3 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 17 3 20+                              , srcInfoPoints = []+                              }+                            "Str"))+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 1 1 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 1 1 13+                , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 33 1 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 14 1 32+                , srcInfoPoints = []+                }+              "ExplicitNamespaces"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 1 5 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 10 5 11 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 1 5 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 6 5 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 6 5 9+                  , srcInfoPoints = []+                  }+                "Str"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 12 5 15+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 12 5 15+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 12 5 15+                      , srcInfoPoints = []+                      }+                    "Str")+                 [])+          ]+          []+      ]+  , []+  )
+ tests/examples/ExplicitNamespaces3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces3.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitNamespaces #-}+module Foo (type Str) where++data Str = Str
+ tests/examples/ExplicitNamespaces4.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE ExplicitNamespaces #-}+{-# LANGUAGE TypeOperators #-}+module Foo (type (:-)) where++data (:-) = Foo
+ tests/examples/ExplicitNamespaces4.hs.exactprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE ExplicitNamespaces #-}+{-# LANGUAGE TypeOperators #-}+module Foo (type (:-)) where++data :-   = Foo+
+ tests/examples/ExplicitNamespaces4.hs.parser.golden view
@@ -0,0 +1,171 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 1 1 1+            , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 1 2 1+            , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 1 3 1+            , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 1 3 1+            , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 1 5 1+            , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 6 1 6 1+            , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 6 1 6 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 1 3 29+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 1 3 7+                  , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 24 3 29+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 8 3 11+                 , srcInfoPoints = []+                 }+               "Foo")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 12 3 23+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 12 3 13+                        , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 22 3 23+                        ]+                    }+                  [ EAbs+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 13 3 22+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 13 3 17+                            , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 18 3 22+                            ]+                        }+                      (TypeNamespace+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 13 3 17+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 13 3 17 ]+                           })+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 18 3 22+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 18 3 19+                               , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 19 3 21+                               , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 21 3 22+                               ]+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 19 3 21+                              , srcInfoPoints = []+                              }+                            ":-"))+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 1 1 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 1 1 13+                , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 33 1 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 14 1 32+                , srcInfoPoints = []+                }+              "ExplicitNamespaces"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 1 2 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 1 2 13+                , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 28 2 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 14 2 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 1 5 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 11 5 12 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 1 5 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 6 5 10+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 6 5 7+                   , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 7 5 9+                   , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 9 5 10+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 7 5 9+                  , srcInfoPoints = []+                  }+                ":-"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 13 5 16+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 13 5 16+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 13 5 16+                      , srcInfoPoints = []+                      }+                    "Foo")+                 [])+          ]+          []+      ]+  , []+  )
+ tests/examples/ExplicitNamespaces4.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces4.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE ExplicitNamespaces #-}+{-# LANGUAGE TypeOperators #-}+module Foo (type (:-)) where++data (:-) = Foo
+ tests/examples/ExprHole.hs view
@@ -0,0 +1,10 @@++foo = _++foo = _ x++foo =    _++foo x = baz+  where+    foo _ = _
+ tests/examples/ExprHole.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExprHole.hs.parser.golden view
@@ -0,0 +1,260 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 1 11 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ExprHole.hs" 2 1 2 1+            , SrcSpan "tests/examples/ExprHole.hs" 2 1 2 1+            , SrcSpan "tests/examples/ExprHole.hs" 2 1 2 1+            , SrcSpan "tests/examples/ExprHole.hs" 4 1 4 1+            , SrcSpan "tests/examples/ExprHole.hs" 6 1 6 1+            , SrcSpan "tests/examples/ExprHole.hs" 8 1 8 1+            , SrcSpan "tests/examples/ExprHole.hs" 11 1 11 1+            , SrcSpan "tests/examples/ExprHole.hs" 11 1 11 1+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 1 2 8+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 1 2 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 1 2 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 5 2 8+               , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 2 5 2 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 7 2 8+                  , srcInfoPoints = []+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 7 2 8+                     , srcInfoPoints = []+                     }+                   (ExprHole+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 7 2 8+                        , srcInfoPoints = []+                        }))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 1 4 10+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 1 4 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 1 4 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 5 4 10+               , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 4 5 4 6 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 7 4 10+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 7 4 8+                     , srcInfoPoints = []+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 7 4 8+                        , srcInfoPoints = []+                        }+                      (ExprHole+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 7 4 8+                           , srcInfoPoints = []+                           })))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 9 4 10+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 9 4 10+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 9 4 10+                           , srcInfoPoints = []+                           }+                         "x")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 1 6 11+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 1 6 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 1 6 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 5 6 11+               , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 6 5 6 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 10 6 11+                  , srcInfoPoints = []+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 10 6 11+                     , srcInfoPoints = []+                     }+                   (ExprHole+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 10 6 11+                        , srcInfoPoints = []+                        }))))+          Nothing+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 1 10 14+            , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 9 3 9 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 1 10 14+                , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 9 3 9 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 1 8 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 5 8 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 5 8 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 7 8 12+                   , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 8 7 8 8 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 9 8 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 9 8 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 9 8 12+                            , srcInfoPoints = []+                            }+                          "baz"))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 5 10 14+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/ExprHole.hs" 10 5 10 5+                          , SrcSpan "tests/examples/ExprHole.hs" 11 1 11 0+                          ]+                      }+                    [ FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 5 10 14+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 5 10 14+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 5 10 8+                                 , srcInfoPoints = []+                                 }+                               "foo")+                            [ PWildCard+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 9 10 10+                                  , srcInfoPoints = []+                                  }+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 11 10 14+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/ExprHole.hs" 10 11 10 12 ]+                                 }+                               (Var+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 13 10 14+                                    , srcInfoPoints = []+                                    }+                                  (Special+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/ExprHole.hs" 10 13 10 14+                                       , srcInfoPoints = []+                                       }+                                     (ExprHole+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/ExprHole.hs" 10 13 10 14+                                          , srcInfoPoints = []+                                          }))))+                            Nothing+                        ]+                    ]))+          ]+      ]+  , []+  )
+ tests/examples/ExprHole.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExprHole.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+foo = _+foo = _ x+foo = _+foo x = baz+  where foo _ = _
+ tests/examples/ExtraEndBrace.hs view
@@ -0,0 +1,3 @@+module ExtraEndBrace where++data A = B {c :: D}}
+ tests/examples/ExtraEndBrace.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ExtraEndBrace.hs" 3 20) "Unexpected }"
+ tests/examples/ExtraEndBrace.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+  (SrcLoc "tests/examples/ExtraEndBrace.hs" 3 20) "Unexpected }"
+ tests/examples/ExtraEndBrace.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ExtraEndBrace.hs" 3 20) "Unexpected }"
+ tests/examples/ExtraEndBrace.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ExtraEndBrace.hs" 3 20) "Unexpected }"
+ tests/examples/ExtraPrettyParentheses.hs view
@@ -0,0 +1,9 @@+data Q a = Q a a++-- In this example, the pretty-printer should insert extra parentheses around+-- the negative literal pattern.+x * - 1 = negate x++-- In these examples, the pretty-printer should not insert extra parentheses.+Just x <> Nothing = Just x+f (- 1 `Q` _) = ()
+ tests/examples/ExtraPrettyParentheses.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExtraPrettyParentheses.hs.parser.golden view
@@ -0,0 +1,480 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 10 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 1+            , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 1+            , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 1+            , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 1+            , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 1+            , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 1 9 1+            , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 10 1 10 1+            , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 10 1 10 1+            ]+        }+      Nothing+      []+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 10 1 11 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 6 1 9+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 6 1 7+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 6 1 7+                     , srcInfoPoints = []+                     }+                   "Q"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 8 1 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 8 1 9+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 12 1 17+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 12 1 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 12 1 13+                      , srcInfoPoints = []+                      }+                    "Q")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 14 1 15+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 14 1 15+                          , srcInfoPoints = []+                          }+                        "a")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 16 1 17+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 16 1 17+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 19+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 19+                , srcInfoPoints = []+                }+              (PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 2+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 2+                      , srcInfoPoints = []+                      }+                    "x"))+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 3 5 4+                   , srcInfoPoints = []+                   }+                 "*")+              [ PLit+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 5 5 8+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 5 5 6 ]+                    }+                  (Negative+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 5 5 6+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 5 5 6 ]+                       })+                  (Int+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 7 5 8+                       , srcInfoPoints = []+                       }+                     1+                     "1")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 9 5 19+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 9 5 10 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 11 5 19+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 11 5 17+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 11 5 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 11 5 17+                               , srcInfoPoints = []+                               }+                             "negate")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 18 5 19+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 18 5 19+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 18 5 19+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 27+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 27+                , srcInfoPoints = []+                }+              (PApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 7+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 5+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 5+                         , srcInfoPoints = []+                         }+                       "Just"))+                 [ PVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 6 8 7+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 6 8 7+                          , srcInfoPoints = []+                          }+                        "x")+                 ])+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 8 8 10+                   , srcInfoPoints = []+                   }+                 "<>")+              [ PApp+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 11 8 18+                    , srcInfoPoints = []+                    }+                  (UnQual+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 11 8 18+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 11 8 18+                          , srcInfoPoints = []+                          }+                        "Nothing"))+                  []+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 19 8 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 19 8 20 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 21 8 27+                      , srcInfoPoints = []+                      }+                    (Con+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 21 8 25+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 21 8 25+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 21 8 25+                               , srcInfoPoints = []+                               }+                             "Just")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 26 8 27+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 26 8 27+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 26 8 27+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 1 9 19+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 1 9 19+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 1 9 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 3 9 14+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 3 9 4+                        , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 13 9 14+                        ]+                    }+                  (PInfixApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 13+                       , srcInfoPoints = []+                       }+                     (PLit+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 7+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 5 ]+                          }+                        (Negative+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 5+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 5 ]+                             })+                        (Int+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 6 9 7+                             , srcInfoPoints = []+                             }+                           1+                           "1"))+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 8 9 11+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 8 9 9+                              , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 9 9 10+                              , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 10 9 11+                              ]+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 9 9 10+                             , srcInfoPoints = []+                             }+                           "Q"))+                     (PWildCard+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 12 9 13+                          , srcInfoPoints = []+                          }))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 15 9 19+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 15 9 16 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 19+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 18+                          , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 18 9 19+                          ]+                      }+                    (Special+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 18+                             , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 18 9 19+                             ]+                         }+                       (UnitCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 19+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 18+                                , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 18 9 19+                                ]+                            }))))+              Nothing+          ]+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 3 1 3 78)+        " In this example, the pretty-printer should insert extra parentheses around"+    , Comment+        False+        (SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 4 1 4 33)+        " the negative literal pattern."+    , Comment+        False+        (SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 7 1 7 78)+        " In these examples, the pretty-printer should not insert extra parentheses."+    ]+  )
+ tests/examples/ExtraPrettyParentheses.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () Nothing [] [] [DataDecl () (DataType ()) Nothing (DHApp () (DHead () (Ident () "Q")) (UnkindedVar () (Ident () "a"))) [QualConDecl () Nothing Nothing (ConDecl () (Ident () "Q") [TyVar () (Ident () "a"),TyVar () (Ident () "a")])] [],FunBind () [InfixMatch () (PVar () (Ident () "x")) (Symbol () "*") [PLit () (Negative ()) (Int () 1 "1")] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "negate"))) (Var () (UnQual () (Ident () "x"))))) Nothing],FunBind () [InfixMatch () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "x")]) (Symbol () "<>") [PApp () (UnQual () (Ident () "Nothing")) []] (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "x"))))) Nothing],FunBind () [Match () (Ident () "f") [PParen () (PInfixApp () (PLit () (Negative ()) (Int () 1 "1")) (UnQual () (Ident () "Q")) (PWildCard ()))] (UnGuardedRhs () (Con () (Special () (UnitCon ())))) Nothing]]++AST 2:++Module () Nothing [] [] [DataDecl () (DataType ()) Nothing (DHApp () (DHead () (Ident () "Q")) (UnkindedVar () (Ident () "a"))) [QualConDecl () Nothing Nothing (ConDecl () (Ident () "Q") [TyVar () (Ident () "a"),TyVar () (Ident () "a")])] [],FunBind () [InfixMatch () (PVar () (Ident () "x")) (Symbol () "*") [PParen () (PLit () (Negative ()) (Int () 1 "1"))] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "negate"))) (Var () (UnQual () (Ident () "x"))))) Nothing],FunBind () [InfixMatch () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "x")]) (Symbol () "<>") [PApp () (UnQual () (Ident () "Nothing")) []] (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "x"))))) Nothing],FunBind () [Match () (Ident () "f") [PParen () (PInfixApp () (PLit () (Negative ()) (Int () 1 "1")) (UnQual () (Ident () "Q")) (PWildCard ()))] (UnGuardedRhs () (Con () (Special () (UnitCon ())))) Nothing]]+
+ tests/examples/ExtraPrettyParentheses.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+data Q a = Q a a+x * (-1) = negate x+Just x <> Nothing = Just x+f (-1 `Q` _) = ()
+ tests/examples/FFIExtensions.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE ForeignFunctionInterface, InterruptibleFFI, CApiFFI #-}+module FFIExtensions where++foreign import ccall interruptible+   "sleep" sleep :: CUint -> IO CUint++foreign import capi "header.h f" f :: CInt -> IO CInt
+ tests/examples/FFIExtensions.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FFIExtensions.hs.parser.golden view
@@ -0,0 +1,234 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/FFIExtensions.hs" 1 1 1 1+            , SrcSpan "tests/examples/FFIExtensions.hs" 2 1 2 1+            , SrcSpan "tests/examples/FFIExtensions.hs" 2 1 2 1+            , SrcSpan "tests/examples/FFIExtensions.hs" 4 1 4 1+            , SrcSpan "tests/examples/FFIExtensions.hs" 7 1 7 1+            , SrcSpan "tests/examples/FFIExtensions.hs" 8 1 8 1+            , SrcSpan "tests/examples/FFIExtensions.hs" 8 1 8 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 2 1 2 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/FFIExtensions.hs" 2 1 2 7+                  , SrcSpan "tests/examples/FFIExtensions.hs" 2 22 2 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 2 8 2 21+                 , srcInfoPoints = []+                 }+               "FFIExtensions")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 1 1 69+            , srcInfoPoints =+                [ SrcSpan "tests/examples/FFIExtensions.hs" 1 1 1 13+                , SrcSpan "tests/examples/FFIExtensions.hs" 1 38 1 39+                , SrcSpan "tests/examples/FFIExtensions.hs" 1 56 1 57+                , SrcSpan "tests/examples/FFIExtensions.hs" 1 66 1 69+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 14 1 38+                , srcInfoPoints = []+                }+              "ForeignFunctionInterface"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 40 1 56+                , srcInfoPoints = []+                }+              "InterruptibleFFI"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 58 1 65+                , srcInfoPoints = []+                }+              "CApiFFI"+          ]+      ]+      []+      [ ForImp+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 4 1 5 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/FFIExtensions.hs" 4 1 4 8+                , SrcSpan "tests/examples/FFIExtensions.hs" 4 9 4 15+                , SrcSpan "tests/examples/FFIExtensions.hs" 5 4 5 11+                , SrcSpan "tests/examples/FFIExtensions.hs" 5 18 5 20+                ]+            }+          (CCall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 4 16 4 21+               , srcInfoPoints = []+               })+          (Just+             (PlayInterruptible+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 4 22 4 35+                  , srcInfoPoints = []+                  }))+          (Just "sleep")+          (Ident+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 12 5 17+               , srcInfoPoints = []+               }+             "sleep")+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 21 5 38+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/FFIExtensions.hs" 5 27 5 29 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 21 5 26+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 21 5 26+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 21 5 26+                        , srcInfoPoints = []+                        }+                      "CUint")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 30 5 38+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 30 5 32+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 30 5 32+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 30 5 32+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 33 5 38+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 33 5 38+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 33 5 38+                           , srcInfoPoints = []+                           }+                         "CUint")))))+      , ForImp+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 1 7 54+            , srcInfoPoints =+                [ SrcSpan "tests/examples/FFIExtensions.hs" 7 1 7 8+                , SrcSpan "tests/examples/FFIExtensions.hs" 7 9 7 15+                , SrcSpan "tests/examples/FFIExtensions.hs" 7 21 7 33+                , SrcSpan "tests/examples/FFIExtensions.hs" 7 36 7 38+                ]+            }+          (CApi+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 16 7 20+               , srcInfoPoints = []+               })+          Nothing+          (Just "header.h f")+          (Ident+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 34 7 35+               , srcInfoPoints = []+               }+             "f")+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 39 7 54+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/FFIExtensions.hs" 7 44 7 46 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 39 7 43+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 39 7 43+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 39 7 43+                        , srcInfoPoints = []+                        }+                      "CInt")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 47 7 54+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 47 7 49+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 47 7 49+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 47 7 49+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 50 7 54+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 50 7 54+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 50 7 54+                           , srcInfoPoints = []+                           }+                         "CInt")))))+      ]+  , []+  )
+ tests/examples/FFIExtensions.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FFIExtensions.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE ForeignFunctionInterface, InterruptibleFFI, CApiFFI+  #-}+module FFIExtensions where++foreign import ccall interruptible "sleep" sleep ::+               CUint -> IO CUint++foreign import capi "header.h f" f :: CInt -> IO CInt
+ tests/examples/FFIInterruptible.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE InterruptibleFFI #-}+foo = interruptible+
+ tests/examples/FFIInterruptible.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FFIInterruptible.hs.parser.golden view
@@ -0,0 +1,83 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/FFIInterruptible.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/FFIInterruptible.hs" 1 1 1 1+            , SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 1+            , SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 1+            , SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 1+            , SrcSpan "tests/examples/FFIInterruptible.hs" 4 1 4 1+            , SrcSpan "tests/examples/FFIInterruptible.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/FFIInterruptible.hs" 1 1 1 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/FFIInterruptible.hs" 1 1 1 13+                , SrcSpan "tests/examples/FFIInterruptible.hs" 1 31 1 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/FFIInterruptible.hs" 1 14 1 30+                , srcInfoPoints = []+                }+              "InterruptibleFFI"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 20+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/FFIInterruptible.hs" 2 5 2 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/FFIInterruptible.hs" 2 5 2 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/FFIInterruptible.hs" 2 7 2 20+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/FFIInterruptible.hs" 2 7 2 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/FFIInterruptible.hs" 2 7 2 20+                        , srcInfoPoints = []+                        }+                      "interruptible"))))+          Nothing+      ]+  , []+  )
+ tests/examples/FFIInterruptible.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FFIInterruptible.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE InterruptibleFFI #-}+foo = interruptible
+ tests/examples/FamilyKindSig.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}+module FamilyKindSig where++type family WithKindSig (a :: * -> *)
+ tests/examples/FamilyKindSig.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FamilyKindSig.hs.parser.golden view
@@ -0,0 +1,107 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/FamilyKindSig.hs" 1 1 1 1+            , SrcSpan "tests/examples/FamilyKindSig.hs" 2 1 2 1+            , SrcSpan "tests/examples/FamilyKindSig.hs" 2 1 2 1+            , SrcSpan "tests/examples/FamilyKindSig.hs" 4 1 4 1+            , SrcSpan "tests/examples/FamilyKindSig.hs" 5 1 5 1+            , SrcSpan "tests/examples/FamilyKindSig.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 2 1 2 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/FamilyKindSig.hs" 2 1 2 7+                  , SrcSpan "tests/examples/FamilyKindSig.hs" 2 22 2 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 2 8 2 21+                 , srcInfoPoints = []+                 }+               "FamilyKindSig")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/FamilyKindSig.hs" 1 1 1 13+                , SrcSpan "tests/examples/FamilyKindSig.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      ]+      []+      [ TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 1 4 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/FamilyKindSig.hs" 4 1 4 5+                , SrcSpan "tests/examples/FamilyKindSig.hs" 4 6 4 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 13 4 38+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 13 4 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 13 4 24+                     , srcInfoPoints = []+                     }+                   "WithKindSig"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 25 4 38+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/FamilyKindSig.hs" 4 25 4 26+                      , SrcSpan "tests/examples/FamilyKindSig.hs" 4 28 4 30+                      , SrcSpan "tests/examples/FamilyKindSig.hs" 4 37 4 38+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 26 4 27+                     , srcInfoPoints = []+                     }+                   "a")+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 31 4 37+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/FamilyKindSig.hs" 4 33 4 35 ]+                     }+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 31 4 32+                        , srcInfoPoints = []+                        })+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 36 4 37+                        , srcInfoPoints = []+                        }))))+          Nothing+          Nothing+      ]+  , []+  )
+ tests/examples/FamilyKindSig.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FamilyKindSig.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}+module FamilyKindSig where++type family WithKindSig (a :: * -> *)
+ tests/examples/FamilyVarid.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}+module FamilyVarid where++f family forall = undefined
+ tests/examples/FamilyVarid.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FamilyVarid.hs.parser.golden view
@@ -0,0 +1,113 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/FamilyVarid.hs" 1 1 1 1+            , SrcSpan "tests/examples/FamilyVarid.hs" 2 1 2 1+            , SrcSpan "tests/examples/FamilyVarid.hs" 2 1 2 1+            , SrcSpan "tests/examples/FamilyVarid.hs" 4 1 4 1+            , SrcSpan "tests/examples/FamilyVarid.hs" 5 1 5 1+            , SrcSpan "tests/examples/FamilyVarid.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 2 1 2 25+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/FamilyVarid.hs" 2 1 2 7+                  , SrcSpan "tests/examples/FamilyVarid.hs" 2 20 2 25+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 2 8 2 19+                 , srcInfoPoints = []+                 }+               "FamilyVarid")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/FamilyVarid.hs" 1 1 1 13+                , SrcSpan "tests/examples/FamilyVarid.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 1 4 28+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 1 4 28+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 1 4 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 3 4 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 3 4 9+                       , srcInfoPoints = []+                       }+                     "family")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 10 4 16+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 10 4 16+                       , srcInfoPoints = []+                       }+                     "forall")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 17 4 28+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/FamilyVarid.hs" 4 17 4 18 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 19 4 28+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 19 4 28+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 19 4 28+                            , srcInfoPoints = []+                            }+                          "undefined"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/FamilyVarid.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FamilyVarid.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TypeFamilies #-}+module FamilyVarid where+f family forall = undefined
+ tests/examples/Fixity2.hs view
@@ -0,0 +1,3 @@+foo = pure 1 <^> pure 2 <^> pure (+) where+  (<^>) = flip (<*>)+  infixr 4 <^>
+ tests/examples/Fixity2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Fixity2.hs.parser.golden view
@@ -0,0 +1,297 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Fixity2.hs" 1 1 1 1+            , SrcSpan "tests/examples/Fixity2.hs" 1 1 1 1+            , SrcSpan "tests/examples/Fixity2.hs" 1 1 1 1+            , SrcSpan "tests/examples/Fixity2.hs" 4 1 4 1+            , SrcSpan "tests/examples/Fixity2.hs" 4 1 4 1+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 1 3 15+            , srcInfoPoints = [ SrcSpan "tests/examples/Fixity2.hs" 1 38 1 43 ]+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 1 1 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 1 1 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 5 1 37+               , srcInfoPoints = [ SrcSpan "tests/examples/Fixity2.hs" 1 5 1 6 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 37+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 13+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 11+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 11+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 11+                              , srcInfoPoints = []+                              }+                            "pure")))+                   (Lit+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 12 1 13+                        , srcInfoPoints = []+                        }+                      (Int+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 12 1 13+                           , srcInfoPoints = []+                           }+                         1+                         "1")))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 14 1 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 14 1 17+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 14 1 17+                           , srcInfoPoints = []+                           }+                         "<^>")))+                (InfixApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 37+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 24+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 22+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 22+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 22+                                 , srcInfoPoints = []+                                 }+                               "pure")))+                      (Lit+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 23 1 24+                           , srcInfoPoints = []+                           }+                         (Int+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 23 1 24+                              , srcInfoPoints = []+                              }+                            2+                            "2")))+                   (QVarOp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 25 1 28+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 25 1 28+                           , srcInfoPoints = []+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 25 1 28+                              , srcInfoPoints = []+                              }+                            "<^>")))+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 29 1 37+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 29 1 33+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 29 1 33+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 29 1 33+                                 , srcInfoPoints = []+                                 }+                               "pure")))+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 34 1 37+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Fixity2.hs" 1 34 1 35+                               , SrcSpan "tests/examples/Fixity2.hs" 1 35 1 36+                               , SrcSpan "tests/examples/Fixity2.hs" 1 36 1 37+                               ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 34 1 37+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Fixity2.hs" 1 34 1 35+                                  , SrcSpan "tests/examples/Fixity2.hs" 1 35 1 36+                                  , SrcSpan "tests/examples/Fixity2.hs" 1 36 1 37+                                  ]+                              }+                            (Symbol+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 35 1 36+                                 , srcInfoPoints = []+                                 }+                               "+")))))))+          (Just+             (BDecls+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 3 3 15+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Fixity2.hs" 2 3 2 3+                      , SrcSpan "tests/examples/Fixity2.hs" 3 3 3 3+                      , SrcSpan "tests/examples/Fixity2.hs" 4 1 4 0+                      ]+                  }+                [ PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 3 2 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 3 2 8+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Fixity2.hs" 2 3 2 4+                             , SrcSpan "tests/examples/Fixity2.hs" 2 4 2 7+                             , SrcSpan "tests/examples/Fixity2.hs" 2 7 2 8+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 4 2 7+                            , srcInfoPoints = []+                            }+                          "<^>"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 9 2 21+                         , srcInfoPoints = [ SrcSpan "tests/examples/Fixity2.hs" 2 9 2 10 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 11 2 21+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 11 2 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 11 2 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 11 2 15+                                     , srcInfoPoints = []+                                     }+                                   "flip")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 16 2 21+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Fixity2.hs" 2 16 2 17+                                   , SrcSpan "tests/examples/Fixity2.hs" 2 17 2 20+                                   , SrcSpan "tests/examples/Fixity2.hs" 2 20 2 21+                                   ]+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 16 2 21+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Fixity2.hs" 2 16 2 17+                                      , SrcSpan "tests/examples/Fixity2.hs" 2 17 2 20+                                      , SrcSpan "tests/examples/Fixity2.hs" 2 20 2 21+                                      ]+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 17 2 20+                                     , srcInfoPoints = []+                                     }+                                   "<*>")))))+                    Nothing+                , InfixDecl+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 3 3 3 15+                      , srcInfoPoints = [ SrcSpan "tests/examples/Fixity2.hs" 3 10 3 11 ]+                      }+                    (AssocRight+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 3 3 3 9+                         , srcInfoPoints = []+                         })+                    (Just 4)+                    [ VarOp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 3 12 3 15+                          , srcInfoPoints = []+                          }+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 3 12 3 15+                             , srcInfoPoints = []+                             }+                           "<^>")+                    ]+                ]))+      ]+  , []+  )
+ tests/examples/Fixity2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Fixity2.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+foo = pure 1 <^> pure 2 <^> pure (+)+  where (<^>) = flip (<*>)+        +        infixr 4 <^>
+ tests/examples/Fixity3.hs view
@@ -0,0 +1,5 @@+class Foo f where+  (<^>) :: Applicative f => f a -> f (a -> b) -> f b+  infixr 4 <^>++foo = pure 1 <^> pure 2 <^> pure (+)
+ tests/examples/Fixity3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Fixity3.hs.parser.golden view
@@ -0,0 +1,466 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Fixity3.hs" 1 1 1 1+            , SrcSpan "tests/examples/Fixity3.hs" 1 1 1 1+            , SrcSpan "tests/examples/Fixity3.hs" 1 1 1 1+            , SrcSpan "tests/examples/Fixity3.hs" 5 1 5 1+            , SrcSpan "tests/examples/Fixity3.hs" 6 1 6 1+            , SrcSpan "tests/examples/Fixity3.hs" 6 1 6 1+            ]+        }+      Nothing+      []+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 1 3 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Fixity3.hs" 1 1 1 6+                , SrcSpan "tests/examples/Fixity3.hs" 1 13 1 18+                , SrcSpan "tests/examples/Fixity3.hs" 2 3 2 3+                , SrcSpan "tests/examples/Fixity3.hs" 3 3 3 3+                , SrcSpan "tests/examples/Fixity3.hs" 5 1 5 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 7 1 12+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 7 1 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 7 1 10+                     , srcInfoPoints = []+                     }+                   "Foo"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 11 1 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 11 1 12+                     , srcInfoPoints = []+                     }+                   "f")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 3 2 53+                   , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 9 2 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 3 2 53+                      , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 9 2 11 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 3 2 8+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Fixity3.hs" 2 3 2 4+                              , SrcSpan "tests/examples/Fixity3.hs" 2 4 2 7+                              , SrcSpan "tests/examples/Fixity3.hs" 2 7 2 8+                              ]+                          }+                        "<^>"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 53+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28+                               , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]+                                     }+                                   (TyCon+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23+                                              , srcInfoPoints = []+                                              }+                                            "Applicative")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25+                                           , srcInfoPoints = []+                                           }+                                         "f"))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 53+                            , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 33 2 35 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 32+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 30+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 30+                                     , srcInfoPoints = []+                                     }+                                   "f"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 31 2 32+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 31 2 32+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 36 2 53+                               , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 47 2 49 ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 36 2 46+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 36 2 37+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Fixity3.hs" 2 36 2 37+                                        , srcInfoPoints = []+                                        }+                                      "f"))+                                (TyParen+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 38 2 46+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/Fixity3.hs" 2 38 2 39+                                         , SrcSpan "tests/examples/Fixity3.hs" 2 45 2 46+                                         ]+                                     }+                                   (TyFun+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Fixity3.hs" 2 39 2 45+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/Fixity3.hs" 2 41 2 43 ]+                                        }+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Fixity3.hs" 2 39 2 40+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Fixity3.hs" 2 39 2 40+                                              , srcInfoPoints = []+                                              }+                                            "a"))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Fixity3.hs" 2 44 2 45+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Fixity3.hs" 2 44 2 45+                                              , srcInfoPoints = []+                                              }+                                            "b")))))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 50 2 53+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 50 2 51+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Fixity3.hs" 2 50 2 51+                                        , srcInfoPoints = []+                                        }+                                      "f"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 52 2 53+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Fixity3.hs" 2 52 2 53+                                        , srcInfoPoints = []+                                        }+                                      "b")))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 3 3 15+                   , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 3 10 3 11 ]+                   }+                 (InfixDecl+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 3 3 15+                      , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 3 10 3 11 ]+                      }+                    (AssocRight+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 3 3 9+                         , srcInfoPoints = []+                         })+                    (Just 4)+                    [ VarOp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 12 3 15+                          , srcInfoPoints = []+                          }+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 12 3 15+                             , srcInfoPoints = []+                             }+                           "<^>")+                    ])+             ])+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 1 5 37+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 1 5 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 1 5 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 5 5 37+               , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 5 5 5 6 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 37+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 13+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 11+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 11+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 11+                              , srcInfoPoints = []+                              }+                            "pure")))+                   (Lit+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 12 5 13+                        , srcInfoPoints = []+                        }+                      (Int+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 12 5 13+                           , srcInfoPoints = []+                           }+                         1+                         "1")))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 14 5 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 14 5 17+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 14 5 17+                           , srcInfoPoints = []+                           }+                         "<^>")))+                (InfixApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 37+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 24+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 22+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 22+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 22+                                 , srcInfoPoints = []+                                 }+                               "pure")))+                      (Lit+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 23 5 24+                           , srcInfoPoints = []+                           }+                         (Int+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 23 5 24+                              , srcInfoPoints = []+                              }+                            2+                            "2")))+                   (QVarOp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 25 5 28+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 25 5 28+                           , srcInfoPoints = []+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 25 5 28+                              , srcInfoPoints = []+                              }+                            "<^>")))+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 29 5 37+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 29 5 33+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 29 5 33+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 29 5 33+                                 , srcInfoPoints = []+                                 }+                               "pure")))+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 34 5 37+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Fixity3.hs" 5 34 5 35+                               , SrcSpan "tests/examples/Fixity3.hs" 5 35 5 36+                               , SrcSpan "tests/examples/Fixity3.hs" 5 36 5 37+                               ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 34 5 37+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Fixity3.hs" 5 34 5 35+                                  , SrcSpan "tests/examples/Fixity3.hs" 5 35 5 36+                                  , SrcSpan "tests/examples/Fixity3.hs" 5 36 5 37+                                  ]+                              }+                            (Symbol+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 35 5 36+                                 , srcInfoPoints = []+                                 }+                               "+")))))))+          Nothing+      ]+  , []+  )
+ tests/examples/Fixity3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Fixity3.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+class Foo f where+        (<^>) :: Applicative f => f a -> f (a -> b) -> f b+        +        infixr 4 <^>+foo = pure 1 <^> pure 2 <^> pure (+)
+ tests/examples/FixityTests.hs view
@@ -0,0 +1,3 @@+main = forM_ cmdReports $ \x -> do+               putStrLn $ "Writing report to " ++ x ++ " ..."+               writeReport x ideas
+ tests/examples/FixityTests.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FixityTests.hs.parser.golden view
@@ -0,0 +1,343 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/FixityTests.hs" 1 1 1 1+            , SrcSpan "tests/examples/FixityTests.hs" 1 1 1 1+            , SrcSpan "tests/examples/FixityTests.hs" 1 1 1 1+            , SrcSpan "tests/examples/FixityTests.hs" 4 1 4 1+            , SrcSpan "tests/examples/FixityTests.hs" 4 1 4 1+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 1 3 35+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 1 1 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 1 1 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 6 3 35+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/FixityTests.hs" 1 6 1 7 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 3 35+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 1 24+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 1 13+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 1 13+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 1 13+                              , srcInfoPoints = []+                              }+                            "forM_")))+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 14 1 24+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 14 1 24+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 14 1 24+                              , srcInfoPoints = []+                              }+                            "cmdReports"))))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 25 1 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 25 1 26+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 25 1 26+                           , srcInfoPoints = []+                           }+                         "$")))+                (Lambda+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 27 3 35+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/FixityTests.hs" 1 27 1 28+                         , SrcSpan "tests/examples/FixityTests.hs" 1 30 1 32+                         ]+                     }+                   [ PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 28 1 29+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 28 1 29+                            , srcInfoPoints = []+                            }+                          "x")+                   ]+                   (Do+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 33 3 35+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/FixityTests.hs" 1 33 1 35+                            , SrcSpan "tests/examples/FixityTests.hs" 2 16 2 16+                            , SrcSpan "tests/examples/FixityTests.hs" 3 16 3 16+                            , SrcSpan "tests/examples/FixityTests.hs" 4 1 4 0+                            ]+                        }+                      [ Qualifier+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 16 2 62+                            , srcInfoPoints = []+                            }+                          (InfixApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 16 2 62+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 16 2 24+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/FixityTests.hs" 2 16 2 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 2 16 2 24+                                        , srcInfoPoints = []+                                        }+                                      "putStrLn")))+                             (QVarOp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 25 2 26+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/FixityTests.hs" 2 25 2 26+                                     , srcInfoPoints = []+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 2 25 2 26+                                        , srcInfoPoints = []+                                        }+                                      "$")))+                             (InfixApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 27 2 62+                                  , srcInfoPoints = []+                                  }+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/FixityTests.hs" 2 27 2 47+                                     , srcInfoPoints = []+                                     }+                                   (String+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 2 27 2 47+                                        , srcInfoPoints = []+                                        }+                                      "Writing report to "+                                      "Writing report to "))+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/FixityTests.hs" 2 48 2 50+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 2 48 2 50+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/FixityTests.hs" 2 48 2 50+                                           , srcInfoPoints = []+                                           }+                                         "++")))+                                (InfixApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/FixityTests.hs" 2 51 2 62+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 2 51 2 52+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/FixityTests.hs" 2 51 2 52+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/FixityTests.hs" 2 51 2 52+                                              , srcInfoPoints = []+                                              }+                                            "x")))+                                   (QVarOp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 2 53 2 55+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/FixityTests.hs" 2 53 2 55+                                           , srcInfoPoints = []+                                           }+                                         (Symbol+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/FixityTests.hs" 2 53 2 55+                                              , srcInfoPoints = []+                                              }+                                            "++")))+                                   (Lit+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 2 56 2 62+                                        , srcInfoPoints = []+                                        }+                                      (String+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/FixityTests.hs" 2 56 2 62+                                           , srcInfoPoints = []+                                           }+                                         " ..."+                                         " ...")))))+                      , Qualifier+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 3 16 3 35+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 3 16 3 35+                               , srcInfoPoints = []+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 3 16 3 29+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/FixityTests.hs" 3 16 3 27+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 3 16 3 27+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/FixityTests.hs" 3 16 3 27+                                           , srcInfoPoints = []+                                           }+                                         "writeReport")))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/FixityTests.hs" 3 28 3 29+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 3 28 3 29+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/FixityTests.hs" 3 28 3 29+                                           , srcInfoPoints = []+                                           }+                                         "x"))))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 3 30 3 35+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/FixityTests.hs" 3 30 3 35+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/FixityTests.hs" 3 30 3 35+                                        , srcInfoPoints = []+                                        }+                                      "ideas"))))+                      ]))))+          Nothing+      ]+  , []+  )
+ tests/examples/FixityTests.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FixityTests.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+main+  = forM_ cmdReports $+      \ x ->+        do putStrLn $ "Writing report to " ++ x ++ " ..."+           writeReport x ideas
+ tests/examples/FlexibleContextsWithoutVars.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE FlexibleContexts #-}+f :: Log.Stack => a -> a+f = id
+ tests/examples/FlexibleContextsWithoutVars.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FlexibleContextsWithoutVars.hs.parser.golden view
@@ -0,0 +1,187 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 1 1 1+            , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 1+            , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 1+            , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 1+            , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 1 3 1+            , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 4 1 4 1+            , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 1 1 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 1 1 13+                , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 31 1 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 14 1 30+                , srcInfoPoints = []+                }+              "FlexibleContexts"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 3 2 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 25+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18+                         ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18+                            ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18+                               ]+                           }+                         (Qual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15+                              , srcInfoPoints = []+                              }+                            (ModuleName+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan+                                       "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15+                                 , srcInfoPoints = []+                                 }+                               "Log")+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan+                                       "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15+                                 , srcInfoPoints = []+                                 }+                               "Stack"))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 19 2 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 21 2 23+                      ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 19 2 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 19 2 20+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 24 2 25+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 24 2 25+                        , srcInfoPoints = []+                        }+                      "a"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 1 3 7+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 1 3 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 1 3 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 3 3 7+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 3 3 4 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 5 3 7+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 5 3 7+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 5 3 7+                        , srcInfoPoints = []+                        }+                      "id"))))+          Nothing+      ]+  , []+  )
+ tests/examples/FlexibleContextsWithoutVars.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FlexibleContextsWithoutVars.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE FlexibleContexts #-}++f :: Log.Stack => a -> a+f = id
+ tests/examples/ForallInInstance.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ScopedTypeVariables #-}+module ForallInInstance where++instance forall a. MyClass a => MyClass [a] where
+ tests/examples/ForallInInstance.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForallInInstance.hs.parser.golden view
@@ -0,0 +1,195 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ForallInInstance.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ForallInInstance.hs" 1 1 1 1+            , SrcSpan "tests/examples/ForallInInstance.hs" 2 1 2 1+            , SrcSpan "tests/examples/ForallInInstance.hs" 2 1 2 1+            , SrcSpan "tests/examples/ForallInInstance.hs" 4 1 4 1+            , SrcSpan "tests/examples/ForallInInstance.hs" 5 1 5 1+            , SrcSpan "tests/examples/ForallInInstance.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/ForallInInstance.hs" 2 1 2 30+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ForallInInstance.hs" 2 1 2 7+                  , SrcSpan "tests/examples/ForallInInstance.hs" 2 25 2 30+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/ForallInInstance.hs" 2 8 2 24+                 , srcInfoPoints = []+                 }+               "ForallInInstance")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ForallInInstance.hs" 1 1 1 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ForallInInstance.hs" 1 1 1 13+                , SrcSpan "tests/examples/ForallInInstance.hs" 1 34 1 37+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ForallInInstance.hs" 1 14 1 33+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          ]+      ]+      []+      [ InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ForallInInstance.hs" 4 1 5 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ForallInInstance.hs" 4 1 4 9+                , SrcSpan "tests/examples/ForallInInstance.hs" 4 45 4 50+                , SrcSpan "tests/examples/ForallInInstance.hs" 5 1 5 1+                , SrcSpan "tests/examples/ForallInInstance.hs" 5 1 5 1+                , SrcSpan "tests/examples/ForallInInstance.hs" 5 0 5 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ForallInInstance.hs" 4 10 4 44+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ForallInInstance.hs" 4 10 4 16+                   , SrcSpan "tests/examples/ForallInInstance.hs" 4 18 4 19+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ForallInInstance.hs" 4 17 4 18+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ForallInInstance.hs" 4 17 4 18+                         , srcInfoPoints = []+                         }+                       "a")+                ])+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27+                                    , srcInfoPoints = []+                                    }+                                  "MyClass")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ForallInInstance.hs" 4 33 4 44+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ForallInInstance.hs" 4 33 4 40+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ForallInInstance.hs" 4 33 4 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ForallInInstance.hs" 4 33 4 40+                           , srcInfoPoints = []+                           }+                         "MyClass")))+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ForallInInstance.hs" 4 41 4 44+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ForallInInstance.hs" 4 41 4 42+                         , SrcSpan "tests/examples/ForallInInstance.hs" 4 43 4 44+                         ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ForallInInstance.hs" 4 42 4 43+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ForallInInstance.hs" 4 42 4 43+                           , srcInfoPoints = []+                           }+                         "a")))))+          (Just [])+      ]+  , []+  )
+ tests/examples/ForallInInstance.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForallInInstance.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ScopedTypeVariables #-}+module ForallInInstance where++instance forall a . MyClass a => MyClass [a] where
+ tests/examples/ForeignImport.hs view
@@ -0,0 +1,4 @@+{- If compiled without ForeignFunctionInterface (part of Haskell2010),+   it complains not about FFI but about missing TemplateHaskell -}+foreign import ccall unsafe "getProgArgv"+ getProgArgv :: Ptr CInt -> Ptr (Ptr CString) -> IO ()
+ tests/examples/ForeignImport.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForeignImport.hs.parser.golden view
@@ -0,0 +1,212 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 3 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ForeignImport.hs" 3 1 3 1+            , SrcSpan "tests/examples/ForeignImport.hs" 3 1 3 1+            , SrcSpan "tests/examples/ForeignImport.hs" 3 1 3 1+            , SrcSpan "tests/examples/ForeignImport.hs" 5 1 5 1+            , SrcSpan "tests/examples/ForeignImport.hs" 5 1 5 1+            ]+        }+      Nothing+      []+      []+      [ ForImp+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 3 1 4 55+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ForeignImport.hs" 3 1 3 8+                , SrcSpan "tests/examples/ForeignImport.hs" 3 9 3 15+                , SrcSpan "tests/examples/ForeignImport.hs" 3 29 3 42+                , SrcSpan "tests/examples/ForeignImport.hs" 4 14 4 16+                ]+            }+          (CCall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 3 16 3 21+               , srcInfoPoints = []+               })+          (Just+             (PlayRisky+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 3 22 3 28+                  , srcInfoPoints = []+                  }))+          (Just "getProgArgv")+          (Ident+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 2 4 13+               , srcInfoPoints = []+               }+             "getProgArgv")+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 55+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ForeignImport.hs" 4 26 4 28 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 25+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 20+                           , srcInfoPoints = []+                           }+                         "Ptr")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 21 4 25+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 21 4 25+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 21 4 25+                           , srcInfoPoints = []+                           }+                         "CInt"))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 55+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ForeignImport.hs" 4 47 4 49 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 46+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 32+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 32+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 32+                              , srcInfoPoints = []+                              }+                            "Ptr")))+                   (TyParen+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 33 4 46+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ForeignImport.hs" 4 33 4 34+                            , SrcSpan "tests/examples/ForeignImport.hs" 4 45 4 46+                            ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 34 4 45+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 34 4 37+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 34 4 37+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ForeignImport.hs" 4 34 4 37+                                    , srcInfoPoints = []+                                    }+                                  "Ptr")))+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 38 4 45+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 38 4 45+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ForeignImport.hs" 4 38 4 45+                                    , srcInfoPoints = []+                                    }+                                  "CString"))))))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 50 4 55+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 50 4 52+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 50 4 52+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 50 4 52+                              , srcInfoPoints = []+                              }+                            "IO")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 55+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 54+                            , SrcSpan "tests/examples/ForeignImport.hs" 4 54 4 55+                            ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 55+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 54+                               , SrcSpan "tests/examples/ForeignImport.hs" 4 54 4 55+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 55+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 54+                                  , SrcSpan "tests/examples/ForeignImport.hs" 4 54 4 55+                                  ]+                              }))))))+      ]+  , [ Comment+        True+        (SrcSpan "tests/examples/ForeignImport.hs" 1 1 2 67)+        " If compiled without ForeignFunctionInterface (part of Haskell2010),\n   it complains not about FFI but about missing TemplateHaskell "+    ]+  )
+ tests/examples/ForeignImport.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForeignImport.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+foreign import ccall unsafe "getProgArgv" getProgArgv ::+               Ptr CInt -> Ptr (Ptr CString) -> IO ()
+ tests/examples/ForeignImportJavascript.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE JavascriptFFI #-}++foreign import javascript unsafe "somethingUseful_ = $1"+    js_set_somethingUseful :: JSFun a -> IO ()
+ tests/examples/ForeignImportJavascript.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForeignImportJavascript.hs.parser.golden view
@@ -0,0 +1,166 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 1 1 1+            , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 3 1+            , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 3 1+            , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 3 1+            , SrcSpan "tests/examples/ForeignImportJavascript.hs" 5 1 5 1+            , SrcSpan "tests/examples/ForeignImportJavascript.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 1 1 13+                , SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "JavascriptFFI"+          ]+      ]+      []+      [ ForImp+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 4 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 3 8+                , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 9 3 15+                , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 34 3 57+                , SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 28 4 30+                ]+            }+          (JavaScript+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 16 3 26+               , srcInfoPoints = []+               })+          (Just+             (PlayRisky+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 27 3 33+                  , srcInfoPoints = []+                  }))+          (Just "somethingUseful_ = $1")+          (Ident+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 5 4 27+               , srcInfoPoints = []+               }+             "js_set_somethingUseful")+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 47+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 39 4 41 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 38+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 36+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 36+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 36+                           , srcInfoPoints = []+                           }+                         "JSFun")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 37 4 38+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 37 4 38+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 42 4 47+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 42 4 44+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 42 4 44+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 42 4 44+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 47+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 46+                         , SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 46 4 47+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 47+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 46+                            , SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 46 4 47+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 47+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 46+                               , SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 46 4 47+                               ]+                           })))))+      ]+  , []+  )
+ tests/examples/ForeignImportJavascript.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForeignImportJavascript.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE JavascriptFFI #-}++foreign import javascript unsafe "somethingUseful_ = $1"+               js_set_somethingUseful :: JSFun a -> IO ()
+ tests/examples/GADTRecord.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data T where+  T :: { field :: Int } -> T
+ tests/examples/GADTRecord.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GADTRecord.hs.parser.golden view
@@ -0,0 +1,128 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/GADTRecord.hs" 1 1 1 1+            , SrcSpan "tests/examples/GADTRecord.hs" 3 1 3 1+            , SrcSpan "tests/examples/GADTRecord.hs" 3 1 3 1+            , SrcSpan "tests/examples/GADTRecord.hs" 3 1 3 1+            , SrcSpan "tests/examples/GADTRecord.hs" 5 1 5 1+            , SrcSpan "tests/examples/GADTRecord.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 1 1 1 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GADTRecord.hs" 1 1 1 13+                , SrcSpan "tests/examples/GADTRecord.hs" 1 20 1 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 1 14 1 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      []+      [ GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 3 1 5 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GADTRecord.hs" 3 8 3 13+                , SrcSpan "tests/examples/GADTRecord.hs" 4 3 4 3+                , SrcSpan "tests/examples/GADTRecord.hs" 5 1 5 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 3 6 3 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 3 6 3 7+                  , srcInfoPoints = []+                  }+                "T"))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 3 4 29+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/GADTRecord.hs" 4 5 4 7+                    , SrcSpan "tests/examples/GADTRecord.hs" 4 8 4 9+                    , SrcSpan "tests/examples/GADTRecord.hs" 4 23 4 24+                    , SrcSpan "tests/examples/GADTRecord.hs" 4 25 4 27+                    ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 3 4 4+                   , srcInfoPoints = []+                   }+                 "T")+              Nothing+              Nothing+              (Just+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 10 4 22+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/GADTRecord.hs" 4 16 4 18 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 10 4 15+                           , srcInfoPoints = []+                           }+                         "field"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 19 4 22+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 19 4 22+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 19 4 22+                                , srcInfoPoints = []+                                }+                              "Int")))+                 ])+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 28 4 29+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 28 4 29+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 28 4 29+                         , srcInfoPoints = []+                         }+                       "T")))+          ]+          []+      ]+  , []+  )
+ tests/examples/GADTRecord.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GADTRecord.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data T where+        T :: {field :: Int} -> T
+ tests/examples/GADTRecord2.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data T where+  T :: () => { field :: Int } -> T
+ tests/examples/GADTRecord2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GADTRecord2.hs.parser.golden view
@@ -0,0 +1,137 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/GADTRecord2.hs" 1 1 1 1+            , SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 1+            , SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 1+            , SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 1+            , SrcSpan "tests/examples/GADTRecord2.hs" 5 1 5 1+            , SrcSpan "tests/examples/GADTRecord2.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 1 1 1 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GADTRecord2.hs" 1 1 1 13+                , SrcSpan "tests/examples/GADTRecord2.hs" 1 20 1 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 1 14 1 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      []+      [ GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 1 5 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GADTRecord2.hs" 3 8 3 13+                , SrcSpan "tests/examples/GADTRecord2.hs" 4 3 4 3+                , SrcSpan "tests/examples/GADTRecord2.hs" 5 1 5 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 6 3 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 6 3 7+                  , srcInfoPoints = []+                  }+                "T"))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 3 4 35+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/GADTRecord2.hs" 4 5 4 7+                    , SrcSpan "tests/examples/GADTRecord2.hs" 4 14 4 15+                    , SrcSpan "tests/examples/GADTRecord2.hs" 4 29 4 30+                    , SrcSpan "tests/examples/GADTRecord2.hs" 4 31 4 33+                    ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 3 4 4+                   , srcInfoPoints = []+                   }+                 "T")+              Nothing+              (Just+                 (CxEmpty+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 8 4 13+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/GADTRecord2.hs" 4 8 4 9+                          , SrcSpan "tests/examples/GADTRecord2.hs" 4 9 4 10+                          , SrcSpan "tests/examples/GADTRecord2.hs" 4 11 4 13+                          ]+                      }))+              (Just+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 16 4 28+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/GADTRecord2.hs" 4 22 4 24 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 16 4 21+                           , srcInfoPoints = []+                           }+                         "field"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 25 4 28+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 25 4 28+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 25 4 28+                                , srcInfoPoints = []+                                }+                              "Int")))+                 ])+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 34 4 35+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 34 4 35+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 34 4 35+                         , srcInfoPoints = []+                         }+                       "T")))+          ]+          []+      ]+  , []+  )
+ tests/examples/GADTRecord2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GADTRecord2.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data T where+        T :: () => {field :: Int} -> T
+ tests/examples/GadtDeriving.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE GADTs #-}++data Foo where+    Foo :: Int -> Foo+    deriving (Eq,Ord,Typeable)
+ tests/examples/GadtDeriving.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtDeriving.hs.parser.golden view
@@ -0,0 +1,199 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/GadtDeriving.hs" 1 1 1 1+            , SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 1+            , SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 1+            , SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 1+            , SrcSpan "tests/examples/GadtDeriving.hs" 6 1 6 1+            , SrcSpan "tests/examples/GadtDeriving.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 1 1 1 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GadtDeriving.hs" 1 1 1 13+                , SrcSpan "tests/examples/GadtDeriving.hs" 1 20 1 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 1 14 1 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      []+      [ GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 1 5 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GadtDeriving.hs" 3 10 3 15+                , SrcSpan "tests/examples/GadtDeriving.hs" 4 5 4 5+                , SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 5+                , SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 5+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 6 3 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 6 3 9+                  , srcInfoPoints = []+                  }+                "Foo"))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 5 4 22+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/GadtDeriving.hs" 4 9 4 11 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 5 4 8+                   , srcInfoPoints = []+                   }+                 "Foo")+              Nothing+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/GadtDeriving.hs" 4 16 4 18 ]+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 15+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 15+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 15+                            , srcInfoPoints = []+                            }+                          "Int")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 19 4 22+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 19 4 22+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 19 4 22+                            , srcInfoPoints = []+                            }+                          "Foo"))))+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 31+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 13+                    , SrcSpan "tests/examples/GadtDeriving.hs" 5 14 5 15+                    , SrcSpan "tests/examples/GadtDeriving.hs" 5 17 5 18+                    , SrcSpan "tests/examples/GadtDeriving.hs" 5 21 5 22+                    , SrcSpan "tests/examples/GadtDeriving.hs" 5 30 5 31+                    ]+                }+              Nothing+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17+                             , srcInfoPoints = []+                             }+                           "Eq")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21+                             , srcInfoPoints = []+                             }+                           "Ord")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30+                             , srcInfoPoints = []+                             }+                           "Typeable")))+              ]+          ]+      ]+  , []+  )
+ tests/examples/GadtDeriving.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtDeriving.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE GADTs #-}++data Foo where+        Foo :: Int -> Foo+    deriving (Eq, Ord, Typeable)
+ tests/examples/GadtRecordFields.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE GADTs #-}++data Ty where+  TCon :: { field1 :: Int, field2 :: Bool } -> Ty+  TCon2 :: Ty
+ tests/examples/GadtRecordFields.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtRecordFields.hs.parser.golden view
@@ -0,0 +1,217 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/GadtRecordFields.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/GadtRecordFields.hs" 1 1 1 1+            , SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 3 1+            , SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 3 1+            , SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 3 1+            , SrcSpan "tests/examples/GadtRecordFields.hs" 6 1 6 1+            , SrcSpan "tests/examples/GadtRecordFields.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/GadtRecordFields.hs" 1 1 1 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GadtRecordFields.hs" 1 1 1 13+                , SrcSpan "tests/examples/GadtRecordFields.hs" 1 20 1 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/GadtRecordFields.hs" 1 14 1 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      []+      [ GDataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 6 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GadtRecordFields.hs" 3 9 3 14+                , SrcSpan "tests/examples/GadtRecordFields.hs" 4 3 4 3+                , SrcSpan "tests/examples/GadtRecordFields.hs" 5 3 5 3+                , SrcSpan "tests/examples/GadtRecordFields.hs" 6 1 6 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/GadtRecordFields.hs" 3 6 3 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/GadtRecordFields.hs" 3 6 3 8+                  , srcInfoPoints = []+                  }+                "Ty"))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/GadtRecordFields.hs" 4 3 4 50+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/GadtRecordFields.hs" 4 8 4 10+                    , SrcSpan "tests/examples/GadtRecordFields.hs" 4 11 4 12+                    , SrcSpan "tests/examples/GadtRecordFields.hs" 4 43 4 44+                    , SrcSpan "tests/examples/GadtRecordFields.hs" 4 45 4 47+                    , SrcSpan "tests/examples/GadtRecordFields.hs" 4 26 4 27+                    ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/GadtRecordFields.hs" 4 3 4 7+                   , srcInfoPoints = []+                   }+                 "TCon")+              Nothing+              Nothing+              (Just+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/GadtRecordFields.hs" 4 13 4 26+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/GadtRecordFields.hs" 4 20 4 22 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/GadtRecordFields.hs" 4 13 4 19+                           , srcInfoPoints = []+                           }+                         "field1"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/GadtRecordFields.hs" 4 23 4 26+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/GadtRecordFields.hs" 4 23 4 26+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/GadtRecordFields.hs" 4 23 4 26+                                , srcInfoPoints = []+                                }+                              "Int")))+                 , FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/GadtRecordFields.hs" 4 28 4 42+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/GadtRecordFields.hs" 4 35 4 37 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/GadtRecordFields.hs" 4 28 4 34+                           , srcInfoPoints = []+                           }+                         "field2"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/GadtRecordFields.hs" 4 38 4 42+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/GadtRecordFields.hs" 4 38 4 42+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/GadtRecordFields.hs" 4 38 4 42+                                , srcInfoPoints = []+                                }+                              "Bool")))+                 ])+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/GadtRecordFields.hs" 4 48 4 50+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/GadtRecordFields.hs" 4 48 4 50+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/GadtRecordFields.hs" 4 48 4 50+                         , srcInfoPoints = []+                         }+                       "Ty")))+          , GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/GadtRecordFields.hs" 5 3 5 14+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/GadtRecordFields.hs" 5 9 5 11 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/GadtRecordFields.hs" 5 3 5 8+                   , srcInfoPoints = []+                   }+                 "TCon2")+              Nothing+              Nothing+              Nothing+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/GadtRecordFields.hs" 5 12 5 14+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/GadtRecordFields.hs" 5 12 5 14+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/GadtRecordFields.hs" 5 12 5 14+                         , srcInfoPoints = []+                         }+                       "Ty")))+          ]+          []+      ]+  , []+  )
+ tests/examples/GadtRecordFields.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtRecordFields.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE GADTs #-}++data Ty where+        TCon :: {field1 :: Int, field2 :: Bool} -> Ty+        TCon2 :: Ty
+ tests/examples/GadtStrictness.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data X where+  X :: !Int -> X
+ tests/examples/GadtStrictness.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtStrictness.hs.parser.golden view
@@ -0,0 +1,135 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/GadtStrictness.hs" 1 1 1 1+            , SrcSpan "tests/examples/GadtStrictness.hs" 3 1 3 1+            , SrcSpan "tests/examples/GadtStrictness.hs" 3 1 3 1+            , SrcSpan "tests/examples/GadtStrictness.hs" 3 1 3 1+            , SrcSpan "tests/examples/GadtStrictness.hs" 5 1 5 1+            , SrcSpan "tests/examples/GadtStrictness.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 1 1 1 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GadtStrictness.hs" 1 1 1 13+                , SrcSpan "tests/examples/GadtStrictness.hs" 1 20 1 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/GadtStrictness.hs" 1 14 1 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      []+      [ GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 3 1 5 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GadtStrictness.hs" 3 8 3 13+                , SrcSpan "tests/examples/GadtStrictness.hs" 4 3 4 3+                , SrcSpan "tests/examples/GadtStrictness.hs" 5 1 5 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 3 6 3 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 3 6 3 7+                  , srcInfoPoints = []+                  }+                "X"))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 3 4 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/GadtStrictness.hs" 4 5 4 7 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 3 4 4+                   , srcInfoPoints = []+                   }+                 "X")+              Nothing+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 8 4 17+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/GadtStrictness.hs" 4 13 4 15 ]+                   }+                 (TyBang+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 8 4 12+                      , srcInfoPoints = []+                      }+                    (BangedTy+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 8 4 9+                         , srcInfoPoints = []+                         })+                    (NoUnpackPragma+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+                         , srcInfoPoints = []+                         })+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 9 4 12+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 9 4 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 9 4 12+                               , srcInfoPoints = []+                               }+                             "Int"))))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/GadtStrictness.hs" 4 16 4 17+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/GadtStrictness.hs" 4 16 4 17+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/GadtStrictness.hs" 4 16 4 17+                            , srcInfoPoints = []+                            }+                          "X"))))+          ]+          []+      ]+  , []+  )
+ tests/examples/GadtStrictness.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtStrictness.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data X where+        X :: !Int -> X
+ tests/examples/GenericTree.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE RankNTypes #-}+module GenericTree where++import Data.Typeable++dynRep :: (Typeable a) => a -> (TypeRep, forall b. (Typeable b) => b -> (Maybe b))+dynRep a = (typeOf a, \_ -> cast a)
+ tests/examples/GenericTree.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GenericTree.hs.parser.golden view
@@ -0,0 +1,479 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/GenericTree.hs" 1 1 1 1+            , SrcSpan "tests/examples/GenericTree.hs" 2 1 2 1+            , SrcSpan "tests/examples/GenericTree.hs" 2 1 2 1+            , SrcSpan "tests/examples/GenericTree.hs" 4 1 4 1+            , SrcSpan "tests/examples/GenericTree.hs" 6 1 6 1+            , SrcSpan "tests/examples/GenericTree.hs" 7 1 7 1+            , SrcSpan "tests/examples/GenericTree.hs" 8 1 8 1+            , SrcSpan "tests/examples/GenericTree.hs" 8 1 8 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 2 1 2 25+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/GenericTree.hs" 2 1 2 7+                  , SrcSpan "tests/examples/GenericTree.hs" 2 20 2 25+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 2 8 2 19+                 , srcInfoPoints = []+                 }+               "GenericTree")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 1 1 1 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GenericTree.hs" 1 1 1 13+                , SrcSpan "tests/examples/GenericTree.hs" 1 25 1 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 1 14 1 24+                , srcInfoPoints = []+                }+              "RankNTypes"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 4 1 4 21+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/GenericTree.hs" 4 1 4 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 4 8 4 21+                  , srcInfoPoints = []+                  }+                "Data.Typeable"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 1 6 83+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GenericTree.hs" 6 8 6 10 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 1 6 7+                , srcInfoPoints = []+                }+              "dynRep"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 11 6 83+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 11 6 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/GenericTree.hs" 6 11 6 12+                         , SrcSpan "tests/examples/GenericTree.hs" 6 22 6 23+                         , SrcSpan "tests/examples/GenericTree.hs" 6 24 6 26+                         ]+                     }+                   (ParenA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 11 6 26+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/GenericTree.hs" 6 11 6 12+                            , SrcSpan "tests/examples/GenericTree.hs" 6 22 6 23+                            , SrcSpan "tests/examples/GenericTree.hs" 6 24 6 26+                            ]+                        }+                      (TypeA+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22+                           , srcInfoPoints = []+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20+                                       , srcInfoPoints = []+                                       }+                                     "Typeable")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22+                                    , srcInfoPoints = []+                                    }+                                  "a")))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 27 6 83+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/GenericTree.hs" 6 29 6 31 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 27 6 28+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 27 6 28+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 32 6 83+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/GenericTree.hs" 6 32 6 33+                         , SrcSpan "tests/examples/GenericTree.hs" 6 40 6 41+                         , SrcSpan "tests/examples/GenericTree.hs" 6 82 6 83+                         ]+                     }+                   Boxed+                   [ TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 33 6 40+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 33 6 40+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 33 6 40+                               , srcInfoPoints = []+                               }+                             "TypeRep"))+                   , TyForall+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 42 6 82+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/GenericTree.hs" 6 42 6 48+                             , SrcSpan "tests/examples/GenericTree.hs" 6 50 6 51+                             ]+                         }+                       (Just+                          [ UnkindedVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 49 6 50+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 49 6 50+                                   , srcInfoPoints = []+                                   }+                                 "b")+                          ])+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 52 6 67+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/GenericTree.hs" 6 52 6 53+                                   , SrcSpan "tests/examples/GenericTree.hs" 6 63 6 64+                                   , SrcSpan "tests/examples/GenericTree.hs" 6 65 6 67+                                   ]+                               }+                             (ParenA+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 52 6 67+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/GenericTree.hs" 6 52 6 53+                                      , SrcSpan "tests/examples/GenericTree.hs" 6 63 6 64+                                      , SrcSpan "tests/examples/GenericTree.hs" 6 65 6 67+                                      ]+                                  }+                                (TypeA+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/GenericTree.hs" 6 53 6 61+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/GenericTree.hs" 6 53 6 61+                                                 , srcInfoPoints = []+                                                 }+                                               "Typeable")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63+                                              , srcInfoPoints = []+                                              }+                                            "b")))))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 68 6 82+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/GenericTree.hs" 6 70 6 72 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 68 6 69+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 68 6 69+                                  , srcInfoPoints = []+                                  }+                                "b"))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 73 6 82+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/GenericTree.hs" 6 73 6 74+                                   , SrcSpan "tests/examples/GenericTree.hs" 6 81 6 82+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 74 6 81+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/GenericTree.hs" 6 74 6 79+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/GenericTree.hs" 6 74 6 79+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/GenericTree.hs" 6 74 6 79+                                           , srcInfoPoints = []+                                           }+                                         "Maybe")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/GenericTree.hs" 6 80 6 81+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/GenericTree.hs" 6 80 6 81+                                        , srcInfoPoints = []+                                        }+                                      "b")))))+                   ])))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 1 7 36+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 1 7 36+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 1 7 7+                   , srcInfoPoints = []+                   }+                 "dynRep")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 8 7 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 8 7 9+                       , srcInfoPoints = []+                       }+                     "a")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 10 7 36+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/GenericTree.hs" 7 10 7 11 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 12 7 36+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/GenericTree.hs" 7 12 7 13+                          , SrcSpan "tests/examples/GenericTree.hs" 7 21 7 22+                          , SrcSpan "tests/examples/GenericTree.hs" 7 35 7 36+                          ]+                      }+                    Boxed+                    [ App+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 13 7 21+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 13 7 19+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 13 7 19+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 13 7 19+                                   , srcInfoPoints = []+                                   }+                                 "typeOf")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 20 7 21+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 20 7 21+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 20 7 21+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                    , Lambda+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 23 7 35+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/GenericTree.hs" 7 23 7 24+                              , SrcSpan "tests/examples/GenericTree.hs" 7 26 7 28+                              ]+                          }+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 24 7 25+                              , srcInfoPoints = []+                              }+                        ]+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 29 7 35+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 29 7 33+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 29 7 33+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/GenericTree.hs" 7 29 7 33+                                      , srcInfoPoints = []+                                      }+                                    "cast")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 34 7 35+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 34 7 35+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/GenericTree.hs" 7 34 7 35+                                      , srcInfoPoints = []+                                      }+                                    "a"))))+                    ]))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/GenericTree.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GenericTree.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE RankNTypes #-}+module GenericTree where+import Data.Typeable++dynRep ::+         (Typeable a) =>+         a -> (TypeRep, forall b . (Typeable b) => b -> (Maybe b))+dynRep a = (typeOf a, \ _ -> cast a)
+ tests/examples/GhcDeriving.hs view
@@ -0,0 +1,4 @@+++newtype CodeGenModule a = CGM (StateT CGMState IO a)+   deriving (Monad, MonadState [s], MonadIO)
+ tests/examples/GhcDeriving.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GhcDeriving.hs.parser.golden view
@@ -0,0 +1,271 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 1+            , SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 1+            , SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 1+            , SrcSpan "tests/examples/GhcDeriving.hs" 5 1 5 1+            , SrcSpan "tests/examples/GhcDeriving.hs" 5 1 5 1+            ]+        }+      Nothing+      []+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 1 4 45+            , srcInfoPoints =+                [ SrcSpan "tests/examples/GhcDeriving.hs" 3 25 3 26 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 9 3 24+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 9 3 22+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 9 3 22+                     , srcInfoPoints = []+                     }+                   "CodeGenModule"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 23 3 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 23 3 24+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 27 3 53+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 27 3 53+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 27 3 30+                      , srcInfoPoints = []+                      }+                    "CGM")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 31 3 53+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/GhcDeriving.hs" 3 31 3 32+                           , SrcSpan "tests/examples/GhcDeriving.hs" 3 52 3 53+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 52+                          , srcInfoPoints = []+                          }+                        (TyApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 50+                             , srcInfoPoints = []+                             }+                           (TyApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 47+                                , srcInfoPoints = []+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 38+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 38+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 38+                                         , srcInfoPoints = []+                                         }+                                       "StateT")))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 39 3 47+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/GhcDeriving.hs" 3 39 3 47+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/GhcDeriving.hs" 3 39 3 47+                                         , srcInfoPoints = []+                                         }+                                       "CGMState"))))+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 48 3 50+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 48 3 50+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/GhcDeriving.hs" 3 48 3 50+                                      , srcInfoPoints = []+                                      }+                                    "IO"))))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 51 3 52+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 51 3 52+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 4 4 45+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/GhcDeriving.hs" 4 4 4 12+                    , SrcSpan "tests/examples/GhcDeriving.hs" 4 13 4 14+                    , SrcSpan "tests/examples/GhcDeriving.hs" 4 19 4 20+                    , SrcSpan "tests/examples/GhcDeriving.hs" 4 35 4 36+                    , SrcSpan "tests/examples/GhcDeriving.hs" 4 44 4 45+                    ]+                }+              Nothing+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19+                             , srcInfoPoints = []+                             }+                           "Monad")))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 35+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHApp+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 35+                       , srcInfoPoints = []+                       }+                     (IHCon+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 31+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 31+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 31+                                , srcInfoPoints = []+                                }+                              "MonadState")))+                     (TyList+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 32 4 35+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/GhcDeriving.hs" 4 32 4 33+                              , SrcSpan "tests/examples/GhcDeriving.hs" 4 34 4 35+                              ]+                          }+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 33 4 34+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 33 4 34+                                , srcInfoPoints = []+                                }+                              "s"))))+              , IRule+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44+                             , srcInfoPoints = []+                             }+                           "MonadIO")))+              ]+          ]+      ]+  , []+  )
+ tests/examples/GhcDeriving.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GhcDeriving.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+newtype CodeGenModule a = CGM (StateT CGMState IO a)+                            deriving (Monad, MonadState [s], MonadIO)
+ tests/examples/GroupKeyword.hs view
@@ -0,0 +1,4 @@+-- {-# LANGUAGE TransformListComp #-}+module GroupKeyword where++a = map head $ group $ sort [1..100]
+ tests/examples/GroupKeyword.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GroupKeyword.hs.parser.golden view
@@ -0,0 +1,210 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 2 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/GroupKeyword.hs" 2 1 2 1+            , SrcSpan "tests/examples/GroupKeyword.hs" 2 1 2 1+            , SrcSpan "tests/examples/GroupKeyword.hs" 4 1 4 1+            , SrcSpan "tests/examples/GroupKeyword.hs" 5 1 5 1+            , SrcSpan "tests/examples/GroupKeyword.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 2 1 2 26+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/GroupKeyword.hs" 2 1 2 7+                  , SrcSpan "tests/examples/GroupKeyword.hs" 2 21 2 26+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 2 8 2 20+                 , srcInfoPoints = []+                 }+               "GroupKeyword")+            Nothing+            Nothing))+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 1 4 37+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 1 4 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 1 4 2+                  , srcInfoPoints = []+                  }+                "a"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 3 4 37+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/GroupKeyword.hs" 4 3 4 4 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 37+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 13+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 8+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 8+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 8+                              , srcInfoPoints = []+                              }+                            "map")))+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 9 4 13+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 9 4 13+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 9 4 13+                              , srcInfoPoints = []+                              }+                            "head"))))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 14 4 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 14 4 15+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 14 4 15+                           , srcInfoPoints = []+                           }+                         "$")))+                (InfixApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 16 4 37+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 16 4 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 16 4 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 16 4 21+                              , srcInfoPoints = []+                              }+                            "group")))+                   (QVarOp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 22 4 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 22 4 23+                           , srcInfoPoints = []+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 22 4 23+                              , srcInfoPoints = []+                              }+                            "$")))+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 24 4 37+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 24 4 28+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 24 4 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 24 4 28+                                 , srcInfoPoints = []+                                 }+                               "sort")))+                      (EnumFromTo+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 29 4 37+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/GroupKeyword.hs" 4 29 4 30+                               , SrcSpan "tests/examples/GroupKeyword.hs" 4 31 4 33+                               , SrcSpan "tests/examples/GroupKeyword.hs" 4 36 4 37+                               ]+                           }+                         (Lit+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 30 4 31+                              , srcInfoPoints = []+                              }+                            (Int+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 30 4 31+                                 , srcInfoPoints = []+                                 }+                               1+                               "1"))+                         (Lit+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 33 4 36+                              , srcInfoPoints = []+                              }+                            (Int+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 33 4 36+                                 , srcInfoPoints = []+                                 }+                               100+                               "100")))))))+          Nothing+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/GroupKeyword.hs" 1 1 1 38)+        " {-# LANGUAGE TransformListComp #-}"+    ]+  )
+ tests/examples/GroupKeyword.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GroupKeyword.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module GroupKeyword where+a = map head $ group $ sort [1 .. 100]
+ tests/examples/HaddockComments.hs view
@@ -0,0 +1,56 @@+{-|+Module      : W+Description : Short description+Copyright   : (c) Some Guy, 2013+                  Someone Else, 2014+License     : GPL-3+Maintainer  : sample@email.com+Stability   : experimental+Portability : POSIX++Here is a longer description of this module, containing some+commentary with @some markup@.+-}+module HaddockComments where++-- | Function1 comment+fun1+   :: Int      -- ^ The 'Int' argument+   -> Float    -- ^ The 'Float' argument+   -> IO ()    -- ^ The return value+fun1 = undefined+++-- not a haddock comment+fun2 = undefined++fun3 :: Int -> Int+-- ^ Function3 comment+fun3 = undefined++{-|+  The 'square' function squares an integer.+  It takes one argument, of type 'Int'.+-}+square :: Int -> Int+square x = x * x -- beware!++class C a where+   -- | This is the documentation for the 'f' method+   f :: a -> Int+   -- | This is the documentation for the 'g' method+   g :: Int -> a++-- | Data type comment+-- With a second line+data MyData =+  -- | Constructor1 comment+  Cons1+    { cons1Field1 :: Int -- ^ Constructor 1 field 1 comment+                         -- spanning two lines+      -- | Constructor 1 field 2 comment+    , cons1Field2 :: Int+    , cons1Field3 :: String -- Not a haddock comment+    }+  | Cons2 -- ^ Constructor 2 comment+      Int -- ^ Last
+ tests/examples/HaddockComments.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HaddockComments.hs.parser.golden view
@@ -0,0 +1,983 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/HaddockComments.hs" 14 1 57 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/HaddockComments.hs" 14 1 14 1+            , SrcSpan "tests/examples/HaddockComments.hs" 14 1 14 1+            , SrcSpan "tests/examples/HaddockComments.hs" 17 1 17 1+            , SrcSpan "tests/examples/HaddockComments.hs" 21 1 21 1+            , SrcSpan "tests/examples/HaddockComments.hs" 25 1 25 1+            , SrcSpan "tests/examples/HaddockComments.hs" 27 1 27 1+            , SrcSpan "tests/examples/HaddockComments.hs" 29 1 29 1+            , SrcSpan "tests/examples/HaddockComments.hs" 35 1 35 1+            , SrcSpan "tests/examples/HaddockComments.hs" 36 1 36 1+            , SrcSpan "tests/examples/HaddockComments.hs" 38 1 38 1+            , SrcSpan "tests/examples/HaddockComments.hs" 46 1 46 1+            , SrcSpan "tests/examples/HaddockComments.hs" 57 1 57 1+            , SrcSpan "tests/examples/HaddockComments.hs" 57 1 57 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/HaddockComments.hs" 14 1 14 29+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/HaddockComments.hs" 14 1 14 7+                  , SrcSpan "tests/examples/HaddockComments.hs" 14 24 14 29+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/HaddockComments.hs" 14 8 14 23+                 , srcInfoPoints = []+                 }+               "HaddockComments")+            Nothing+            Nothing))+      []+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaddockComments.hs" 17 1 20 12+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HaddockComments.hs" 18 4 18 6 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/HaddockComments.hs" 17 1 17 5+                , srcInfoPoints = []+                }+              "fun1"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 18 7 20 12+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/HaddockComments.hs" 19 4 19 6 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 18 7 18 10+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 18 7 18 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 18 7 18 10+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 19 7 20 12+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/HaddockComments.hs" 20 4 20 6 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 19 7 19 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 19 7 19 12+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/HaddockComments.hs" 19 7 19 12+                           , srcInfoPoints = []+                           }+                         "Float")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 20 7 20 12+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 20 7 20 9+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/HaddockComments.hs" 20 7 20 9+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/HaddockComments.hs" 20 7 20 9+                              , srcInfoPoints = []+                              }+                            "IO")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 12+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 11+                            , SrcSpan "tests/examples/HaddockComments.hs" 20 11 20 12+                            ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 12+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 11+                               , SrcSpan "tests/examples/HaddockComments.hs" 20 11 20 12+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 12+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 11+                                  , SrcSpan "tests/examples/HaddockComments.hs" 20 11 20 12+                                  ]+                              }))))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaddockComments.hs" 21 1 21 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 21 1 21 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 21 1 21 5+                  , srcInfoPoints = []+                  }+                "fun1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 21 6 21 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/HaddockComments.hs" 21 6 21 7 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 21 8 21 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 21 8 21 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 21 8 21 17+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaddockComments.hs" 25 1 25 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 25 1 25 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 25 1 25 5+                  , srcInfoPoints = []+                  }+                "fun2"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 25 6 25 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/HaddockComments.hs" 25 6 25 7 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 25 8 25 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 25 8 25 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 25 8 25 17+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaddockComments.hs" 27 1 27 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HaddockComments.hs" 27 6 27 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/HaddockComments.hs" 27 1 27 5+                , srcInfoPoints = []+                }+              "fun3"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 27 9 27 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/HaddockComments.hs" 27 13 27 15 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 27 9 27 12+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 27 9 27 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 27 9 27 12+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 27 16 27 19+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 27 16 27 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 27 16 27 19+                        , srcInfoPoints = []+                        }+                      "Int"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaddockComments.hs" 29 1 29 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 29 1 29 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 29 1 29 5+                  , srcInfoPoints = []+                  }+                "fun3"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 29 6 29 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/HaddockComments.hs" 29 6 29 7 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 29 8 29 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 29 8 29 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 29 8 29 17+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaddockComments.hs" 35 1 35 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HaddockComments.hs" 35 8 35 10 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/HaddockComments.hs" 35 1 35 7+                , srcInfoPoints = []+                }+              "square"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 35 11 35 21+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/HaddockComments.hs" 35 15 35 17 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 35 11 35 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 35 11 35 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 35 11 35 14+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 35 18 35 21+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 35 18 35 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/HaddockComments.hs" 35 18 35 21+                        , srcInfoPoints = []+                        }+                      "Int"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaddockComments.hs" 36 1 36 17+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/HaddockComments.hs" 36 1 36 17+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/HaddockComments.hs" 36 1 36 7+                   , srcInfoPoints = []+                   }+                 "square")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/HaddockComments.hs" 36 8 36 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/HaddockComments.hs" 36 8 36 9+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/HaddockComments.hs" 36 10 36 17+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/HaddockComments.hs" 36 10 36 11 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HaddockComments.hs" 36 12 36 17+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/HaddockComments.hs" 36 12 36 13+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaddockComments.hs" 36 12 36 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaddockComments.hs" 36 12 36 13+                               , srcInfoPoints = []+                               }+                             "x")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/HaddockComments.hs" 36 14 36 15+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaddockComments.hs" 36 14 36 15+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaddockComments.hs" 36 14 36 15+                               , srcInfoPoints = []+                               }+                             "*")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/HaddockComments.hs" 36 16 36 17+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaddockComments.hs" 36 16 36 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaddockComments.hs" 36 16 36 17+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaddockComments.hs" 38 1 42 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HaddockComments.hs" 38 1 38 6+                , SrcSpan "tests/examples/HaddockComments.hs" 38 11 38 16+                , SrcSpan "tests/examples/HaddockComments.hs" 40 4 40 4+                , SrcSpan "tests/examples/HaddockComments.hs" 42 4 42 4+                , SrcSpan "tests/examples/HaddockComments.hs" 46 1 46 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 38 7 38 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 38 7 38 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 38 7 38 8+                     , srcInfoPoints = []+                     }+                   "C"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 38 9 38 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/HaddockComments.hs" 38 9 38 10+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/HaddockComments.hs" 40 4 40 17+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/HaddockComments.hs" 40 6 40 8 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HaddockComments.hs" 40 4 40 17+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/HaddockComments.hs" 40 6 40 8 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HaddockComments.hs" 40 4 40 5+                          , srcInfoPoints = []+                          }+                        "f"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/HaddockComments.hs" 40 9 40 17+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/HaddockComments.hs" 40 11 40 13 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaddockComments.hs" 40 9 40 10+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaddockComments.hs" 40 9 40 10+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaddockComments.hs" 40 14 40 17+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaddockComments.hs" 40 14 40 17+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/HaddockComments.hs" 40 14 40 17+                                  , srcInfoPoints = []+                                  }+                                "Int")))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/HaddockComments.hs" 42 4 42 17+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/HaddockComments.hs" 42 6 42 8 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HaddockComments.hs" 42 4 42 17+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/HaddockComments.hs" 42 6 42 8 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HaddockComments.hs" 42 4 42 5+                          , srcInfoPoints = []+                          }+                        "g"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/HaddockComments.hs" 42 9 42 17+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/HaddockComments.hs" 42 13 42 15 ]+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaddockComments.hs" 42 9 42 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaddockComments.hs" 42 9 42 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/HaddockComments.hs" 42 9 42 12+                                  , srcInfoPoints = []+                                  }+                                "Int")))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaddockComments.hs" 42 16 42 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaddockComments.hs" 42 16 42 17+                               , srcInfoPoints = []+                               }+                             "a"))))+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaddockComments.hs" 46 1 56 10+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HaddockComments.hs" 46 13 46 14+                , SrcSpan "tests/examples/HaddockComments.hs" 55 3 55 4+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 46 1 46 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaddockComments.hs" 46 6 46 12+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaddockComments.hs" 46 6 46 12+                  , srcInfoPoints = []+                  }+                "MyData"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/HaddockComments.hs" 48 3 54 6+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/HaddockComments.hs" 49 5 49 6+                    , SrcSpan "tests/examples/HaddockComments.hs" 52 5 52 6+                    , SrcSpan "tests/examples/HaddockComments.hs" 53 5 53 6+                    , SrcSpan "tests/examples/HaddockComments.hs" 54 5 54 6+                    ]+                }+              Nothing+              Nothing+              (RecDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/HaddockComments.hs" 48 3 54 6+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/HaddockComments.hs" 49 5 49 6+                       , SrcSpan "tests/examples/HaddockComments.hs" 52 5 52 6+                       , SrcSpan "tests/examples/HaddockComments.hs" 53 5 53 6+                       , SrcSpan "tests/examples/HaddockComments.hs" 54 5 54 6+                       ]+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HaddockComments.hs" 48 3 48 8+                      , srcInfoPoints = []+                      }+                    "Cons1")+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/HaddockComments.hs" 49 7 49 25+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/HaddockComments.hs" 49 19 49 21 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/HaddockComments.hs" 49 7 49 18+                           , srcInfoPoints = []+                           }+                         "cons1Field1"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HaddockComments.hs" 49 22 49 25+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HaddockComments.hs" 49 22 49 25+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HaddockComments.hs" 49 22 49 25+                                , srcInfoPoints = []+                                }+                              "Int")))+                 , FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/HaddockComments.hs" 52 7 52 25+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/HaddockComments.hs" 52 19 52 21 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/HaddockComments.hs" 52 7 52 18+                           , srcInfoPoints = []+                           }+                         "cons1Field2"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HaddockComments.hs" 52 22 52 25+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HaddockComments.hs" 52 22 52 25+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HaddockComments.hs" 52 22 52 25+                                , srcInfoPoints = []+                                }+                              "Int")))+                 , FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/HaddockComments.hs" 53 7 53 28+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/HaddockComments.hs" 53 19 53 21 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/HaddockComments.hs" 53 7 53 18+                           , srcInfoPoints = []+                           }+                         "cons1Field3"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HaddockComments.hs" 53 22 53 28+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HaddockComments.hs" 53 22 53 28+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HaddockComments.hs" 53 22 53 28+                                , srcInfoPoints = []+                                }+                              "String")))+                 ])+          , QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/HaddockComments.hs" 55 5 56 10+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/HaddockComments.hs" 55 5 56 10+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HaddockComments.hs" 55 5 55 10+                      , srcInfoPoints = []+                      }+                    "Cons2")+                 [ TyCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/HaddockComments.hs" 56 7 56 10+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HaddockComments.hs" 56 7 56 10+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HaddockComments.hs" 56 7 56 10+                             , srcInfoPoints = []+                             }+                           "Int"))+                 ])+          ]+          []+      ]+  , [ Comment+        True+        (SrcSpan "tests/examples/HaddockComments.hs" 1 1 13 3)+        "|\nModule      : W\nDescription : Short description\nCopyright   : (c) Some Guy, 2013\n                  Someone Else, 2014\nLicense     : GPL-3\nMaintainer  : sample@email.com\nStability   : experimental\nPortability : POSIX\n\nHere is a longer description of this module, containing some\ncommentary with @some markup@.\n"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 16 1 16 23)+        " | Function1 comment"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 18 16 18 39)+        " ^ The 'Int' argument"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 19 16 19 41)+        " ^ The 'Float' argument"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 20 16 20 37)+        " ^ The return value"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 24 1 24 25)+        " not a haddock comment"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 28 1 28 23)+        " ^ Function3 comment"+    , Comment+        True+        (SrcSpan "tests/examples/HaddockComments.hs" 31 1 34 3)+        "|\n  The 'square' function squares an integer.\n  It takes one argument, of type 'Int'.\n"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 36 18 36 28)+        " beware!"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 39 4 39 53)+        " | This is the documentation for the 'f' method"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 41 4 41 53)+        " | This is the documentation for the 'g' method"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 44 1 44 23)+        " | Data type comment"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 45 1 45 22)+        " With a second line"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 47 3 47 28)+        " | Constructor1 comment"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 49 26 49 60)+        " ^ Constructor 1 field 1 comment"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 50 26 50 47)+        " spanning two lines"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 51 7 51 41)+        " | Constructor 1 field 2 comment"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 53 29 53 53)+        " Not a haddock comment"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 55 11 55 37)+        " ^ Constructor 2 comment"+    , Comment+        False+        (SrcSpan "tests/examples/HaddockComments.hs" 56 11 56 20)+        " ^ Last"+    ]+  )
+ tests/examples/HaddockComments.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HaddockComments.hs.prettyprinter.golden view
@@ -0,0 +1,20 @@+module HaddockComments where++fun1 :: Int -> Float -> IO ()+fun1 = undefined+fun2 = undefined++fun3 :: Int -> Int+fun3 = undefined++square :: Int -> Int+square x = x * x++class C a where+        f :: a -> Int+        +        g :: Int -> a++data MyData = Cons1{cons1Field1 :: Int, cons1Field2 :: Int,+                    cons1Field3 :: String}+            | Cons2 Int
+ tests/examples/HappyDoAction.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE MagicHash #-}+module HappyDoAction where++foo :: Int#++happyDoAction i tk st+    = {- nothing -}+++      case action of+        0#        -> {- nothing -}+                     happyFail i tk st+        -1#       -> {- nothing -}+                     happyAccept i tk st+        n | (n <# (0# :: Int#)) -> {- nothing -}++                     (happyReduceArr ! rule) i tk st+                     where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))+        n         -> {- nothing -}+++                     happyShift new_state i tk st+                     where new_state = (n -# (1# :: Int#))+   where off    = indexShortOffAddr happyActOffsets st+         off_i  = (off +# i)+         check  = if (off_i >=# (0# :: Int#))+                   then (indexShortOffAddr happyCheck off_i ==#  i)+                   else False+         action | check     = indexShortOffAddr happyTable off_i+                | otherwise = indexShortOffAddr happyDefActions st
+ tests/examples/HappyDoAction.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HappyDoAction.hs.parser.golden view
@@ -0,0 +1,2443 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 1 1 31 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/HappyDoAction.hs" 1 1 1 1+            , SrcSpan "tests/examples/HappyDoAction.hs" 2 1 2 1+            , SrcSpan "tests/examples/HappyDoAction.hs" 2 1 2 1+            , SrcSpan "tests/examples/HappyDoAction.hs" 4 1 4 1+            , SrcSpan "tests/examples/HappyDoAction.hs" 6 1 6 1+            , SrcSpan "tests/examples/HappyDoAction.hs" 31 1 31 1+            , SrcSpan "tests/examples/HappyDoAction.hs" 31 1 31 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 2 1 2 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/HappyDoAction.hs" 2 1 2 7+                  , SrcSpan "tests/examples/HappyDoAction.hs" 2 22 2 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 2 8 2 21+                 , srcInfoPoints = []+                 }+               "HappyDoAction")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 1 1 1 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HappyDoAction.hs" 1 1 1 13+                , SrcSpan "tests/examples/HappyDoAction.hs" 1 24 1 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "MagicHash"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 1 4 12+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HappyDoAction.hs" 4 5 4 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 1 4 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 8 4 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 8 4 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 8 4 12+                     , srcInfoPoints = []+                     }+                   "Int#")))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 1 30 67+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HappyDoAction.hs" 24 4 24 9 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 1 30 67+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/HappyDoAction.hs" 24 4 24 9 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 1 6 14+                   , srcInfoPoints = []+                   }+                 "happyDoAction")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 15 6 16+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 15 6 16+                       , srcInfoPoints = []+                       }+                     "i")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 17 6 19+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 17 6 19+                       , srcInfoPoints = []+                       }+                     "tk")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 20 6 22+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 20 6 22+                       , srcInfoPoints = []+                       }+                     "st")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 7 5 23 59+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/HappyDoAction.hs" 7 5 7 6 ]+                   }+                 (Case+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HappyDoAction.hs" 10 7 23 59+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/HappyDoAction.hs" 10 7 10 11+                          , SrcSpan "tests/examples/HappyDoAction.hs" 10 19 10 21+                          , SrcSpan "tests/examples/HappyDoAction.hs" 11 9 11 9+                          , SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 9+                          , SrcSpan "tests/examples/HappyDoAction.hs" 15 9 15 9+                          , SrcSpan "tests/examples/HappyDoAction.hs" 19 9 19 9+                          , SrcSpan "tests/examples/HappyDoAction.hs" 24 4 24 0+                          ]+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/HappyDoAction.hs" 10 12 10 18+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HappyDoAction.hs" 10 12 10 18+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HappyDoAction.hs" 10 12 10 18+                               , srcInfoPoints = []+                               }+                             "action")))+                    [ Alt+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HappyDoAction.hs" 11 9 12 39+                          , srcInfoPoints = []+                          }+                        (PLit+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 11 9 11 11+                             , srcInfoPoints = []+                             }+                           (Signless+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 11 9 11 11+                                , srcInfoPoints = []+                                })+                           (PrimInt+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 11 9 11 11+                                , srcInfoPoints = []+                                }+                              0+                              "0"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 11 19 12 39+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/HappyDoAction.hs" 11 19 11 21 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 12 22 12 39+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 12 22 12 36+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 12 22 12 33+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 12 22 12 31+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 12 22 12 31+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 12 22 12 31+                                               , srcInfoPoints = []+                                               }+                                             "happyFail")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 12 32 12 33+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 12 32 12 33+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 12 32 12 33+                                               , srcInfoPoints = []+                                               }+                                             "i"))))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 12 34 12 36+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 12 34 12 36+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 12 34 12 36+                                            , srcInfoPoints = []+                                            }+                                          "tk"))))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 12 37 12 39+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 12 37 12 39+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 12 37 12 39+                                         , srcInfoPoints = []+                                         }+                                       "st")))))+                        Nothing+                    , Alt+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HappyDoAction.hs" 13 9 14 41+                          , srcInfoPoints = []+                          }+                        (PLit+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 12+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 10 ]+                             }+                           (Negative+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 10+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 10 ]+                                })+                           (PrimInt+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 13 10 13 12+                                , srcInfoPoints = []+                                }+                              1+                              "1"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 13 19 14 41+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/HappyDoAction.hs" 13 19 13 21 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 14 22 14 41+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 14 22 14 38+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 14 22 14 35+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 14 22 14 33+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 14 22 14 33+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 14 22 14 33+                                               , srcInfoPoints = []+                                               }+                                             "happyAccept")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 14 34 14 35+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 14 34 14 35+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 14 34 14 35+                                               , srcInfoPoints = []+                                               }+                                             "i"))))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 14 36 14 38+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 14 36 14 38+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 14 36 14 38+                                            , srcInfoPoints = []+                                            }+                                          "tk"))))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 14 39 14 41+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 14 39 14 41+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 14 39 14 41+                                         , srcInfoPoints = []+                                         }+                                       "st")))))+                        Nothing+                    , Alt+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HappyDoAction.hs" 15 9 18 76+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/HappyDoAction.hs" 18 22 18 27 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 15 9 15 10+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 15 9 15 10+                                , srcInfoPoints = []+                                }+                              "n"))+                        (GuardedRhss+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 15 11 17 53+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/HappyDoAction.hs" 15 11 15 12+                                 , SrcSpan "tests/examples/HappyDoAction.hs" 15 33 15 35+                                 ]+                             }+                           [ GuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/HappyDoAction.hs" 15 11 17 53+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/HappyDoAction.hs" 15 11 15 12+                                     , SrcSpan "tests/examples/HappyDoAction.hs" 15 33 15 35+                                     ]+                                 }+                               [ Qualifier+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/HappyDoAction.hs" 15 13 15 32+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/HappyDoAction.hs" 15 13 15 14+                                         , SrcSpan "tests/examples/HappyDoAction.hs" 15 31 15 32+                                         ]+                                     }+                                   (Paren+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/HappyDoAction.hs" 15 13 15 32+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/HappyDoAction.hs" 15 13 15 14+                                            , SrcSpan "tests/examples/HappyDoAction.hs" 15 31 15 32+                                            ]+                                        }+                                      (InfixApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/HappyDoAction.hs" 15 14 15 31+                                           , srcInfoPoints = []+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/HappyDoAction.hs" 15 14 15 15+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/HappyDoAction.hs" 15 14 15 15+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/HappyDoAction.hs"+                                                          15+                                                          14+                                                          15+                                                          15+                                                    , srcInfoPoints = []+                                                    }+                                                  "n")))+                                         (QVarOp+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/HappyDoAction.hs" 15 16 15 18+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/HappyDoAction.hs" 15 16 15 18+                                                 , srcInfoPoints = []+                                                 }+                                               (Symbol+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/HappyDoAction.hs"+                                                          15+                                                          16+                                                          15+                                                          18+                                                    , srcInfoPoints = []+                                                    }+                                                  "<#")))+                                         (Paren+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/HappyDoAction.hs" 15 19 15 31+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 15 19 15 20+                                                  , SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 15 30 15 31+                                                  ]+                                              }+                                            (ExpTypeSig+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/HappyDoAction.hs" 15 20 15 30+                                                 , srcInfoPoints =+                                                     [ SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         15+                                                         23+                                                         15+                                                         25+                                                     ]+                                                 }+                                               (Lit+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/HappyDoAction.hs"+                                                          15+                                                          20+                                                          15+                                                          22+                                                    , srcInfoPoints = []+                                                    }+                                                  (PrimInt+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/HappyDoAction.hs"+                                                             15+                                                             20+                                                             15+                                                             22+                                                       , srcInfoPoints = []+                                                       }+                                                     0+                                                     "0"))+                                               (TyCon+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/HappyDoAction.hs"+                                                          15+                                                          26+                                                          15+                                                          30+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/HappyDoAction.hs"+                                                             15+                                                             26+                                                             15+                                                             30+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/HappyDoAction.hs"+                                                                15+                                                                26+                                                                15+                                                                30+                                                          , srcInfoPoints = []+                                                          }+                                                        "Int#")))))))+                               ]+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/HappyDoAction.hs" 17 22 17 53+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 17 22 17 50+                                       , srcInfoPoints = []+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 17 22 17 47+                                          , srcInfoPoints = []+                                          }+                                        (Paren+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 17 22 17 45+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 17 22 17 23+                                                 , SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 17 44 17 45+                                                 ]+                                             }+                                           (InfixApp+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 17 23 17 44+                                                , srcInfoPoints = []+                                                }+                                              (Var+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         17+                                                         23+                                                         17+                                                         37+                                                   , srcInfoPoints = []+                                                   }+                                                 (UnQual+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/HappyDoAction.hs"+                                                            17+                                                            23+                                                            17+                                                            37+                                                      , srcInfoPoints = []+                                                      }+                                                    (Ident+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/HappyDoAction.hs"+                                                               17+                                                               23+                                                               17+                                                               37+                                                         , srcInfoPoints = []+                                                         }+                                                       "happyReduceArr")))+                                              (QVarOp+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         17+                                                         38+                                                         17+                                                         39+                                                   , srcInfoPoints = []+                                                   }+                                                 (UnQual+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/HappyDoAction.hs"+                                                            17+                                                            38+                                                            17+                                                            39+                                                      , srcInfoPoints = []+                                                      }+                                                    (Symbol+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/HappyDoAction.hs"+                                                               17+                                                               38+                                                               17+                                                               39+                                                         , srcInfoPoints = []+                                                         }+                                                       "!")))+                                              (Var+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         17+                                                         40+                                                         17+                                                         44+                                                   , srcInfoPoints = []+                                                   }+                                                 (UnQual+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/HappyDoAction.hs"+                                                            17+                                                            40+                                                            17+                                                            44+                                                      , srcInfoPoints = []+                                                      }+                                                    (Ident+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/HappyDoAction.hs"+                                                               17+                                                               40+                                                               17+                                                               44+                                                         , srcInfoPoints = []+                                                         }+                                                       "rule")))))+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 17 46 17 47+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 17 46 17 47+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         17+                                                         46+                                                         17+                                                         47+                                                   , srcInfoPoints = []+                                                   }+                                                 "i"))))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 17 48 17 50+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 17 48 17 50+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 17 48 17 50+                                                , srcInfoPoints = []+                                                }+                                              "tk"))))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 17 51 17 53+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 17 51 17 53+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 17 51 17 53+                                             , srcInfoPoints = []+                                             }+                                           "st"))))+                           ])+                        (Just+                           (BDecls+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 76+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 28+                                    , SrcSpan "tests/examples/HappyDoAction.hs" 19 9 19 0+                                    ]+                                }+                              [ PatBind+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 76+                                    , srcInfoPoints = []+                                    }+                                  (PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 32+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 32+                                          , srcInfoPoints = []+                                          }+                                        "rule"))+                                  (UnGuardedRhs+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 18 33 18 76+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/HappyDoAction.hs" 18 33 18 34 ]+                                       }+                                     (Paren+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 18 35 18 76+                                          , srcInfoPoints =+                                              [ SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 18 35 18 36+                                              , SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 18 75 18 76+                                              ]+                                          }+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 18 36 18 75+                                             , srcInfoPoints = []+                                             }+                                           (Con+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 18 36 18 38+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         18+                                                         36+                                                         18+                                                         38+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/HappyDoAction.hs"+                                                            18+                                                            36+                                                            18+                                                            38+                                                      , srcInfoPoints = []+                                                      }+                                                    "I#")))+                                           (Paren+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 18 39 18 75+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        18+                                                        39+                                                        18+                                                        40+                                                    , SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        18+                                                        74+                                                        18+                                                        75+                                                    ]+                                                }+                                              (Paren+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         18+                                                         40+                                                         18+                                                         74+                                                   , srcInfoPoints =+                                                       [ SrcSpan+                                                           "tests/examples/HappyDoAction.hs"+                                                           18+                                                           40+                                                           18+                                                           41+                                                       , SrcSpan+                                                           "tests/examples/HappyDoAction.hs"+                                                           18+                                                           73+                                                           18+                                                           74+                                                       ]+                                                   }+                                                 (App+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/HappyDoAction.hs"+                                                            18+                                                            41+                                                            18+                                                            73+                                                      , srcInfoPoints = []+                                                      }+                                                    (Var+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/HappyDoAction.hs"+                                                               18+                                                               41+                                                               18+                                                               51+                                                         , srcInfoPoints = []+                                                         }+                                                       (UnQual+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/HappyDoAction.hs"+                                                                  18+                                                                  41+                                                                  18+                                                                  51+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/HappyDoAction.hs"+                                                                     18+                                                                     41+                                                                     18+                                                                     51+                                                               , srcInfoPoints = []+                                                               }+                                                             "negateInt#")))+                                                    (Paren+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/HappyDoAction.hs"+                                                               18+                                                               52+                                                               18+                                                               73+                                                         , srcInfoPoints =+                                                             [ SrcSpan+                                                                 "tests/examples/HappyDoAction.hs"+                                                                 18+                                                                 52+                                                                 18+                                                                 53+                                                             , SrcSpan+                                                                 "tests/examples/HappyDoAction.hs"+                                                                 18+                                                                 72+                                                                 18+                                                                 73+                                                             ]+                                                         }+                                                       (Paren+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/HappyDoAction.hs"+                                                                  18+                                                                  53+                                                                  18+                                                                  72+                                                            , srcInfoPoints =+                                                                [ SrcSpan+                                                                    "tests/examples/HappyDoAction.hs"+                                                                    18+                                                                    53+                                                                    18+                                                                    54+                                                                , SrcSpan+                                                                    "tests/examples/HappyDoAction.hs"+                                                                    18+                                                                    71+                                                                    18+                                                                    72+                                                                ]+                                                            }+                                                          (InfixApp+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/HappyDoAction.hs"+                                                                     18+                                                                     54+                                                                     18+                                                                     71+                                                               , srcInfoPoints = []+                                                               }+                                                             (Var+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/HappyDoAction.hs"+                                                                        18+                                                                        54+                                                                        18+                                                                        55+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/HappyDoAction.hs"+                                                                           18+                                                                           54+                                                                           18+                                                                           55+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Ident+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/HappyDoAction.hs"+                                                                              18+                                                                              54+                                                                              18+                                                                              55+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "n")))+                                                             (QVarOp+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/HappyDoAction.hs"+                                                                        18+                                                                        56+                                                                        18+                                                                        58+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/HappyDoAction.hs"+                                                                           18+                                                                           56+                                                                           18+                                                                           58+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Symbol+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/HappyDoAction.hs"+                                                                              18+                                                                              56+                                                                              18+                                                                              58+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "+#")))+                                                             (Paren+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/HappyDoAction.hs"+                                                                        18+                                                                        59+                                                                        18+                                                                        71+                                                                  , srcInfoPoints =+                                                                      [ SrcSpan+                                                                          "tests/examples/HappyDoAction.hs"+                                                                          18+                                                                          59+                                                                          18+                                                                          60+                                                                      , SrcSpan+                                                                          "tests/examples/HappyDoAction.hs"+                                                                          18+                                                                          70+                                                                          18+                                                                          71+                                                                      ]+                                                                  }+                                                                (ExpTypeSig+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/HappyDoAction.hs"+                                                                           18+                                                                           60+                                                                           18+                                                                           70+                                                                     , srcInfoPoints =+                                                                         [ SrcSpan+                                                                             "tests/examples/HappyDoAction.hs"+                                                                             18+                                                                             63+                                                                             18+                                                                             65+                                                                         ]+                                                                     }+                                                                   (Lit+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/HappyDoAction.hs"+                                                                              18+                                                                              60+                                                                              18+                                                                              62+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (PrimInt+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/HappyDoAction.hs"+                                                                                 18+                                                                                 60+                                                                                 18+                                                                                 62+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         1+                                                                         "1"))+                                                                   (TyCon+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/HappyDoAction.hs"+                                                                              18+                                                                              66+                                                                              18+                                                                              70+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      (UnQual+                                                                         SrcSpanInfo+                                                                           { srcInfoSpan =+                                                                               SrcSpan+                                                                                 "tests/examples/HappyDoAction.hs"+                                                                                 18+                                                                                 66+                                                                                 18+                                                                                 70+                                                                           , srcInfoPoints = []+                                                                           }+                                                                         (Ident+                                                                            SrcSpanInfo+                                                                              { srcInfoSpan =+                                                                                  SrcSpan+                                                                                    "tests/examples/HappyDoAction.hs"+                                                                                    18+                                                                                    66+                                                                                    18+                                                                                    70+                                                                              , srcInfoPoints = []+                                                                              }+                                                                            "Int#"))))))))))))))+                                  Nothing+                              ]))+                    , Alt+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HappyDoAction.hs" 19 9 23 59+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/HappyDoAction.hs" 23 22 23 27 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 19 9 19 10+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 19 9 19 10+                                , srcInfoPoints = []+                                }+                              "n"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 19 19 22 50+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/HappyDoAction.hs" 19 19 19 21 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 22 22 22 50+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 22 22 22 47+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 22 22 22 44+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 22 22 22 42+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 22 22 22 32+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 22 22 22 32+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        22+                                                        22+                                                        22+                                                        32+                                                  , srcInfoPoints = []+                                                  }+                                                "happyShift")))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 22 33 22 42+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 22 33 22 42+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        22+                                                        33+                                                        22+                                                        42+                                                  , srcInfoPoints = []+                                                  }+                                                "new_state"))))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 22 43 22 44+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 22 43 22 44+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 22 43 22 44+                                               , srcInfoPoints = []+                                               }+                                             "i"))))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 22 45 22 47+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 22 45 22 47+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 22 45 22 47+                                            , srcInfoPoints = []+                                            }+                                          "tk"))))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 22 48 22 50+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 22 48 22 50+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 22 48 22 50+                                         , srcInfoPoints = []+                                         }+                                       "st")))))+                        (Just+                           (BDecls+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 59+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 28+                                    , SrcSpan "tests/examples/HappyDoAction.hs" 24 4 24 0+                                    ]+                                }+                              [ PatBind+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 59+                                    , srcInfoPoints = []+                                    }+                                  (PVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 37+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 37+                                          , srcInfoPoints = []+                                          }+                                        "new_state"))+                                  (UnGuardedRhs+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 23 38 23 59+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/HappyDoAction.hs" 23 38 23 39 ]+                                       }+                                     (Paren+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 23 40 23 59+                                          , srcInfoPoints =+                                              [ SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 23 40 23 41+                                              , SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 23 58 23 59+                                              ]+                                          }+                                        (InfixApp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 23 41 23 58+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 23 41 23 42+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         23+                                                         41+                                                         23+                                                         42+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/HappyDoAction.hs"+                                                            23+                                                            41+                                                            23+                                                            42+                                                      , srcInfoPoints = []+                                                      }+                                                    "n")))+                                           (QVarOp+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 23 43 23 45+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         23+                                                         43+                                                         23+                                                         45+                                                   , srcInfoPoints = []+                                                   }+                                                 (Symbol+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/HappyDoAction.hs"+                                                            23+                                                            43+                                                            23+                                                            45+                                                      , srcInfoPoints = []+                                                      }+                                                    "-#")))+                                           (Paren+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 23 46 23 58+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        23+                                                        46+                                                        23+                                                        47+                                                    , SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        23+                                                        57+                                                        23+                                                        58+                                                    ]+                                                }+                                              (ExpTypeSig+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/HappyDoAction.hs"+                                                         23+                                                         47+                                                         23+                                                         57+                                                   , srcInfoPoints =+                                                       [ SrcSpan+                                                           "tests/examples/HappyDoAction.hs"+                                                           23+                                                           50+                                                           23+                                                           52+                                                       ]+                                                   }+                                                 (Lit+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/HappyDoAction.hs"+                                                            23+                                                            47+                                                            23+                                                            49+                                                      , srcInfoPoints = []+                                                      }+                                                    (PrimInt+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/HappyDoAction.hs"+                                                               23+                                                               47+                                                               23+                                                               49+                                                         , srcInfoPoints = []+                                                         }+                                                       1+                                                       "1"))+                                                 (TyCon+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/HappyDoAction.hs"+                                                            23+                                                            53+                                                            23+                                                            57+                                                      , srcInfoPoints = []+                                                      }+                                                    (UnQual+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/HappyDoAction.hs"+                                                               23+                                                               53+                                                               23+                                                               57+                                                         , srcInfoPoints = []+                                                         }+                                                       (Ident+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/HappyDoAction.hs"+                                                                  23+                                                                  53+                                                                  23+                                                                  57+                                                            , srcInfoPoints = []+                                                            }+                                                          "Int#"))))))))+                                  Nothing+                              ]))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HappyDoAction.hs" 24 10 30 67+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/HappyDoAction.hs" 24 10 24 10+                          , SrcSpan "tests/examples/HappyDoAction.hs" 25 10 25 10+                          , SrcSpan "tests/examples/HappyDoAction.hs" 26 10 26 10+                          , SrcSpan "tests/examples/HappyDoAction.hs" 29 10 29 10+                          , SrcSpan "tests/examples/HappyDoAction.hs" 31 1 31 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HappyDoAction.hs" 24 10 24 55+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 24 10 24 13+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 24 10 24 13+                                , srcInfoPoints = []+                                }+                              "off"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 24 17 24 55+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/HappyDoAction.hs" 24 17 24 18 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 24 19 24 55+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 24 19 24 52+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 24 19 24 36+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 24 19 24 36+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 24 19 24 36+                                            , srcInfoPoints = []+                                            }+                                          "indexShortOffAddr")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 24 37 24 52+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 24 37 24 52+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 24 37 24 52+                                            , srcInfoPoints = []+                                            }+                                          "happyActOffsets"))))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 24 53 24 55+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 24 53 24 55+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 24 53 24 55+                                         , srcInfoPoints = []+                                         }+                                       "st")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HappyDoAction.hs" 25 10 25 29+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 25 10 25 15+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 25 10 25 15+                                , srcInfoPoints = []+                                }+                              "off_i"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 25 17 25 29+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/HappyDoAction.hs" 25 17 25 18 ]+                             }+                           (Paren+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 25 19 25 29+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/HappyDoAction.hs" 25 19 25 20+                                    , SrcSpan "tests/examples/HappyDoAction.hs" 25 28 25 29+                                    ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 25 20 25 28+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 25 20 25 23+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 25 20 25 23+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 25 20 25 23+                                            , srcInfoPoints = []+                                            }+                                          "off")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 25 24 25 26+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 25 24 25 26+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 25 24 25 26+                                            , srcInfoPoints = []+                                            }+                                          "+#")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 25 27 25 28+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 25 27 25 28+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 25 27 25 28+                                            , srcInfoPoints = []+                                            }+                                          "i"))))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HappyDoAction.hs" 26 10 28 30+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 26 10 26 15+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 26 10 26 15+                                , srcInfoPoints = []+                                }+                              "check"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 26 17 28 30+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/HappyDoAction.hs" 26 17 26 18 ]+                             }+                           (If+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 26 19 28 30+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/HappyDoAction.hs" 26 19 26 21+                                    , SrcSpan "tests/examples/HappyDoAction.hs" 27 20 27 24+                                    , SrcSpan "tests/examples/HappyDoAction.hs" 28 20 28 24+                                    ]+                                }+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 26 22 26 46+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/HappyDoAction.hs" 26 22 26 23+                                       , SrcSpan "tests/examples/HappyDoAction.hs" 26 45 26 46+                                       ]+                                   }+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 26 23 26 45+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 26 23 26 28+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 26 23 26 28+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 26 23 26 28+                                               , srcInfoPoints = []+                                               }+                                             "off_i")))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 26 29 26 32+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 26 29 26 32+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 26 29 26 32+                                               , srcInfoPoints = []+                                               }+                                             ">=#")))+                                    (Paren+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 26 33 26 45+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/HappyDoAction.hs" 26 33 26 34+                                             , SrcSpan "tests/examples/HappyDoAction.hs" 26 44 26 45+                                             ]+                                         }+                                       (ExpTypeSig+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 26 34 26 44+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/HappyDoAction.hs" 26 37 26 39+                                                ]+                                            }+                                          (Lit+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 26 34 26 36+                                               , srcInfoPoints = []+                                               }+                                             (PrimInt+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        26+                                                        34+                                                        26+                                                        36+                                                  , srcInfoPoints = []+                                                  }+                                                0+                                                "0"))+                                          (TyCon+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 26 40 26 44+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        26+                                                        40+                                                        26+                                                        44+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/HappyDoAction.hs"+                                                           26+                                                           40+                                                           26+                                                           44+                                                     , srcInfoPoints = []+                                                     }+                                                   "Int#")))))))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 27 25 27 68+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/HappyDoAction.hs" 27 25 27 26+                                       , SrcSpan "tests/examples/HappyDoAction.hs" 27 67 27 68+                                       ]+                                   }+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 27 26 27 67+                                      , srcInfoPoints = []+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 27 26 27 60+                                         , srcInfoPoints = []+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 27 26 27 54+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 27 26 27 43+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        27+                                                        26+                                                        27+                                                        43+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/HappyDoAction.hs"+                                                           27+                                                           26+                                                           27+                                                           43+                                                     , srcInfoPoints = []+                                                     }+                                                   "indexShortOffAddr")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 27 44 27 54+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        27+                                                        44+                                                        27+                                                        54+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/HappyDoAction.hs"+                                                           27+                                                           44+                                                           27+                                                           54+                                                     , srcInfoPoints = []+                                                     }+                                                   "happyCheck"))))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 27 55 27 60+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 27 55 27 60+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/HappyDoAction.hs"+                                                        27+                                                        55+                                                        27+                                                        60+                                                  , srcInfoPoints = []+                                                  }+                                                "off_i"))))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 27 61 27 64+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 27 61 27 64+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 27 61 27 64+                                               , srcInfoPoints = []+                                               }+                                             "==#")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 27 66 27 67+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HappyDoAction.hs" 27 66 27 67+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HappyDoAction.hs" 27 66 27 67+                                               , srcInfoPoints = []+                                               }+                                             "i")))))+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HappyDoAction.hs" 28 25 28 30+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HappyDoAction.hs" 28 25 28 30+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HappyDoAction.hs" 28 25 28 30+                                         , srcInfoPoints = []+                                         }+                                       "False")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/HappyDoAction.hs" 29 10 30 67+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 29 10 29 16+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HappyDoAction.hs" 29 10 29 16+                                , srcInfoPoints = []+                                }+                              "action"))+                        (GuardedRhss+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HappyDoAction.hs" 29 17 30 67+                             , srcInfoPoints = []+                             }+                           [ GuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/HappyDoAction.hs" 29 17 29 65+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/HappyDoAction.hs" 29 17 29 18+                                     , SrcSpan "tests/examples/HappyDoAction.hs" 29 29 29 30+                                     ]+                                 }+                               [ Qualifier+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/HappyDoAction.hs" 29 19 29 24+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/HappyDoAction.hs" 29 19 29 24+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/HappyDoAction.hs" 29 19 29 24+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/HappyDoAction.hs" 29 19 29 24+                                              , srcInfoPoints = []+                                              }+                                            "check")))+                               ]+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/HappyDoAction.hs" 29 31 29 65+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 29 31 29 59+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 29 31 29 48+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 29 31 29 48+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 29 31 29 48+                                                , srcInfoPoints = []+                                                }+                                              "indexShortOffAddr")))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 29 49 29 59+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 29 49 29 59+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 29 49 29 59+                                                , srcInfoPoints = []+                                                }+                                              "happyTable"))))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 29 60 29 65+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 29 60 29 65+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 29 60 29 65+                                             , srcInfoPoints = []+                                             }+                                           "off_i"))))+                           , GuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/HappyDoAction.hs" 30 17 30 67+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/HappyDoAction.hs" 30 17 30 18+                                     , SrcSpan "tests/examples/HappyDoAction.hs" 30 29 30 30+                                     ]+                                 }+                               [ Qualifier+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/HappyDoAction.hs" 30 19 30 28+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/HappyDoAction.hs" 30 19 30 28+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/HappyDoAction.hs" 30 19 30 28+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/HappyDoAction.hs" 30 19 30 28+                                              , srcInfoPoints = []+                                              }+                                            "otherwise")))+                               ]+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/HappyDoAction.hs" 30 31 30 67+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 30 31 30 64+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 30 31 30 48+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 30 31 30 48+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 30 31 30 48+                                                , srcInfoPoints = []+                                                }+                                              "indexShortOffAddr")))+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 30 49 30 64+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 30 49 30 64+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HappyDoAction.hs" 30 49 30 64+                                                , srcInfoPoints = []+                                                }+                                              "happyDefActions"))))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HappyDoAction.hs" 30 65 30 67+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HappyDoAction.hs" 30 65 30 67+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HappyDoAction.hs" 30 65 30 67+                                             , srcInfoPoints = []+                                             }+                                           "st"))))+                           ])+                        Nothing+                    ]))+          ]+      ]+  , [ Comment+        True+        (SrcSpan "tests/examples/HappyDoAction.hs" 7 7 7 20)+        " nothing "+    , Comment+        True+        (SrcSpan "tests/examples/HappyDoAction.hs" 11 22 11 35)+        " nothing "+    , Comment+        True+        (SrcSpan "tests/examples/HappyDoAction.hs" 13 22 13 35)+        " nothing "+    , Comment+        True+        (SrcSpan "tests/examples/HappyDoAction.hs" 15 36 15 49)+        " nothing "+    , Comment+        True+        (SrcSpan "tests/examples/HappyDoAction.hs" 19 22 19 35)+        " nothing "+    ]+  )
+ tests/examples/HappyDoAction.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HappyDoAction.hs.prettyprinter.golden view
@@ -0,0 +1,20 @@+{-# LANGUAGE MagicHash #-}+module HappyDoAction where++foo :: Int#+happyDoAction i tk st+  = case action of+        0# -> happyFail i tk st+        -1# -> happyAccept i tk st+        n | (n <# (0# :: Int#)) -> (happyReduceArr ! rule) i tk st+          where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))+        n -> happyShift new_state i tk st+          where new_state = (n -# (1# :: Int#))+  where off = indexShortOffAddr happyActOffsets st+        off_i = (off +# i)+        check+          = if (off_i >=# (0# :: Int#)) then+              (indexShortOffAddr happyCheck off_i ==# i) else False+        action+          | check = indexShortOffAddr happyTable off_i+          | otherwise = indexShortOffAddr happyDefActions st
+ tests/examples/HashOperator.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE OverloadedLabels #-}++(#.) :: Int -> Int -> Int+x #. y = x + y++infixr 9 #.
+ tests/examples/HashOperator.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HashOperator.hs.parser.golden view
@@ -0,0 +1,237 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/HashOperator.hs" 1 1 1 1+            , SrcSpan "tests/examples/HashOperator.hs" 3 1 3 1+            , SrcSpan "tests/examples/HashOperator.hs" 3 1 3 1+            , SrcSpan "tests/examples/HashOperator.hs" 3 1 3 1+            , SrcSpan "tests/examples/HashOperator.hs" 4 1 4 1+            , SrcSpan "tests/examples/HashOperator.hs" 6 1 6 1+            , SrcSpan "tests/examples/HashOperator.hs" 7 1 7 1+            , SrcSpan "tests/examples/HashOperator.hs" 7 1 7 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 1 1 1 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HashOperator.hs" 1 1 1 13+                , SrcSpan "tests/examples/HashOperator.hs" 1 31 1 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 1 14 1 30+                , srcInfoPoints = []+                }+              "OverloadedLabels"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 1 3 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HashOperator.hs" 3 6 3 8 ]+            }+          [ Symbol+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 1 3 5+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/HashOperator.hs" 3 1 3 2+                    , SrcSpan "tests/examples/HashOperator.hs" 3 2 3 4+                    , SrcSpan "tests/examples/HashOperator.hs" 3 4 3 5+                    ]+                }+              "#."+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 9 3 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/HashOperator.hs" 3 13 3 15 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 9 3 12+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 9 3 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 9 3 12+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 16 3 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/HashOperator.hs" 3 20 3 22 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 16 3 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 16 3 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 16 3 19+                           , srcInfoPoints = []+                           }+                         "Int")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 23 3 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 23 3 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 23 3 26+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 1 4 15+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 1 4 15+                , srcInfoPoints = []+                }+              (PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 1 4 2+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 1 4 2+                      , srcInfoPoints = []+                      }+                    "x"))+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 3 4 5+                   , srcInfoPoints = []+                   }+                 "#.")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 6 4 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 6 4 7+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 8 4 15+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/HashOperator.hs" 4 8 4 9 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 10 4 15+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 10 4 11+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 10 4 11+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 10 4 11+                               , srcInfoPoints = []+                               }+                             "x")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 12 4 13+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 12 4 13+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 12 4 13+                               , srcInfoPoints = []+                               }+                             "+")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 14 4 15+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 14 4 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 14 4 15+                               , srcInfoPoints = []+                               }+                             "y")))))+              Nothing+          ]+      , InfixDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 6 1 6 12+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HashOperator.hs" 6 8 6 9 ]+            }+          (AssocRight+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 6 1 6 7+               , srcInfoPoints = []+               })+          (Just 9)+          [ VarOp+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 6 10 6 12+                , srcInfoPoints = []+                }+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 6 10 6 12+                   , srcInfoPoints = []+                   }+                 "#.")+          ]+      ]+  , []+  )
+ tests/examples/HashOperator.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HashOperator.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE OverloadedLabels #-}++( #. ) :: Int -> Int -> Int+x #. y = x + y++infixr 9 #.
+ tests/examples/HaskellParser.hs view
@@ -0,0 +1,16 @@+import qualified Language.Haskell.Exts.Annotated as Parser+import qualified Language.Haskell.Exts.Annotated.Syntax as Syn+import qualified Language.Haskell.Exts.Extension as Ext++parse originalFileName input = Parser.parseModuleWithMode parseMode input+    where+      parseMode :: Parser.ParseMode+      parseMode = Parser.defaultParseMode { Parser.parseFilename = originalFileName+                                          , Parser.extensions =+                                              Ext.glasgowExts +++                                              [Ext.ExplicitForall]+                                          }+main =+    do s <- readFile "Bug.hs"+       let x = parse "Bug.hs" s+       putStrLn (show x)
+ tests/examples/HaskellParser.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HaskellParser.hs.parser.golden view
@@ -0,0 +1,809 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 1 1 17 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 1+            , SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 1+            , SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 1+            , SrcSpan "tests/examples/HaskellParser.hs" 2 1 2 1+            , SrcSpan "tests/examples/HaskellParser.hs" 3 1 3 1+            , SrcSpan "tests/examples/HaskellParser.hs" 5 1 5 1+            , SrcSpan "tests/examples/HaskellParser.hs" 13 1 13 1+            , SrcSpan "tests/examples/HaskellParser.hs" 17 1 17 1+            , SrcSpan "tests/examples/HaskellParser.hs" 17 1 17 1+            ]+        }+      Nothing+      []+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 59+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 7+                    , SrcSpan "tests/examples/HaskellParser.hs" 1 8 1 17+                    , SrcSpan "tests/examples/HaskellParser.hs" 1 50 1 52+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 1 18 1 49+                  , srcInfoPoints = []+                  }+                "Language.Haskell.Exts.Annotated"+          , importQualified = True+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 1 53 1 59+                     , srcInfoPoints = []+                     }+                   "Parser")+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 2 1 2 63+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/HaskellParser.hs" 2 1 2 7+                    , SrcSpan "tests/examples/HaskellParser.hs" 2 8 2 17+                    , SrcSpan "tests/examples/HaskellParser.hs" 2 57 2 59+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 2 18 2 56+                  , srcInfoPoints = []+                  }+                "Language.Haskell.Exts.Annotated.Syntax"+          , importQualified = True+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 2 60 2 63+                     , srcInfoPoints = []+                     }+                   "Syn")+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 3 1 3 56+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/HaskellParser.hs" 3 1 3 7+                    , SrcSpan "tests/examples/HaskellParser.hs" 3 8 3 17+                    , SrcSpan "tests/examples/HaskellParser.hs" 3 50 3 52+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 3 18 3 49+                  , srcInfoPoints = []+                  }+                "Language.Haskell.Exts.Extension"+          , importQualified = True+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 3 53 3 56+                     , srcInfoPoints = []+                     }+                   "Ext")+          , importSpecs = Nothing+          }+      ]+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 1 12 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/HaskellParser.hs" 6 5 6 10 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 1 12 44+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/HaskellParser.hs" 6 5 6 10 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 1 5 6+                   , srcInfoPoints = []+                   }+                 "parse")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 7 5 23+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 7 5 23+                       , srcInfoPoints = []+                       }+                     "originalFileName")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 24 5 29+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 24 5 29+                       , srcInfoPoints = []+                       }+                     "input")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 30 5 74+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/HaskellParser.hs" 5 30 5 31 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 74+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 68+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 58+                            , srcInfoPoints = []+                            }+                          (Qual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 58+                               , srcInfoPoints = []+                               }+                             (ModuleName+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 58+                                  , srcInfoPoints = []+                                  }+                                "Parser")+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 58+                                  , srcInfoPoints = []+                                  }+                                "parseModuleWithMode")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 59 5 68+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 59 5 68+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/HaskellParser.hs" 5 59 5 68+                                  , srcInfoPoints = []+                                  }+                                "parseMode"))))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 69 5 74+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 69 5 74+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 69 5 74+                               , srcInfoPoints = []+                               }+                             "input")))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 7 12 44+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/HaskellParser.hs" 7 7 7 7+                          , SrcSpan "tests/examples/HaskellParser.hs" 8 7 8 7+                          , SrcSpan "tests/examples/HaskellParser.hs" 13 1 13 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 7 7 36+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/HaskellParser.hs" 7 17 7 19 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 7 7 16+                              , srcInfoPoints = []+                              }+                            "parseMode"+                        ]+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 20 7 36+                             , srcInfoPoints = []+                             }+                           (Qual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 20 7 36+                                , srcInfoPoints = []+                                }+                              (ModuleName+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HaskellParser.hs" 7 20 7 36+                                   , srcInfoPoints = []+                                   }+                                 "Parser")+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HaskellParser.hs" 7 20 7 36+                                   , srcInfoPoints = []+                                   }+                                 "ParseMode")))+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 8 7 12 44+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 8 7 8 16+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 8 7 8 16+                                , srcInfoPoints = []+                                }+                              "parseMode"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HaskellParser.hs" 8 17 12 44+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/HaskellParser.hs" 8 17 8 18 ]+                             }+                           (RecUpdate+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HaskellParser.hs" 8 19 12 44+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/HaskellParser.hs" 8 43 8 44+                                    , SrcSpan "tests/examples/HaskellParser.hs" 9 43 9 44+                                    , SrcSpan "tests/examples/HaskellParser.hs" 12 43 12 44+                                    ]+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HaskellParser.hs" 8 19 8 42+                                   , srcInfoPoints = []+                                   }+                                 (Qual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HaskellParser.hs" 8 19 8 42+                                      , srcInfoPoints = []+                                      }+                                    (ModuleName+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HaskellParser.hs" 8 19 8 42+                                         , srcInfoPoints = []+                                         }+                                       "Parser")+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HaskellParser.hs" 8 19 8 42+                                         , srcInfoPoints = []+                                         }+                                       "defaultParseMode")))+                              [ FieldUpdate+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/HaskellParser.hs" 8 45 8 84+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/HaskellParser.hs" 8 66 8 67 ]+                                    }+                                  (Qual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HaskellParser.hs" 8 45 8 65+                                       , srcInfoPoints = []+                                       }+                                     (ModuleName+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HaskellParser.hs" 8 45 8 65+                                          , srcInfoPoints = []+                                          }+                                        "Parser")+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HaskellParser.hs" 8 45 8 65+                                          , srcInfoPoints = []+                                          }+                                        "parseFilename"))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HaskellParser.hs" 8 68 8 84+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HaskellParser.hs" 8 68 8 84+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/HaskellParser.hs" 8 68 8 84+                                             , srcInfoPoints = []+                                             }+                                           "originalFileName")))+                              , FieldUpdate+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/HaskellParser.hs" 9 45 11 67+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/HaskellParser.hs" 9 63 9 64 ]+                                    }+                                  (Qual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HaskellParser.hs" 9 45 9 62+                                       , srcInfoPoints = []+                                       }+                                     (ModuleName+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HaskellParser.hs" 9 45 9 62+                                          , srcInfoPoints = []+                                          }+                                        "Parser")+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HaskellParser.hs" 9 45 9 62+                                          , srcInfoPoints = []+                                          }+                                        "extensions"))+                                  (InfixApp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/HaskellParser.hs" 10 47 11 67+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HaskellParser.hs" 10 47 10 62+                                          , srcInfoPoints = []+                                          }+                                        (Qual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HaskellParser.hs" 10 47 10 62+                                             , srcInfoPoints = []+                                             }+                                           (ModuleName+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HaskellParser.hs" 10 47 10 62+                                                , srcInfoPoints = []+                                                }+                                              "Ext")+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HaskellParser.hs" 10 47 10 62+                                                , srcInfoPoints = []+                                                }+                                              "glasgowExts")))+                                     (QVarOp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HaskellParser.hs" 10 63 10 65+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/HaskellParser.hs" 10 63 10 65+                                             , srcInfoPoints = []+                                             }+                                           (Symbol+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/HaskellParser.hs" 10 63 10 65+                                                , srcInfoPoints = []+                                                }+                                              "++")))+                                     (List+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/HaskellParser.hs" 11 47 11 67+                                          , srcInfoPoints =+                                              [ SrcSpan+                                                  "tests/examples/HaskellParser.hs" 11 47 11 48+                                              , SrcSpan+                                                  "tests/examples/HaskellParser.hs" 11 66 11 67+                                              ]+                                          }+                                        [ Con+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/HaskellParser.hs" 11 48 11 66+                                              , srcInfoPoints = []+                                              }+                                            (Qual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/HaskellParser.hs" 11 48 11 66+                                                 , srcInfoPoints = []+                                                 }+                                               (ModuleName+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/HaskellParser.hs"+                                                          11+                                                          48+                                                          11+                                                          66+                                                    , srcInfoPoints = []+                                                    }+                                                  "Ext")+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/HaskellParser.hs"+                                                          11+                                                          48+                                                          11+                                                          66+                                                    , srcInfoPoints = []+                                                    }+                                                  "ExplicitForall"))+                                        ]))+                              ]))+                        Nothing+                    ]))+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/HaskellParser.hs" 13 1 16 25+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 13 1 13 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 13 1 13 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/HaskellParser.hs" 13 6 16 25+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/HaskellParser.hs" 13 6 13 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/HaskellParser.hs" 14 5 16 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/HaskellParser.hs" 14 5 14 7+                      , SrcSpan "tests/examples/HaskellParser.hs" 14 8 14 8+                      , SrcSpan "tests/examples/HaskellParser.hs" 15 8 15 8+                      , SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 8+                      , SrcSpan "tests/examples/HaskellParser.hs" 17 1 17 0+                      ]+                  }+                [ Generator+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HaskellParser.hs" 14 8 14 30+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/HaskellParser.hs" 14 10 14 12 ]+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 14 8 14 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 14 8 14 9+                            , srcInfoPoints = []+                            }+                          "s"))+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/HaskellParser.hs" 14 13 14 30+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaskellParser.hs" 14 13 14 21+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaskellParser.hs" 14 13 14 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/HaskellParser.hs" 14 13 14 21+                                  , srcInfoPoints = []+                                  }+                                "readFile")))+                       (Lit+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaskellParser.hs" 14 22 14 30+                            , srcInfoPoints = []+                            }+                          (String+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaskellParser.hs" 14 22 14 30+                               , srcInfoPoints = []+                               }+                             "Bug.hs"+                             "Bug.hs")))+                , LetStmt+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HaskellParser.hs" 15 8 15 32+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/HaskellParser.hs" 15 8 15 11 ]+                      }+                    (BDecls+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 32+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 12+                             , SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 0+                             ]+                         }+                       [ PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 32+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 13+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 13+                                   , srcInfoPoints = []+                                   }+                                 "x"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/HaskellParser.hs" 15 14 15 32+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/HaskellParser.hs" 15 14 15 15 ]+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/HaskellParser.hs" 15 16 15 32+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HaskellParser.hs" 15 16 15 30+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HaskellParser.hs" 15 16 15 21+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HaskellParser.hs" 15 16 15 21+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/HaskellParser.hs" 15 16 15 21+                                               , srcInfoPoints = []+                                               }+                                             "parse")))+                                    (Lit+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HaskellParser.hs" 15 22 15 30+                                         , srcInfoPoints = []+                                         }+                                       (String+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HaskellParser.hs" 15 22 15 30+                                            , srcInfoPoints = []+                                            }+                                          "Bug.hs"+                                          "Bug.hs")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/HaskellParser.hs" 15 31 15 32+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/HaskellParser.hs" 15 31 15 32+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/HaskellParser.hs" 15 31 15 32+                                            , srcInfoPoints = []+                                            }+                                          "s")))))+                           Nothing+                       ])+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 25+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 25+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 16+                                  , srcInfoPoints = []+                                  }+                                "putStrLn")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/HaskellParser.hs" 16 17 16 25+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/HaskellParser.hs" 16 17 16 18+                                , SrcSpan "tests/examples/HaskellParser.hs" 16 24 16 25+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/HaskellParser.hs" 16 18 16 24+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/HaskellParser.hs" 16 18 16 22+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/HaskellParser.hs" 16 18 16 22+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/HaskellParser.hs" 16 18 16 22+                                        , srcInfoPoints = []+                                        }+                                      "show")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/HaskellParser.hs" 16 23 16 24+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/HaskellParser.hs" 16 23 16 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/HaskellParser.hs" 16 23 16 24+                                        , srcInfoPoints = []+                                        }+                                      "x"))))))+                ]))+          Nothing+      ]+  , []+  )
+ tests/examples/HaskellParser.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HaskellParser.hs.prettyprinter.golden view
@@ -0,0 +1,13 @@+import qualified Language.Haskell.Exts.Annotated as Parser+import qualified Language.Haskell.Exts.Annotated.Syntax as Syn+import qualified Language.Haskell.Exts.Extension as Ext+parse originalFileName input+  = Parser.parseModuleWithMode parseMode input+  where parseMode :: Parser.ParseMode+        parseMode+          = Parser.defaultParseMode{Parser.parseFilename = originalFileName,+                                    Parser.extensions = Ext.glasgowExts ++ [Ext.ExplicitForall]}+main+  = do s <- readFile "Bug.hs"+       let x = parse "Bug.hs" s+       putStrLn (show x)
+ tests/examples/HexPrec.hs view
@@ -0,0 +1,6 @@+module HexPrec where++(%%) :: Int -> Int -> Int+a %% b = 0++infixl 0x02 %%
+ tests/examples/HexPrec.hs.exactprinter.golden view
@@ -0,0 +1,7 @@+module HexPrec where++(%%) :: Int -> Int -> Int+a %% b = 0++infixl 2    %%+
+ tests/examples/HexPrec.hs.parser.golden view
@@ -0,0 +1,191 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/HexPrec.hs" 1 1 1 1+            , SrcSpan "tests/examples/HexPrec.hs" 1 1 1 1+            , SrcSpan "tests/examples/HexPrec.hs" 3 1 3 1+            , SrcSpan "tests/examples/HexPrec.hs" 4 1 4 1+            , SrcSpan "tests/examples/HexPrec.hs" 6 1 6 1+            , SrcSpan "tests/examples/HexPrec.hs" 7 1 7 1+            , SrcSpan "tests/examples/HexPrec.hs" 7 1 7 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 1 1 1 21+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/HexPrec.hs" 1 1 1 7+                  , SrcSpan "tests/examples/HexPrec.hs" 1 16 1 21+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 1 8 1 15+                 , srcInfoPoints = []+                 }+               "HexPrec")+            Nothing+            Nothing))+      []+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 1 3 26+            , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 3 6 3 8 ]+            }+          [ Symbol+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 1 3 5+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/HexPrec.hs" 3 1 3 2+                    , SrcSpan "tests/examples/HexPrec.hs" 3 2 3 4+                    , SrcSpan "tests/examples/HexPrec.hs" 3 4 3 5+                    ]+                }+              "%%"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 9 3 26+               , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 3 13 3 15 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 9 3 12+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 9 3 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 9 3 12+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 16 3 26+                  , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 3 20 3 22 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 16 3 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 16 3 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 16 3 19+                           , srcInfoPoints = []+                           }+                         "Int")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 23 3 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 23 3 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 23 3 26+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 1 4 11+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 1 4 11+                , srcInfoPoints = []+                }+              (PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 1 4 2+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 1 4 2+                      , srcInfoPoints = []+                      }+                    "a"))+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 3 4 5+                   , srcInfoPoints = []+                   }+                 "%%")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 6 4 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 6 4 7+                       , srcInfoPoints = []+                       }+                     "b")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 8 4 11+                   , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 4 8 4 9 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 10 4 11+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 10 4 11+                         , srcInfoPoints = []+                         }+                       0+                       "0")))+              Nothing+          ]+      , InfixDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 6 1 6 15+            , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 6 8 6 12 ]+            }+          (AssocLeft+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 6 1 6 7+               , srcInfoPoints = []+               })+          (Just 2)+          [ VarOp+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 6 13 6 15+                , srcInfoPoints = []+                }+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 6 13 6 15+                   , srcInfoPoints = []+                   }+                 "%%")+          ]+      ]+  , []+  )
+ tests/examples/HexPrec.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HexPrec.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+module HexPrec where++(%%) :: Int -> Int -> Int+a %% b = 0++infixl 2 %%
+ tests/examples/IfThenElseLayout.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE DoAndIfThenElse #-}+module IfThenElseLayout where++askCardsForExchange :: Hand -> IO [Card]+askCardsForExchange h = do+                         putStrLn "Wich card do you want to exchange? (Max. 3)"+                         response <- getLine+                         if length (readCards response) > 3 || not (all (flip elem h) h) then+                                 askCardsForExchange h+                         else+                                 return (readCards response)+
+ tests/examples/IfThenElseLayout.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IfThenElseLayout.hs.parser.golden view
@@ -0,0 +1,866 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/IfThenElseLayout.hs" 1 1 13 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/IfThenElseLayout.hs" 1 1 1 1+            , SrcSpan "tests/examples/IfThenElseLayout.hs" 2 1 2 1+            , SrcSpan "tests/examples/IfThenElseLayout.hs" 2 1 2 1+            , SrcSpan "tests/examples/IfThenElseLayout.hs" 4 1 4 1+            , SrcSpan "tests/examples/IfThenElseLayout.hs" 5 1 5 1+            , SrcSpan "tests/examples/IfThenElseLayout.hs" 13 1 13 1+            , SrcSpan "tests/examples/IfThenElseLayout.hs" 13 1 13 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/IfThenElseLayout.hs" 2 1 2 30+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/IfThenElseLayout.hs" 2 1 2 7+                  , SrcSpan "tests/examples/IfThenElseLayout.hs" 2 25 2 30+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/IfThenElseLayout.hs" 2 8 2 24+                 , srcInfoPoints = []+                 }+               "IfThenElseLayout")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/IfThenElseLayout.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/IfThenElseLayout.hs" 1 1 1 13+                , SrcSpan "tests/examples/IfThenElseLayout.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/IfThenElseLayout.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "DoAndIfThenElse"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/IfThenElseLayout.hs" 4 1 4 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 21 4 23 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/IfThenElseLayout.hs" 4 1 4 20+                , srcInfoPoints = []+                }+              "askCardsForExchange"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/IfThenElseLayout.hs" 4 24 4 41+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 29 4 31 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/IfThenElseLayout.hs" 4 24 4 28+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/IfThenElseLayout.hs" 4 24 4 28+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/IfThenElseLayout.hs" 4 24 4 28+                        , srcInfoPoints = []+                        }+                      "Hand")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/IfThenElseLayout.hs" 4 32 4 41+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/IfThenElseLayout.hs" 4 32 4 34+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/IfThenElseLayout.hs" 4 32 4 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/IfThenElseLayout.hs" 4 32 4 34+                           , srcInfoPoints = []+                           }+                         "IO")))+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/IfThenElseLayout.hs" 4 35 4 41+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 35 4 36+                         , SrcSpan "tests/examples/IfThenElseLayout.hs" 4 40 4 41+                         ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/IfThenElseLayout.hs" 4 36 4 40+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/IfThenElseLayout.hs" 4 36 4 40+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/IfThenElseLayout.hs" 4 36 4 40+                              , srcInfoPoints = []+                              }+                            "Card"))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/IfThenElseLayout.hs" 5 1 11 61+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/IfThenElseLayout.hs" 5 1 11 61+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/IfThenElseLayout.hs" 5 1 5 20+                   , srcInfoPoints = []+                   }+                 "askCardsForExchange")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/IfThenElseLayout.hs" 5 21 5 22+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/IfThenElseLayout.hs" 5 21 5 22+                       , srcInfoPoints = []+                       }+                     "h")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/IfThenElseLayout.hs" 5 23 11 61+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 23 5 24 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/IfThenElseLayout.hs" 5 25 11 61+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 25 5 27+                          , SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 26+                          , SrcSpan "tests/examples/IfThenElseLayout.hs" 7 26 7 26+                          , SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 8 26+                          , SrcSpan "tests/examples/IfThenElseLayout.hs" 13 1 13 0+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 80+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 80+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 34+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 34+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 34+                                      , srcInfoPoints = []+                                      }+                                    "putStrLn")))+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/IfThenElseLayout.hs" 6 35 6 80+                                , srcInfoPoints = []+                                }+                              (String+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 6 35 6 80+                                   , srcInfoPoints = []+                                   }+                                 "Wich card do you want to exchange? (Max. 3)"+                                 "Wich card do you want to exchange? (Max. 3)")))+                    , Generator+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/IfThenElseLayout.hs" 7 26 7 45+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/IfThenElseLayout.hs" 7 35 7 37 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/IfThenElseLayout.hs" 7 26 7 34+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/IfThenElseLayout.hs" 7 26 7 34+                                , srcInfoPoints = []+                                }+                              "response"))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/IfThenElseLayout.hs" 7 38 7 45+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/IfThenElseLayout.hs" 7 38 7 45+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 7 38 7 45+                                   , srcInfoPoints = []+                                   }+                                 "getLine")))+                    , Qualifier+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 11 61+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 8 28+                              , SrcSpan "tests/examples/IfThenElseLayout.hs" 8 90 8 94+                              , SrcSpan "tests/examples/IfThenElseLayout.hs" 10 26 10 26+                              , SrcSpan "tests/examples/IfThenElseLayout.hs" 10 26 10 30+                              ]+                          }+                        (If+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 11 61+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 8 28+                                 , SrcSpan "tests/examples/IfThenElseLayout.hs" 8 90 8 94+                                 , SrcSpan "tests/examples/IfThenElseLayout.hs" 10 26 10 26+                                 , SrcSpan "tests/examples/IfThenElseLayout.hs" 10 26 10 30+                                 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/IfThenElseLayout.hs" 8 29 8 89+                                , srcInfoPoints = []+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 8 29 8 60+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 8 29 8 56+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/IfThenElseLayout.hs" 8 29 8 35+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/IfThenElseLayout.hs" 8 29 8 35+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/IfThenElseLayout.hs" 8 29 8 35+                                               , srcInfoPoints = []+                                               }+                                             "length")))+                                    (Paren+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/IfThenElseLayout.hs" 8 36 8 56+                                         , srcInfoPoints =+                                             [ SrcSpan+                                                 "tests/examples/IfThenElseLayout.hs" 8 36 8 37+                                             , SrcSpan+                                                 "tests/examples/IfThenElseLayout.hs" 8 55 8 56+                                             ]+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/IfThenElseLayout.hs" 8 37 8 55+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/IfThenElseLayout.hs" 8 37 8 46+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/IfThenElseLayout.hs"+                                                        8+                                                        37+                                                        8+                                                        46+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/IfThenElseLayout.hs"+                                                           8+                                                           37+                                                           8+                                                           46+                                                     , srcInfoPoints = []+                                                     }+                                                   "readCards")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/IfThenElseLayout.hs" 8 47 8 55+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/IfThenElseLayout.hs"+                                                        8+                                                        47+                                                        8+                                                        55+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/IfThenElseLayout.hs"+                                                           8+                                                           47+                                                           8+                                                           55+                                                     , srcInfoPoints = []+                                                     }+                                                   "response"))))))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 8 57 8 58+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/IfThenElseLayout.hs" 8 57 8 58+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/IfThenElseLayout.hs" 8 57 8 58+                                            , srcInfoPoints = []+                                            }+                                          ">")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 8 59 8 60+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/IfThenElseLayout.hs" 8 59 8 60+                                         , srcInfoPoints = []+                                         }+                                       3+                                       "3")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 8 61 8 63+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 8 61 8 63+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/IfThenElseLayout.hs" 8 61 8 63+                                         , srcInfoPoints = []+                                         }+                                       "||")))+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 8 64 8 89+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 8 64 8 67+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/IfThenElseLayout.hs" 8 64 8 67+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/IfThenElseLayout.hs" 8 64 8 67+                                            , srcInfoPoints = []+                                            }+                                          "not")))+                                 (Paren+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 8 68 8 89+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 68 8 69+                                          , SrcSpan "tests/examples/IfThenElseLayout.hs" 8 88 8 89+                                          ]+                                      }+                                    (App+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/IfThenElseLayout.hs" 8 69 8 88+                                         , srcInfoPoints = []+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/IfThenElseLayout.hs" 8 69 8 86+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/IfThenElseLayout.hs" 8 69 8 72+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/IfThenElseLayout.hs"+                                                        8+                                                        69+                                                        8+                                                        72+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/IfThenElseLayout.hs"+                                                           8+                                                           69+                                                           8+                                                           72+                                                     , srcInfoPoints = []+                                                     }+                                                   "all")))+                                          (Paren+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/IfThenElseLayout.hs" 8 73 8 86+                                               , srcInfoPoints =+                                                   [ SrcSpan+                                                       "tests/examples/IfThenElseLayout.hs"+                                                       8+                                                       73+                                                       8+                                                       74+                                                   , SrcSpan+                                                       "tests/examples/IfThenElseLayout.hs"+                                                       8+                                                       85+                                                       8+                                                       86+                                                   ]+                                               }+                                             (App+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/IfThenElseLayout.hs"+                                                        8+                                                        74+                                                        8+                                                        85+                                                  , srcInfoPoints = []+                                                  }+                                                (App+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/IfThenElseLayout.hs"+                                                           8+                                                           74+                                                           8+                                                           83+                                                     , srcInfoPoints = []+                                                     }+                                                   (Var+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/IfThenElseLayout.hs"+                                                              8+                                                              74+                                                              8+                                                              78+                                                        , srcInfoPoints = []+                                                        }+                                                      (UnQual+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/IfThenElseLayout.hs"+                                                                 8+                                                                 74+                                                                 8+                                                                 78+                                                           , srcInfoPoints = []+                                                           }+                                                         (Ident+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/IfThenElseLayout.hs"+                                                                    8+                                                                    74+                                                                    8+                                                                    78+                                                              , srcInfoPoints = []+                                                              }+                                                            "flip")))+                                                   (Var+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/IfThenElseLayout.hs"+                                                              8+                                                              79+                                                              8+                                                              83+                                                        , srcInfoPoints = []+                                                        }+                                                      (UnQual+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/IfThenElseLayout.hs"+                                                                 8+                                                                 79+                                                                 8+                                                                 83+                                                           , srcInfoPoints = []+                                                           }+                                                         (Ident+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/IfThenElseLayout.hs"+                                                                    8+                                                                    79+                                                                    8+                                                                    83+                                                              , srcInfoPoints = []+                                                              }+                                                            "elem"))))+                                                (Var+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/IfThenElseLayout.hs"+                                                           8+                                                           84+                                                           8+                                                           85+                                                     , srcInfoPoints = []+                                                     }+                                                   (UnQual+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/IfThenElseLayout.hs"+                                                              8+                                                              84+                                                              8+                                                              85+                                                        , srcInfoPoints = []+                                                        }+                                                      (Ident+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/IfThenElseLayout.hs"+                                                                 8+                                                                 84+                                                                 8+                                                                 85+                                                           , srcInfoPoints = []+                                                           }+                                                         "h"))))))+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/IfThenElseLayout.hs" 8 87 8 88+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/IfThenElseLayout.hs" 8 87 8 88+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/IfThenElseLayout.hs"+                                                        8+                                                        87+                                                        8+                                                        88+                                                  , srcInfoPoints = []+                                                  }+                                                "h")))))))+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/IfThenElseLayout.hs" 9 34 9 55+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 9 34 9 53+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 9 34 9 53+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/IfThenElseLayout.hs" 9 34 9 53+                                         , srcInfoPoints = []+                                         }+                                       "askCardsForExchange")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 9 54 9 55+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 9 54 9 55+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/IfThenElseLayout.hs" 9 54 9 55+                                         , srcInfoPoints = []+                                         }+                                       "h"))))+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/IfThenElseLayout.hs" 11 34 11 61+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 11 34 11 40+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 11 34 11 40+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/IfThenElseLayout.hs" 11 34 11 40+                                         , srcInfoPoints = []+                                         }+                                       "return")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IfThenElseLayout.hs" 11 41 11 61+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/IfThenElseLayout.hs" 11 41 11 42+                                       , SrcSpan "tests/examples/IfThenElseLayout.hs" 11 60 11 61+                                       ]+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/IfThenElseLayout.hs" 11 42 11 60+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/IfThenElseLayout.hs" 11 42 11 51+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/IfThenElseLayout.hs" 11 42 11 51+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/IfThenElseLayout.hs"+                                                     11+                                                     42+                                                     11+                                                     51+                                               , srcInfoPoints = []+                                               }+                                             "readCards")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/IfThenElseLayout.hs" 11 52 11 60+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/IfThenElseLayout.hs" 11 52 11 60+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/IfThenElseLayout.hs"+                                                     11+                                                     52+                                                     11+                                                     60+                                               , srcInfoPoints = []+                                               }+                                             "response")))))))+                    ]))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/IfThenElseLayout.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IfThenElseLayout.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE DoAndIfThenElse #-}+module IfThenElseLayout where++askCardsForExchange :: Hand -> IO [Card]+askCardsForExchange h+  = do putStrLn "Wich card do you want to exchange? (Max. 3)"+       response <- getLine+       if length (readCards response) > 3 || not (all (flip elem h) h)+         then askCardsForExchange h else return (readCards response)
+ tests/examples/IllDataTypeDecl.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators #-}+module IllDataTypeDecl where++data (f :+: g) p = L
+ tests/examples/IllDataTypeDecl.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IllDataTypeDecl.hs.parser.golden view
@@ -0,0 +1,162 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 1 1 1+            , SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 1 2 1+            , SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 1 2 1+            , SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 1 4 1+            , SrcSpan "tests/examples/IllDataTypeDecl.hs" 5 1 5 1+            , SrcSpan "tests/examples/IllDataTypeDecl.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 1 2 29+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 1 2 7+                  , SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 24 2 29+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 8 2 23+                 , srcInfoPoints = []+                 }+               "IllDataTypeDecl")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 1 1 13+                , SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 1 4 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 18 4 19 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 1 4 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 6 4 17+               , srcInfoPoints = []+               }+             (DHParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 6 4 15+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 6 4 7+                      , SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 14 4 15+                      ]+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 7 4 14+                     , srcInfoPoints = []+                     }+                   (DHInfix+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 7 4 14+                        , srcInfoPoints = []+                        }+                      (UnkindedVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 7 4 8+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 7 4 8+                              , srcInfoPoints = []+                              }+                            "f"))+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 9 4 12+                           , srcInfoPoints = []+                           }+                         ":+:"))+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 13 4 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 13 4 14+                           , srcInfoPoints = []+                           }+                         "g"))))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 16 4 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 16 4 17+                     , srcInfoPoints = []+                     }+                   "p")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 20 4 21+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 20 4 21+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 20 4 21+                      , srcInfoPoints = []+                      }+                    "L")+                 [])+          ]+          []+      ]+  , []+  )
+ tests/examples/IllDataTypeDecl.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IllDataTypeDecl.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators #-}+module IllDataTypeDecl where++data (f :+: g) p = L
+ tests/examples/ImplicitWhereBlocks.hs view
@@ -0,0 +1,6 @@+foo = x where x = 1+              z = 19+++y = 2+
+ tests/examples/ImplicitWhereBlocks.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImplicitWhereBlocks.hs.parser.golden view
@@ -0,0 +1,201 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 1+            , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 1+            , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 1+            , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 1+            , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 7 1 7 1+            , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 7 1 7 1+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 2 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 9 1 14 ]+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 5 1 8+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 5 1 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 7 1 8+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 7 1 8+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 7 1 8+                        , srcInfoPoints = []+                        }+                      "x"))))+          (Just+             (BDecls+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 2 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 1 15+                      , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 15 2 15+                      , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 0+                      ]+                  }+                [ PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 1 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 1 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 1 16+                            , srcInfoPoints = []+                            }+                          "x"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 17 1 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 17 1 18 ]+                         }+                       (Lit+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 19 1 20+                            , srcInfoPoints = []+                            }+                          (Int+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 19 1 20+                               , srcInfoPoints = []+                               }+                             1+                             "1")))+                    Nothing+                , PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 15 2 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 15 2 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 15 2 16+                            , srcInfoPoints = []+                            }+                          "z"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 17 2 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 17 2 18 ]+                         }+                       (Lit+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 19 2 21+                            , srcInfoPoints = []+                            }+                          (Int+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 19 2 21+                               , srcInfoPoints = []+                               }+                             19+                             "19")))+                    Nothing+                ]))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 6+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 2+                  , srcInfoPoints = []+                  }+                "y"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 3 5 6+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 3 5 4 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 5 5 6+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 5 5 6+                     , srcInfoPoints = []+                     }+                   2+                   "2")))+          Nothing+      ]+  , []+  )
+ tests/examples/ImplicitWhereBlocks.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImplicitWhereBlocks.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+foo = x+  where x = 1+        z = 19+y = 2
+ tests/examples/ImportQualifiedPost.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ImportQualifiedPost #-}+module ImportQualifiedPost where++import Data.List qualified as L
+ tests/examples/ImportQualifiedPost.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImportQualifiedPost.hs.parser.golden view
@@ -0,0 +1,89 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 1+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 1+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 1+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 1+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 5 1 5 1+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 33+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 7+                  , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 28 2 33+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 8 2 27+                 , srcInfoPoints = []+                 }+               "ImportQualifiedPost")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 13+                , SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 34 1 37+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 14 1 33+                , srcInfoPoints = []+                }+              "ImportQualifiedPost"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 32+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 7+                    , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 18 4 27+                    , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 28 4 30+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 8 4 17+                  , srcInfoPoints = []+                  }+                "Data.List"+          , importQualified = True+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 31 4 32+                     , srcInfoPoints = []+                     }+                   "L")+          , importSpecs = Nothing+          }+      ]+      []+  , []+  )
+ tests/examples/ImportQualifiedPost.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImportQualifiedPost.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE ImportQualifiedPost #-}+module ImportQualifiedPost where+import qualified Data.List as L
+ tests/examples/IndentedModule1.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+ module Main where+main = putStr "foo"
+ tests/examples/IndentedModule1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedModule1.hs.parser.golden view
@@ -0,0 +1,117 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/IndentedModule1.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/IndentedModule1.hs" 1 1 1 1+            , SrcSpan "tests/examples/IndentedModule1.hs" 2 2 2 2+            , SrcSpan "tests/examples/IndentedModule1.hs" 3 1 3 1+            , SrcSpan "tests/examples/IndentedModule1.hs" 4 1 4 1+            , SrcSpan "tests/examples/IndentedModule1.hs" 4 1 4 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/IndentedModule1.hs" 2 2 2 19+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/IndentedModule1.hs" 2 2 2 8+                  , SrcSpan "tests/examples/IndentedModule1.hs" 2 14 2 19+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/IndentedModule1.hs" 2 9 2 13+                 , srcInfoPoints = []+                 }+               "Main")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/IndentedModule1.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/IndentedModule1.hs" 1 1 1 13+                , SrcSpan "tests/examples/IndentedModule1.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/IndentedModule1.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "NamedFieldPuns"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/IndentedModule1.hs" 3 1 3 20+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/IndentedModule1.hs" 3 1 3 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/IndentedModule1.hs" 3 1 3 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/IndentedModule1.hs" 3 6 3 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/IndentedModule1.hs" 3 6 3 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/IndentedModule1.hs" 3 8 3 20+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/IndentedModule1.hs" 3 8 3 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/IndentedModule1.hs" 3 8 3 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/IndentedModule1.hs" 3 8 3 14+                           , srcInfoPoints = []+                           }+                         "putStr")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/IndentedModule1.hs" 3 15 3 20+                     , srcInfoPoints = []+                     }+                   (String+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/IndentedModule1.hs" 3 15 3 20+                        , srcInfoPoints = []+                        }+                      "foo"+                      "foo"))))+          Nothing+      ]+  , []+  )
+ tests/examples/IndentedModule1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedModule1.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+module Main where+main = putStr "foo"
+ tests/examples/IndentedModule2.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+{- -} module Main where+main = putStr "foo"
+ tests/examples/IndentedModule2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedModule2.hs.parser.golden view
@@ -0,0 +1,119 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/IndentedModule2.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/IndentedModule2.hs" 1 1 1 1+            , SrcSpan "tests/examples/IndentedModule2.hs" 2 7 2 7+            , SrcSpan "tests/examples/IndentedModule2.hs" 3 1 3 1+            , SrcSpan "tests/examples/IndentedModule2.hs" 4 1 4 1+            , SrcSpan "tests/examples/IndentedModule2.hs" 4 1 4 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/IndentedModule2.hs" 2 7 2 24+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/IndentedModule2.hs" 2 7 2 13+                  , SrcSpan "tests/examples/IndentedModule2.hs" 2 19 2 24+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/IndentedModule2.hs" 2 14 2 18+                 , srcInfoPoints = []+                 }+               "Main")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/IndentedModule2.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/IndentedModule2.hs" 1 1 1 13+                , SrcSpan "tests/examples/IndentedModule2.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/IndentedModule2.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "NamedFieldPuns"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/IndentedModule2.hs" 3 1 3 20+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/IndentedModule2.hs" 3 1 3 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/IndentedModule2.hs" 3 1 3 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/IndentedModule2.hs" 3 6 3 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/IndentedModule2.hs" 3 6 3 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/IndentedModule2.hs" 3 8 3 20+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/IndentedModule2.hs" 3 8 3 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/IndentedModule2.hs" 3 8 3 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/IndentedModule2.hs" 3 8 3 14+                           , srcInfoPoints = []+                           }+                         "putStr")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/IndentedModule2.hs" 3 15 3 20+                     , srcInfoPoints = []+                     }+                   (String+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/IndentedModule2.hs" 3 15 3 20+                        , srcInfoPoints = []+                        }+                      "foo"+                      "foo"))))+          Nothing+      ]+  , [ Comment+        True (SrcSpan "tests/examples/IndentedModule2.hs" 2 1 2 6) " "+    ]+  )
+ tests/examples/IndentedModule2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedModule2.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+module Main where+main = putStr "foo"
+ tests/examples/IndentedTopLevelWhere.hs view
@@ -0,0 +1,7 @@+module IndentedTopLevelWhere where++ foo :: Int+ foo = 5 where++ bar :: Int+ bar = 3
+ tests/examples/IndentedTopLevelWhere.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedTopLevelWhere.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedTopLevelWhere.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/IndentedTopLevelWhere.hs" 8 1)+  "Parse error: virtual }"
+ tests/examples/IndentedTopLevelWhere.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedTopLevelWhere.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedTopLevelWhere.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedTopLevelWhere.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedWhere.hs view
@@ -0,0 +1,4 @@++f x = g+  where g :: Int+        g = 0
+ tests/examples/IndentedWhere.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedWhere.hs.parser.golden view
@@ -0,0 +1,148 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/IndentedWhere.hs" 2 1 2 1+            , SrcSpan "tests/examples/IndentedWhere.hs" 2 1 2 1+            , SrcSpan "tests/examples/IndentedWhere.hs" 2 1 2 1+            , SrcSpan "tests/examples/IndentedWhere.hs" 5 1 5 1+            , SrcSpan "tests/examples/IndentedWhere.hs" 5 1 5 1+            ]+        }+      Nothing+      []+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 1 4 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/IndentedWhere.hs" 3 3 3 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 1 4 14+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/IndentedWhere.hs" 3 3 3 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 1 2 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 3 2 4+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 3 2 4+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 5 2 8+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/IndentedWhere.hs" 2 5 2 6 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 7 2 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 7 2 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 7 2 8+                            , srcInfoPoints = []+                            }+                          "g"))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 9 4 14+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/IndentedWhere.hs" 3 9 3 9+                          , SrcSpan "tests/examples/IndentedWhere.hs" 4 9 4 9+                          , SrcSpan "tests/examples/IndentedWhere.hs" 5 1 5 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 9 3 17+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/IndentedWhere.hs" 3 11 3 13 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 9 3 10+                              , srcInfoPoints = []+                              }+                            "g"+                        ]+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 14 3 17+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 14 3 17+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IndentedWhere.hs" 3 14 3 17+                                   , srcInfoPoints = []+                                   }+                                 "Int")))+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 9 4 14+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 9 4 10+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 9 4 10+                                , srcInfoPoints = []+                                }+                              "g"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 11 4 14+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/IndentedWhere.hs" 4 11 4 12 ]+                             }+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 13 4 14+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/IndentedWhere.hs" 4 13 4 14+                                   , srcInfoPoints = []+                                   }+                                 0+                                 "0")))+                        Nothing+                    ]))+          ]+      ]+  , []+  )
+ tests/examples/IndentedWhere.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedWhere.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+f x = g+  where g :: Int+        g = 0
+ tests/examples/IndentedWhereBlock.hs view
@@ -0,0 +1,7 @@+module Graph where++ countryLookUp :: String -> Graph -> Maybe Int+ countryLookUp country graph = indexOf country graph where++ indexOf :: String -> Graph -> Maybe Int+ indexOf _ Empty = Nothing
+ tests/examples/IndentedWhereBlock.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedWhereBlock.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedWhereBlock.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/IndentedWhereBlock.hs" 8 1)+  "Parse error: virtual }"
+ tests/examples/IndentedWhereBlock.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedWhereBlock.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedWhereBlock.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedWhereBlock.hs" 8 1) "Parse error: virtual }"
+ tests/examples/InfixApp.hs view
@@ -0,0 +1,2 @@+f = -w/2+
+ tests/examples/InfixApp.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixApp.hs.parser.golden view
@@ -0,0 +1,94 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/InfixApp.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixApp.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixApp.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixApp.hs" 3 1 3 1+            , SrcSpan "tests/examples/InfixApp.hs" 3 1 3 1+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 1 1 9+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 1 1 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 1 1 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 3 1 9+               , srcInfoPoints = [ SrcSpan "tests/examples/InfixApp.hs" 1 3 1 4 ]+               }+             (NegApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 5 1 9+                  , srcInfoPoints = []+                  }+                (InfixApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 6 1 9+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 6 1 7+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 6 1 7+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 6 1 7+                              , srcInfoPoints = []+                              }+                            "w")))+                   (QVarOp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 7 1 8+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 7 1 8+                           , srcInfoPoints = []+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 7 1 8+                              , srcInfoPoints = []+                              }+                            "/")))+                   (Lit+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 8 1 9+                        , srcInfoPoints = []+                        }+                      (Int+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 8 1 9+                           , srcInfoPoints = []+                           }+                         2+                         "2")))))+          Nothing+      ]+  , []+  )
+ tests/examples/InfixApp.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixApp.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+f = -w / 2
+ tests/examples/InfixBang.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE BangPatterns #-}++(!) arr i = arr i
+ tests/examples/InfixBang.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixBang.hs.parser.golden view
@@ -0,0 +1,122 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/InfixBang.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixBang.hs" 3 1 3 1+            , SrcSpan "tests/examples/InfixBang.hs" 3 1 3 1+            , SrcSpan "tests/examples/InfixBang.hs" 3 1 3 1+            , SrcSpan "tests/examples/InfixBang.hs" 4 1 4 1+            , SrcSpan "tests/examples/InfixBang.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InfixBang.hs" 1 1 1 13+                , SrcSpan "tests/examples/InfixBang.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "BangPatterns"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 1 3 18+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 1 3 18+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InfixBang.hs" 3 1 3 2+                    , SrcSpan "tests/examples/InfixBang.hs" 3 2 3 3+                    , SrcSpan "tests/examples/InfixBang.hs" 3 3 3 4+                    ]+                }+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 2 3 3+                   , srcInfoPoints = []+                   }+                 "!")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 5 3 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 5 3 8+                       , srcInfoPoints = []+                       }+                     "arr")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 9 3 10+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 9 3 10+                       , srcInfoPoints = []+                       }+                     "i")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 11 3 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InfixBang.hs" 3 11 3 12 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 13 3 18+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 13 3 16+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 13 3 16+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 13 3 16+                               , srcInfoPoints = []+                               }+                             "arr")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 17 3 18+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 17 3 18+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 17 3 18+                               , srcInfoPoints = []+                               }+                             "i")))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/InfixBang.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixBang.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE BangPatterns #-}+(!) arr i = arr i
+ tests/examples/InfixFunBind.hs view
@@ -0,0 +1,1 @@+left `first` _ = left
+ tests/examples/InfixFunBind.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixFunBind.hs.parser.golden view
@@ -0,0 +1,79 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 2 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixFunBind.hs" 2 1 2 1+            , SrcSpan "tests/examples/InfixFunBind.hs" 2 1 2 1+            ]+        }+      Nothing+      []+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 22+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 22+                , srcInfoPoints = []+                }+              (PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 5+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 5+                      , srcInfoPoints = []+                      }+                    "left"))+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 7 1 12+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InfixFunBind.hs" 1 6 1 7+                       , SrcSpan "tests/examples/InfixFunBind.hs" 1 7 1 12+                       , SrcSpan "tests/examples/InfixFunBind.hs" 1 12 1 13+                       ]+                   }+                 "first")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 14 1 15+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 16 1 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InfixFunBind.hs" 1 16 1 17 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 18 1 22+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 18 1 22+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 18 1 22+                            , srcInfoPoints = []+                            }+                          "left"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/InfixFunBind.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixFunBind.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+left `first` _ = left
+ tests/examples/InfixParser.hs view
@@ -0,0 +1,6 @@+module InfixParser where++type Parse a b = [a] -> [(b, [a])]++(<|>) :: Parse a b -> Parse a b -> Parse a b+(p1 <|> p2) i = p1 i ++ p2 i
+ tests/examples/InfixParser.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixParser.hs.parser.golden view
@@ -0,0 +1,490 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/InfixParser.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixParser.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixParser.hs" 3 1 3 1+            , SrcSpan "tests/examples/InfixParser.hs" 5 1 5 1+            , SrcSpan "tests/examples/InfixParser.hs" 6 1 6 1+            , SrcSpan "tests/examples/InfixParser.hs" 7 1 7 1+            , SrcSpan "tests/examples/InfixParser.hs" 7 1 7 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 1 1 1 25+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/InfixParser.hs" 1 1 1 7+                  , SrcSpan "tests/examples/InfixParser.hs" 1 20 1 25+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 1 8 1 19+                 , srcInfoPoints = []+                 }+               "InfixParser")+            Nothing+            Nothing))+      []+      []+      [ TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 1 3 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InfixParser.hs" 3 1 3 5+                , SrcSpan "tests/examples/InfixParser.hs" 3 16 3 17+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 6 3 15+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 6 3 13+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 6 3 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 6 3 11+                        , srcInfoPoints = []+                        }+                      "Parse"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 12 3 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 12 3 13+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 14 3 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 14 3 15+                     , srcInfoPoints = []+                     }+                   "b")))+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 18 3 35+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InfixParser.hs" 3 22 3 24 ]+               }+             (TyList+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 18 3 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InfixParser.hs" 3 18 3 19+                      , SrcSpan "tests/examples/InfixParser.hs" 3 20 3 21+                      ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 19 3 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 19 3 20+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyList+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 25 3 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InfixParser.hs" 3 25 3 26+                      , SrcSpan "tests/examples/InfixParser.hs" 3 34 3 35+                      ]+                  }+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 26 3 34+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InfixParser.hs" 3 26 3 27+                         , SrcSpan "tests/examples/InfixParser.hs" 3 28 3 29+                         , SrcSpan "tests/examples/InfixParser.hs" 3 33 3 34+                         ]+                     }+                   Boxed+                   [ TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 27 3 28+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 27 3 28+                            , srcInfoPoints = []+                            }+                          "b")+                   , TyList+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 30 3 33+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InfixParser.hs" 3 30 3 31+                             , SrcSpan "tests/examples/InfixParser.hs" 3 32 3 33+                             ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 31 3 32+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 31 3 32+                               , srcInfoPoints = []+                               }+                             "a"))+                   ])))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 1 5 45+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InfixParser.hs" 5 7 5 9 ]+            }+          [ Symbol+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 1 5 6+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InfixParser.hs" 5 1 5 2+                    , SrcSpan "tests/examples/InfixParser.hs" 5 2 5 5+                    , SrcSpan "tests/examples/InfixParser.hs" 5 5 5 6+                    ]+                }+              "<|>"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 45+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InfixParser.hs" 5 20 5 22 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 19+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 17+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 15+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 15+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 15+                              , srcInfoPoints = []+                              }+                            "Parse")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 16 5 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 16 5 17+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 18 5 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 18 5 19+                        , srcInfoPoints = []+                        }+                      "b")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 45+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InfixParser.hs" 5 33 5 35 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 32+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 30+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 28+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 28+                                 , srcInfoPoints = []+                                 }+                               "Parse")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 29 5 30+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 29 5 30+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 31 5 32+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 31 5 32+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 45+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 43+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 41+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 41+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 41+                                 , srcInfoPoints = []+                                 }+                               "Parse")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 42 5 43+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 42 5 43+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 44 5 45+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 44 5 45+                           , srcInfoPoints = []+                           }+                         "b")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 1 6 29+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 1 6 29+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InfixParser.hs" 6 1 6 2+                    , SrcSpan "tests/examples/InfixParser.hs" 6 11 6 12+                    ]+                }+              (PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 2 6 4+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 2 6 4+                      , srcInfoPoints = []+                      }+                    "p1"))+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 5 6 8+                   , srcInfoPoints = []+                   }+                 "<|>")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 9 6 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 9 6 11+                       , srcInfoPoints = []+                       }+                     "p2")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 13 6 14+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 13 6 14+                       , srcInfoPoints = []+                       }+                     "i")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 15 6 29+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InfixParser.hs" 6 15 6 16 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 29+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 21+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 19+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 19+                                  , srcInfoPoints = []+                                  }+                                "p1")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 20 6 21+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 20 6 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 20 6 21+                                  , srcInfoPoints = []+                                  }+                                "i"))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 22 6 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 22 6 24+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 22 6 24+                               , srcInfoPoints = []+                               }+                             "++")))+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 25 6 29+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 25 6 27+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 25 6 27+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 25 6 27+                                  , srcInfoPoints = []+                                  }+                                "p2")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 28 6 29+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 28 6 29+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 28 6 29+                                  , srcInfoPoints = []+                                  }+                                "i"))))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/InfixParser.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixParser.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+module InfixParser where++type Parse a b = [a] -> [(b, [a])]++(<|>) :: Parse a b -> Parse a b -> Parse a b+(p1 <|> p2) i = p1 i ++ p2 i
+ tests/examples/InfixTypeMinus.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE DataKinds, KindSignatures, TypeOperators, GADTs #-}+module Foo where++-- Test cases+data Vec (n :: Nat) where { VCons :: (m ~ (n-1)) => Double -> Vec m -> Vec n }+data Vec (n :: Nat) where { VCons :: ((n-1) ~ m) => Double -> Vec m -> Vec n }+data Vec (n :: Nat) where { VCons :: ((m+1) ~ n) => Double -> Vec m -> Vec n }+data Vec (n :: Nat) where { VCons :: (n ~ (m+1)) => Double -> Vec m -> Vec n }
+ tests/examples/InfixTypeMinus.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixTypeMinus.hs.parser.golden view
@@ -0,0 +1,1346 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/InfixTypeMinus.hs" 1 1 1 1+            , SrcSpan "tests/examples/InfixTypeMinus.hs" 2 1 2 1+            , SrcSpan "tests/examples/InfixTypeMinus.hs" 2 1 2 1+            , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 1 5 1+            , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 1 6 1+            , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 1 7 1+            , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 1 8 1+            , SrcSpan "tests/examples/InfixTypeMinus.hs" 9 1 9 1+            , SrcSpan "tests/examples/InfixTypeMinus.hs" 9 1 9 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 2 1 2 17+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/InfixTypeMinus.hs" 2 1 2 7+                  , SrcSpan "tests/examples/InfixTypeMinus.hs" 2 12 2 17+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 2 8 2 11+                 , srcInfoPoints = []+                 }+               "Foo")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 1 1 1 65+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InfixTypeMinus.hs" 1 1 1 13+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 1 23 1 24+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 1 39 1 40+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 1 54 1 55+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 1 62 1 65+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InfixTypeMinus.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "DataKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InfixTypeMinus.hs" 1 25 1 39+                , srcInfoPoints = []+                }+              "KindSignatures"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InfixTypeMinus.hs" 1 41 1 54+                , srcInfoPoints = []+                }+              "TypeOperators"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InfixTypeMinus.hs" 1 56 1 61+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      []+      [ GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 1 5 79+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 21 5 26+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 27 5 28+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 78 5 79+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 1 5 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 6 5 20+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 6 5 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 6 5 9+                     , srcInfoPoints = []+                     }+                   "Vec"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 10 5 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 10 5 11+                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 13 5 15+                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 19 5 20+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 11 5 12+                     , srcInfoPoints = []+                     }+                   "n")+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 16 5 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 16 5 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InfixTypeMinus.hs" 5 16 5 19+                           , srcInfoPoints = []+                           }+                         "Nat")))))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InfixTypeMinus.hs" 5 29 5 77+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 35 5 37 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InfixTypeMinus.hs" 5 29 5 34+                   , srcInfoPoints = []+                   }+                 "VCons")+              Nothing+              Nothing+              Nothing+              (TyForall+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 77+                   , srcInfoPoints = []+                   }+                 Nothing+                 (Just+                    (CxSingle+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 52+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 39+                             , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 48 5 49+                             , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 50 5 52+                             ]+                         }+                       (ParenA+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 52+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 39+                                , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 48 5 49+                                , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 50 5 52+                                ]+                            }+                          (TypeA+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 48+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 41 5 42 ]+                               }+                             (TyEquals+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 48+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 41 5 42 ]+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40+                                        , srcInfoPoints = []+                                        }+                                      "m"))+                                (TyParen+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 48+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 44+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 47 5 48+                                         ]+                                     }+                                   (TyInfix+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 47+                                        , srcInfoPoints = []+                                        }+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 45+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 5 44 5 45+                                              , srcInfoPoints = []+                                              }+                                            "n"))+                                      (UnpromotedName+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 5 45 5 46+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 5 45 5 46+                                              , srcInfoPoints = []+                                              }+                                            (Symbol+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/InfixTypeMinus.hs" 5 45 5 46+                                                 , srcInfoPoints = []+                                                 }+                                               "-")))+                                      (TyPromoted+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 5 46 5 47+                                           , srcInfoPoints = []+                                           }+                                         (PromotedInteger+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 5 46 5 47+                                              , srcInfoPoints = []+                                              }+                                            1+                                            "1")))))))))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InfixTypeMinus.hs" 5 53 5 77+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 60 5 62 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 5 53 5 59+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 53 5 59+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 5 53 5 59+                               , srcInfoPoints = []+                               }+                             "Double")))+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 77+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 69 5 71 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 68+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 66+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 66+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 66+                                     , srcInfoPoints = []+                                     }+                                   "Vec")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 5 67 5 68+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 67 5 68+                                  , srcInfoPoints = []+                                  }+                                "m")))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 72 5 77+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 5 72 5 75+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 72 5 75+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 72 5 75+                                     , srcInfoPoints = []+                                     }+                                   "Vec")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 5 76 5 77+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 76 5 77+                                  , srcInfoPoints = []+                                  }+                                "n"))))))+          ]+          []+      , GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 1 6 79+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 21 6 26+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 27 6 28+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 78 6 79+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 1 6 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 6 6 20+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 6 6 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 6 6 9+                     , srcInfoPoints = []+                     }+                   "Vec"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 10 6 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 10 6 11+                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 13 6 15+                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 19 6 20+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 11 6 12+                     , srcInfoPoints = []+                     }+                   "n")+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 16 6 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 16 6 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InfixTypeMinus.hs" 6 16 6 19+                           , srcInfoPoints = []+                           }+                         "Nat")))))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InfixTypeMinus.hs" 6 29 6 77+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 35 6 37 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InfixTypeMinus.hs" 6 29 6 34+                   , srcInfoPoints = []+                   }+                 "VCons")+              Nothing+              Nothing+              Nothing+              (TyForall+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 77+                   , srcInfoPoints = []+                   }+                 Nothing+                 (Just+                    (CxSingle+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 52+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 39+                             , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 48 6 49+                             , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 50 6 52+                             ]+                         }+                       (ParenA+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 52+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 39+                                , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 48 6 49+                                , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 50 6 52+                                ]+                            }+                          (TypeA+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 48+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 45 6 46 ]+                               }+                             (TyEquals+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 48+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 45 6 46 ]+                                  }+                                (TyParen+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 44+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 40+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 43 6 44+                                         ]+                                     }+                                   (TyInfix+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 43+                                        , srcInfoPoints = []+                                        }+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 41+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 6 40 6 41+                                              , srcInfoPoints = []+                                              }+                                            "n"))+                                      (UnpromotedName+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 6 41 6 42+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 6 41 6 42+                                              , srcInfoPoints = []+                                              }+                                            (Symbol+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/InfixTypeMinus.hs" 6 41 6 42+                                                 , srcInfoPoints = []+                                                 }+                                               "-")))+                                      (TyPromoted+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 6 42 6 43+                                           , srcInfoPoints = []+                                           }+                                         (PromotedInteger+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 6 42 6 43+                                              , srcInfoPoints = []+                                              }+                                            1+                                            "1"))))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48+                                        , srcInfoPoints = []+                                        }+                                      "m")))))))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InfixTypeMinus.hs" 6 53 6 77+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 60 6 62 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 6 53 6 59+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 53 6 59+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 6 53 6 59+                               , srcInfoPoints = []+                               }+                             "Double")))+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 77+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 69 6 71 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 68+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 66+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 66+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 66+                                     , srcInfoPoints = []+                                     }+                                   "Vec")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 6 67 6 68+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 67 6 68+                                  , srcInfoPoints = []+                                  }+                                "m")))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 72 6 77+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 6 72 6 75+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 72 6 75+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 72 6 75+                                     , srcInfoPoints = []+                                     }+                                   "Vec")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 6 76 6 77+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 76 6 77+                                  , srcInfoPoints = []+                                  }+                                "n"))))))+          ]+          []+      , GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 1 7 79+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 21 7 26+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 27 7 28+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 78 7 79+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 1 7 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 6 7 20+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 6 7 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 6 7 9+                     , srcInfoPoints = []+                     }+                   "Vec"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 10 7 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 10 7 11+                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 13 7 15+                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 19 7 20+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 11 7 12+                     , srcInfoPoints = []+                     }+                   "n")+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 16 7 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 16 7 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InfixTypeMinus.hs" 7 16 7 19+                           , srcInfoPoints = []+                           }+                         "Nat")))))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InfixTypeMinus.hs" 7 29 7 77+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 35 7 37 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InfixTypeMinus.hs" 7 29 7 34+                   , srcInfoPoints = []+                   }+                 "VCons")+              Nothing+              Nothing+              Nothing+              (TyForall+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 77+                   , srcInfoPoints = []+                   }+                 Nothing+                 (Just+                    (CxSingle+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 52+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 39+                             , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 48 7 49+                             , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 50 7 52+                             ]+                         }+                       (ParenA+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 52+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 39+                                , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 48 7 49+                                , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 50 7 52+                                ]+                            }+                          (TypeA+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 48+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 45 7 46 ]+                               }+                             (TyEquals+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 48+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 45 7 46 ]+                                  }+                                (TyParen+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 44+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 40+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 43 7 44+                                         ]+                                     }+                                   (TyInfix+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 43+                                        , srcInfoPoints = []+                                        }+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 41+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 7 40 7 41+                                              , srcInfoPoints = []+                                              }+                                            "m"))+                                      (UnpromotedName+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 7 41 7 42+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 7 41 7 42+                                              , srcInfoPoints = []+                                              }+                                            (Symbol+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/InfixTypeMinus.hs" 7 41 7 42+                                                 , srcInfoPoints = []+                                                 }+                                               "+")))+                                      (TyPromoted+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 7 42 7 43+                                           , srcInfoPoints = []+                                           }+                                         (PromotedInteger+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 7 42 7 43+                                              , srcInfoPoints = []+                                              }+                                            1+                                            "1"))))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48+                                        , srcInfoPoints = []+                                        }+                                      "n")))))))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InfixTypeMinus.hs" 7 53 7 77+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 60 7 62 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 7 53 7 59+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 53 7 59+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 7 53 7 59+                               , srcInfoPoints = []+                               }+                             "Double")))+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 77+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 69 7 71 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 68+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 66+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 66+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 66+                                     , srcInfoPoints = []+                                     }+                                   "Vec")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 7 67 7 68+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 67 7 68+                                  , srcInfoPoints = []+                                  }+                                "m")))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 72 7 77+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 7 72 7 75+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 72 7 75+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 72 7 75+                                     , srcInfoPoints = []+                                     }+                                   "Vec")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 7 76 7 77+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 76 7 77+                                  , srcInfoPoints = []+                                  }+                                "n"))))))+          ]+          []+      , GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 1 8 79+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 21 8 26+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 27 8 28+                , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 78 8 79+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 1 8 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 6 8 20+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 6 8 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 6 8 9+                     , srcInfoPoints = []+                     }+                   "Vec"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 10 8 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 10 8 11+                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 13 8 15+                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 19 8 20+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 11 8 12+                     , srcInfoPoints = []+                     }+                   "n")+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 16 8 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 16 8 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InfixTypeMinus.hs" 8 16 8 19+                           , srcInfoPoints = []+                           }+                         "Nat")))))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InfixTypeMinus.hs" 8 29 8 77+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 35 8 37 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InfixTypeMinus.hs" 8 29 8 34+                   , srcInfoPoints = []+                   }+                 "VCons")+              Nothing+              Nothing+              Nothing+              (TyForall+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 77+                   , srcInfoPoints = []+                   }+                 Nothing+                 (Just+                    (CxSingle+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 52+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 39+                             , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 48 8 49+                             , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 50 8 52+                             ]+                         }+                       (ParenA+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 52+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 39+                                , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 48 8 49+                                , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 50 8 52+                                ]+                            }+                          (TypeA+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 48+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 41 8 42 ]+                               }+                             (TyEquals+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 48+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 41 8 42 ]+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40+                                        , srcInfoPoints = []+                                        }+                                      "n"))+                                (TyParen+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 48+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 44+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 47 8 48+                                         ]+                                     }+                                   (TyInfix+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 47+                                        , srcInfoPoints = []+                                        }+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 45+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 8 44 8 45+                                              , srcInfoPoints = []+                                              }+                                            "m"))+                                      (UnpromotedName+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 8 45 8 46+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 8 45 8 46+                                              , srcInfoPoints = []+                                              }+                                            (Symbol+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/InfixTypeMinus.hs" 8 45 8 46+                                                 , srcInfoPoints = []+                                                 }+                                               "+")))+                                      (TyPromoted+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InfixTypeMinus.hs" 8 46 8 47+                                           , srcInfoPoints = []+                                           }+                                         (PromotedInteger+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InfixTypeMinus.hs" 8 46 8 47+                                              , srcInfoPoints = []+                                              }+                                            1+                                            "1")))))))))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InfixTypeMinus.hs" 8 53 8 77+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 60 8 62 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 8 53 8 59+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 53 8 59+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 8 53 8 59+                               , srcInfoPoints = []+                               }+                             "Double")))+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 77+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 69 8 71 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 68+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 66+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 66+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 66+                                     , srcInfoPoints = []+                                     }+                                   "Vec")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 8 67 8 68+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 67 8 68+                                  , srcInfoPoints = []+                                  }+                                "m")))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 72 8 77+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 8 72 8 75+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 72 8 75+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 72 8 75+                                     , srcInfoPoints = []+                                     }+                                   "Vec")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InfixTypeMinus.hs" 8 76 8 77+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 76 8 77+                                  , srcInfoPoints = []+                                  }+                                "n"))))))+          ]+          []+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/InfixTypeMinus.hs" 4 1 4 14)+        " Test cases"+    ]+  )
+ tests/examples/InfixTypeMinus.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixTypeMinus.hs.prettyprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE DataKinds, KindSignatures, TypeOperators, GADTs #-}+module Foo where++data Vec (n :: Nat) where+        VCons :: (m ~ (n - 1)) => Double -> Vec m -> Vec n++data Vec (n :: Nat) where+        VCons :: ((n - 1) ~ m) => Double -> Vec m -> Vec n++data Vec (n :: Nat) where+        VCons :: ((m + 1) ~ n) => Double -> Vec m -> Vec n++data Vec (n :: Nat) where+        VCons :: (n ~ (m + 1)) => Double -> Vec m -> Vec n
+ tests/examples/InjectiveTypeFamilies.hs view
@@ -0,0 +1,255 @@+{-# LANGUAGE DataKinds                 #-}+{-# LANGUAGE MultiParamTypeClasses     #-}+{-# LANGUAGE PolyKinds                 #-}+{-# LANGUAGE TypeFamilyDependencies     #-}+{-# LANGUAGE TypeFamilies     #-}+{-# LANGUAGE UndecidableInstances      #-}+{-# LANGUAGE ScopedTypeVariables       #-}+{-# LANGUAGE NoMonomorphismRestriction #-}++module T6018 where++import T6018a -- defines G, identical to F++type family F a b c = (result :: k) | result -> a b c+type instance F Int  Char Bool = Bool+type instance F Char Bool Int  = Int+type instance F Bool Int  Char = Char+++type instance G Bool Int  Char = Char++type family I (a :: k) b (c :: k) = r | r -> a b+type instance I Int  Char Bool = Bool+type instance I Int  Char Int  = Bool+type instance I Bool Int  Int  = Int++-- this is injective - a type variable introduced in the LHS is not mentioned on+-- RHS but we don't claim injectivity in that argument.+type family J a (b :: k) = r | r -> a+type instance J Int b = Char++type MaybeSyn a = Maybe a+newtype MaybeNew a = MaybeNew (Maybe a)++-- make sure we look through type synonyms...+type family K a = r | r -> a+type instance K a = MaybeSyn a++-- .. but not newtypes+type family M a = r | r -> a+type instance M (Maybe a)    = MaybeSyn a+type instance M (MaybeNew a) = MaybeNew a++-- Closed type families++-- these are simple conversions from open type families. They should behave the+-- same+type family FClosed a b c = result | result -> a b c where+    FClosed Int  Char Bool = Bool+    FClosed Char Bool Int  = Int+    FClosed Bool Int  Char = Char++type family IClosed (a :: *) (b :: *) (c :: *) = r | r -> a b where+    IClosed Int  Char Bool = Bool+    IClosed Int  Char Int  = Bool+    IClosed Bool Int  Int  = Int++type family JClosed a (b :: k) = r | r -> a where+    JClosed Int b = Char++type family KClosed a = r | r -> a where+    KClosed a = MaybeSyn a++-- Here the last equation might return both Int and Char but we have to+-- recognize that it is not possible due to equation overlap+type family Bak a = r | r -> a where+     Bak Int  = Char+     Bak Char = Int+     Bak a    = a++-- This is similar, except that the last equation contains concrete type.  Since+-- it is overlapped it should be dropped with a warning+type family Foo a = r | r -> a where+    Foo Int  = Bool+    Foo Bool = Int+    Foo Bool = Bool++-- this one was tricky in the early implementation of injectivity.  Now it is+-- identical to the above but we still keep it as a regression test.+type family Bar a = r | r -> a where+    Bar Int  = Bool+    Bar Bool = Int+    Bar Bool = Char++-- Now let's use declared type families. All the below definitions should work++-- No ambiguity for any of the arguments - all are injective+f :: F a b c -> F a b c+f x = x++-- From 1st instance of F: a ~ Int, b ~ Char, c ~ Bool+fapp :: Bool+fapp = f True++-- now the closed variant of F+fc :: FClosed a b c -> FClosed a b c+fc x = x++fcapp :: Bool+fcapp = fc True++-- The last argument is not injective so it must be instantiated+i :: I a b Int -> I a b Int+i x = x++-- From 1st instance of I: a ~ Int, b ~ Char+iapp :: Bool+iapp = i True++-- again, closed variant of I+ic :: IClosed a b Int -> IClosed a b Int+ic x = x++icapp :: Bool+icapp = ic True++-- Now we have to test weird closed type families:+bak :: Bak a -> Bak a+bak x = x++bakapp1 :: Char+bakapp1 = bak 'c'++bakapp2 :: Double+bakapp2 = bak 1.0++bakapp3 :: ()+bakapp3 = bak ()++foo :: Foo a -> Foo a+foo x = x++fooapp1 :: Bool+fooapp1 = foo True++bar :: Bar a -> Bar a+bar x = x++barapp1 :: Bool+barapp1 = bar True++barapp2 :: Int+barapp2 = bar 1++-- Declarations below test more liberal RHSs of injectivity annotations:+-- permiting variables to appear in different order than the one in which they+-- were declared.+type family H a b = r | r -> b a+type family Hc a b = r | r -> b a where+  Hc a b = a b+class Hcl a b where+  type Ht a b = r | r -> b a++-- repeated tyvars in the RHS of injectivity annotation: no warnings or errors+-- (consistent with behaviour for functional dependencies)+type family Jx a b = r | r -> a a+type family Jcx a b = r | r -> a a where+  Jcx a b = a b+class Jcl a b where+  type Jt a b = r | r -> a a++type family Kx a b = r | r -> a b b+type family Kcx a b = r | r -> a b b where+  Kcx a b = a b+class Kcl a b where+  type Kt a b = r | r -> a b b++-- Declaring kind injectivity. Here we only claim that knowing the RHS+-- determines the LHS kind but not the type.+type family L (a :: k1) = (r :: k2) | r -> k1 where+    L 'True  = Int+    L 'False = Int+    L Maybe  = 3+    L IO     = 3++data KProxy (a :: *) = KProxy+type family KP (kproxy :: KProxy k) = r | r -> k+type instance KP ('KProxy :: KProxy Bool) = Int+type instance KP ('KProxy :: KProxy *)    = Char++kproxy_id :: KP ('KProxy :: KProxy k) -> KP ('KProxy :: KProxy k)+kproxy_id x = x++kproxy_id_use = kproxy_id 'a'++-- Now test some awkward cases from The Injectivity Paper.  All should be+-- accepted.+type family Gx a+type family Hx a+type family Gi a = r | r -> a+type instance Gi Int = Char+type family Hi a = r | r -> a++type family F2 a = r | r -> a+type instance F2 [a]       = [Gi a]+type instance F2 (Maybe a) = Hi a -> Int++type family F4 a = r | r -> a+type instance F4 [a]       = (Gx a, a,   a,    a)+type instance F4 (Maybe a) = (Hx a, a, Int, Bool)++type family G2 a b = r | r -> a b+type instance G2 a    Bool = (a, a)+type instance G2 Bool b    = (b, Bool)++type family G6 a = r | r -> a+type instance G6 [a]  = [Gi a]+type instance G6 Bool = Int++g6_id :: G6 a -> G6 a+g6_id x = x++g6_use :: [Char]+g6_use = g6_id "foo"++-- A sole exception to "bare variables in the RHS" rule+type family Id (a :: k) = (result :: k) | result -> a+type instance Id a = a++-- This makes sure that over-saturated type family applications at the top-level+-- are accepted.+type family IdProxy (a :: k) b = r | r -> a+type instance IdProxy a b = (Id a) b++-- make sure we look through type synonyms properly+type IdSyn a = Id a+type family IdProxySyn (a :: k) b = r | r -> a+type instance IdProxySyn a b = (IdSyn a) b++-- this has bare variable in the RHS but all LHS varaiables are also bare so it+-- should be accepted+type family Fa (a :: k) (b :: k) = (r :: k2) | r -> k+type instance Fa a b = a++-- Taken from #9587. This exposed a bug in the solver.+type family Arr (repr :: * -> *) (a :: *) (b :: *) = (r :: *) | r -> repr a b++class ESymantics repr where+    int :: Int  -> repr Int+    add :: repr Int  -> repr Int -> repr Int++    lam :: (repr a -> repr b) -> repr (Arr repr a b)+    app :: repr (Arr repr a b) -> repr a -> repr b++te4 = let c3 = lam (\f -> lam (\x -> f `app` (f `app` (f `app` x))))+      in (c3 `app` (lam (\x -> x `add` int 14))) `app` (int 0)++-- This used to fail during development+class Manifold' a where+    type Base  a = r | r -> a+    project :: a -> Base a+    unproject :: Base a -> a++id' :: forall a. ( Manifold' a ) => Base a -> Base a+id' = project . unproject
+ tests/examples/InjectiveTypeFamilies.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InjectiveTypeFamilies.hs.parser.golden view
@@ -0,0 +1,15848 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 1 256 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 1 1 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 1 2 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 1 3 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 1 4 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 1 5 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 1 6 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 1 7 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 1 8 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 1 10 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 1 10 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 1 12 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 1 14 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 1 15 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 1 16 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 1 17 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 1 20 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 1 22 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 1 23 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 1 24 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 1 25 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 1 29 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 1 30 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 1 32 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 1 33 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 1 36 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 1 37 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 1 40 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 1 41 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 1 42 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 1 48 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 1 53 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 1 58 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 1 61 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 1 66 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 1 73 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 1 80 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 1 88 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 1 89 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 1 92 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 1 93 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 1 96 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 1 97 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 1 99 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 1 100 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 1 103 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 1 104 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 1 107 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 1 108 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 1 111 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 1 112 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 1 114 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 1 115 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 1 118 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 1 119 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 1 121 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 1 122 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 1 124 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 1 125 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 1 127 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 1 128 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 1 130 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 1 131 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 1 133 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 1 134 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 1 136 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 1 137 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 1 139 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 1 140 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 1 142 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 1 143 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 1 148 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 1 149 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 1 151 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 1 156 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 1 157 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 1 159 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 1 162 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 1 163 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 1 165 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 1 170 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 1 176 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 1 177 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 1 178 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 1 179 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 1 181 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 1 182 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 1 184 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 1 188 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 1 189 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 1 190 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 1 191 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 1 192 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 1 194 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 1 195 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 1 196 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 1 198 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 1 199 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 1 200 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 1 202 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 1 203 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 1 204 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 1 206 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 1 207 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 1 208 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 1 210 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 1 211 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 1 213 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 1 214 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 1 217 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 1 218 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 1 222 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 1 223 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 1 226 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 1 227 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 1 228 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 1 232 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 1 233 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 1 236 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 1 238 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 245 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 1 249 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 1 254 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 1 255 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 256 1 256 1+            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 256 1 256 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 1 10 19+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 1 10 7+                  , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 14 10 19+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 8 10 13+                 , srcInfoPoints = []+                 }+               "T6018")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 1 1 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 1 1 13+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 40 1 43+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "DataKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 1 2 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 1 2 13+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 40 2 43+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 14 2 35+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 1 3 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 1 3 13+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 40 3 43+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 14 3 23+                , srcInfoPoints = []+                }+              "PolyKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 1 4 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 1 4 13+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 41 4 44+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 14 4 36+                , srcInfoPoints = []+                }+              "TypeFamilyDependencies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 1 5 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 1 5 13+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 31 5 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 14 5 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 1 6 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 1 6 13+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 40 6 43+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 14 6 34+                , srcInfoPoints = []+                }+              "UndecidableInstances"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 1 7 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 1 7 13+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 40 7 43+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 14 7 33+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 1 8 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 1 8 13+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 40 8 43+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 14 8 39+                , srcInfoPoints = []+                }+              "NoMonomorphismRestriction"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 1 12 14+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 1 12 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 8 12 14+                  , srcInfoPoints = []+                  }+                "T6018a"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 1 14 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 1 14 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 6 14 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 20+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 18+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 16+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 14+                           , srcInfoPoints = []+                           }+                         "F"))+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 15 14 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 15 14 16+                           , srcInfoPoints = []+                           }+                         "a")))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 17 14 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 17 14 18+                        , srcInfoPoints = []+                        }+                      "b")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 19 14 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 19 14 20+                     , srcInfoPoints = []+                     }+                   "c")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 21 14 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 21 14 22 ]+                  }+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 23 14 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 23 14 24+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 31 14 33+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 35 14 36+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 24 14 30+                        , srcInfoPoints = []+                        }+                      "result")+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 34 14 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 34 14 35+                           , srcInfoPoints = []+                           }+                         "k")))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 37 14 50+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 37 14 38+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 46 14 48+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 39 14 45+                     , srcInfoPoints = []+                     }+                   "result")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 49 14 50+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 51 14 52+                      , srcInfoPoints = []+                      }+                    "b"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 53 14 54+                      , srcInfoPoints = []+                      }+                    "c"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 1 15 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 1 15 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 6 15 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 32 15 33+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 31+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 26+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 20+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 16+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 16+                              , srcInfoPoints = []+                              }+                            "F")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 17 15 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 17 15 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 17 15 20+                              , srcInfoPoints = []+                              }+                            "Int"))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 22 15 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 22 15 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 22 15 26+                           , srcInfoPoints = []+                           }+                         "Char"))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 27 15 31+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 27 15 31+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 27 15 31+                        , srcInfoPoints = []+                        }+                      "Bool"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 34 15 38+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 34 15 38+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 34 15 38+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 1 16 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 1 16 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 6 16 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 32 16 33+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 30+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 26+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 21+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 16+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 16+                              , srcInfoPoints = []+                              }+                            "F")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 17 16 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 17 16 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 17 16 21+                              , srcInfoPoints = []+                              }+                            "Char"))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 22 16 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 22 16 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 22 16 26+                           , srcInfoPoints = []+                           }+                         "Bool"))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 27 16 30+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 27 16 30+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 27 16 30+                        , srcInfoPoints = []+                        }+                      "Int"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 34 16 37+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 34 16 37+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 34 16 37+                     , srcInfoPoints = []+                     }+                   "Int")))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 1 17 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 1 17 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 6 17 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 32 17 33+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 31+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 25+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 21+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 16+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 16+                              , srcInfoPoints = []+                              }+                            "F")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 17 17 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 17 17 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 17 17 21+                              , srcInfoPoints = []+                              }+                            "Bool"))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 22 17 25+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 22 17 25+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 22 17 25+                           , srcInfoPoints = []+                           }+                         "Int"))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 27 17 31+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 27 17 31+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 27 17 31+                        , srcInfoPoints = []+                        }+                      "Char"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 34 17 38+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 34 17 38+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 34 17 38+                     , srcInfoPoints = []+                     }+                   "Char")))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 1 20 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 1 20 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 6 20 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 32 20 33+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 31+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 25+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 21+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 16+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 16+                              , srcInfoPoints = []+                              }+                            "G")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 17 20 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 17 20 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 17 20 21+                              , srcInfoPoints = []+                              }+                            "Bool"))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 22 20 25+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 22 20 25+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 22 20 25+                           , srcInfoPoints = []+                           }+                         "Int"))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 27 20 31+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 27 20 31+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 27 20 31+                        , srcInfoPoints = []+                        }+                      "Char"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 34 20 38+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 34 20 38+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 34 20 38+                     , srcInfoPoints = []+                     }+                   "Char")))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 1 22 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 1 22 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 6 22 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 34+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 25+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 23+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 14+                           , srcInfoPoints = []+                           }+                         "I"))+                   (KindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 15 22 23+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 15 22 16+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 18 22 20+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 22 22 23+                            ]+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 16 22 17+                           , srcInfoPoints = []+                           }+                         "a")+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 21 22 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 21 22 22+                              , srcInfoPoints = []+                              }+                            "k"))))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 24 22 25+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 24 22 25+                        , srcInfoPoints = []+                        }+                      "b")))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 26 22 34+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 26 22 27+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 29 22 31+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 33 22 34+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 27 22 28+                     , srcInfoPoints = []+                     }+                   "c")+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 32 22 33+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 32 22 33+                        , srcInfoPoints = []+                        }+                      "k"))))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 35 22 38+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 35 22 36 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 37 22 38+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 37 22 38+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 39 22 47+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 39 22 40+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 43 22 45+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 41 22 42+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 46 22 47+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 48 22 49+                      , srcInfoPoints = []+                      }+                    "b"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 1 23 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 1 23 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 6 23 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 32 23 33+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 31+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 26+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 20+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 16+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 16+                              , srcInfoPoints = []+                              }+                            "I")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 17 23 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 17 23 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 17 23 20+                              , srcInfoPoints = []+                              }+                            "Int"))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 22 23 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 22 23 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 22 23 26+                           , srcInfoPoints = []+                           }+                         "Char"))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 27 23 31+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 27 23 31+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 27 23 31+                        , srcInfoPoints = []+                        }+                      "Bool"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 34 23 38+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 34 23 38+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 34 23 38+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 1 24 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 1 24 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 6 24 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 32 24 33+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 30+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 26+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 20+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 16+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 16+                              , srcInfoPoints = []+                              }+                            "I")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 17 24 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 17 24 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 17 24 20+                              , srcInfoPoints = []+                              }+                            "Int"))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 22 24 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 22 24 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 22 24 26+                           , srcInfoPoints = []+                           }+                         "Char"))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 27 24 30+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 27 24 30+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 27 24 30+                        , srcInfoPoints = []+                        }+                      "Int"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 34 24 38+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 34 24 38+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 34 24 38+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 1 25 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 1 25 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 6 25 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 32 25 33+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 30+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 25+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 21+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 16+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 16+                              , srcInfoPoints = []+                              }+                            "I")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 17 25 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 17 25 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 17 25 21+                              , srcInfoPoints = []+                              }+                            "Bool"))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 22 25 25+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 22 25 25+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 22 25 25+                           , srcInfoPoints = []+                           }+                         "Int"))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 27 25 30+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 27 25 30+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 27 25 30+                        , srcInfoPoints = []+                        }+                      "Int"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 34 25 37+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 34 25 37+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 34 25 37+                     , srcInfoPoints = []+                     }+                   "Int")))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 1 29 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 1 29 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 6 29 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 13 29 25+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 13 29 16+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 13 29 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 13 29 14+                        , srcInfoPoints = []+                        }+                      "J"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 15 29 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 15 29 16+                        , srcInfoPoints = []+                        }+                      "a")))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 17 29 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 17 29 18+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 20 29 22+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 24 29 25+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 18 29 19+                     , srcInfoPoints = []+                     }+                   "b")+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 23 29 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 23 29 24+                        , srcInfoPoints = []+                        }+                      "k"))))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 26 29 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 26 29 27 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 28 29 29+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 28 29 29+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 30 29 38+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 30 29 31+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 34 29 36+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 32 29 33+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 37 29 38+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 1 30 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 1 30 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 6 30 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 23 30 24+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 22+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 20+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 16+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 16+                           , srcInfoPoints = []+                           }+                         "J")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 17 30 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 17 30 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 17 30 20+                           , srcInfoPoints = []+                           }+                         "Int"))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 21 30 22+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 21 30 22+                     , srcInfoPoints = []+                     }+                   "b")))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 25 30 29+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 25 30 29+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 25 30 29+                     , srcInfoPoints = []+                     }+                   "Char")))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 1 32 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 1 32 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 17 32 18+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 6 32 16+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 6 32 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 6 32 14+                     , srcInfoPoints = []+                     }+                   "MaybeSyn"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 15 32 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 15 32 16+                     , srcInfoPoints = []+                     }+                   "a")))+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 19 32 26+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 19 32 24+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 19 32 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 19 32 24+                        , srcInfoPoints = []+                        }+                      "Maybe")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 25 32 26+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 25 32 26+                     , srcInfoPoints = []+                     }+                   "a")))+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 1 33 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 20 33 21 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 1 33 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 9 33 19+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 9 33 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 9 33 17+                     , srcInfoPoints = []+                     }+                   "MaybeNew"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 18 33 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 18 33 19+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 22 33 40+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 22 33 40+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 22 33 30+                      , srcInfoPoints = []+                      }+                    "MaybeNew")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 31 33 40+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 31 33 32+                           , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 39 33 40+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 32 33 39+                          , srcInfoPoints = []+                          }+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 32 33 37+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 32 33 37+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 32 33 37+                                   , srcInfoPoints = []+                                   }+                                 "Maybe")))+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 38 33 39+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 38 33 39+                                , srcInfoPoints = []+                                }+                              "a")))+                 ])+          ]+          []+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 1 36 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 1 36 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 6 36 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 13 36 16+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 13 36 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 13 36 14+                     , srcInfoPoints = []+                     }+                   "K"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 15 36 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 15 36 16+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 17 36 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 17 36 18 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 19 36 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 19 36 20+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 21 36 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 21 36 22+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 25 36 27+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 23 36 24+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 28 36 29+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 1 37 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 1 37 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 6 37 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 19 37 20+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 15 37 18+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 15 37 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 15 37 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 15 37 16+                        , srcInfoPoints = []+                        }+                      "K")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 17 37 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 17 37 18+                     , srcInfoPoints = []+                     }+                   "a")))+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 21 37 31+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 21 37 29+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 21 37 29+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 21 37 29+                        , srcInfoPoints = []+                        }+                      "MaybeSyn")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 30 37 31+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 30 37 31+                     , srcInfoPoints = []+                     }+                   "a")))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 1 40 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 1 40 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 6 40 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 13 40 16+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 13 40 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 13 40 14+                     , srcInfoPoints = []+                     }+                   "M"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 15 40 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 15 40 16+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 17 40 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 17 40 18 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 19 40 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 19 40 20+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 21 40 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 21 40 22+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 25 40 27+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 23 40 24+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 28 40 29+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 1 41 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 1 41 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 6 41 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 30 41 31+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 15 41 26+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 15 41 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 15 41 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 15 41 16+                        , srcInfoPoints = []+                        }+                      "M")))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 17 41 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 17 41 18+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 25 41 26+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 18 41 25+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 18 41 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 18 41 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 18 41 23+                              , srcInfoPoints = []+                              }+                            "Maybe")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 24 41 25+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 24 41 25+                           , srcInfoPoints = []+                           }+                         "a")))))+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 32 41 42+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 32 41 40+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 32 41 40+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 32 41 40+                        , srcInfoPoints = []+                        }+                      "MaybeSyn")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 41 41 42+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 41 41 42+                     , srcInfoPoints = []+                     }+                   "a")))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 1 42 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 1 42 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 6 42 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 30 42 31+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 15 42 29+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 15 42 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 15 42 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 15 42 16+                        , srcInfoPoints = []+                        }+                      "M")))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 17 42 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 17 42 18+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 28 42 29+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 18 42 28+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 18 42 26+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 18 42 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 18 42 26+                              , srcInfoPoints = []+                              }+                            "MaybeNew")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 27 42 28+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 27 42 28+                           , srcInfoPoints = []+                           }+                         "a")))))+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 32 42 42+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 32 42 40+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 32 42 40+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 32 42 40+                        , srcInfoPoints = []+                        }+                      "MaybeNew")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 41 42 42+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 41 42 42+                     , srcInfoPoints = []+                     }+                   "a")))+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 1 48 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 1 48 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 6 48 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 54 48 59+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 26+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 24+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 22+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 20+                           , srcInfoPoints = []+                           }+                         "FClosed"))+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 21 48 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 21 48 22+                           , srcInfoPoints = []+                           }+                         "a")))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 23 48 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 23 48 24+                        , srcInfoPoints = []+                        }+                      "b")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 25 48 26+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 25 48 26+                     , srcInfoPoints = []+                     }+                   "c")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 27 48 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 27 48 28 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 29 48 35+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 29 48 35+                        , srcInfoPoints = []+                        }+                      "result"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 36 48 49+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 36 48 37+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 45 48 47+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 38 48 44+                     , srcInfoPoints = []+                     }+                   "result")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 48 48 49+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 50 48 51+                      , srcInfoPoints = []+                      }+                    "b"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 52 48 53+                      , srcInfoPoints = []+                      }+                    "c"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 34+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 28 49 29 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 27+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 22+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 16+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 12+                                  , srcInfoPoints = []+                                  }+                                "FClosed")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 13 49 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 13 49 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 13 49 16+                                  , srcInfoPoints = []+                                  }+                                "Int"))))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 18 49 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 18 49 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 18 49 22+                               , srcInfoPoints = []+                               }+                             "Char"))))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 23 49 27+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 23 49 27+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 23 49 27+                            , srcInfoPoints = []+                            }+                          "Bool"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 30 49 34+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 30 49 34+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 30 49 34+                         , srcInfoPoints = []+                         }+                       "Bool")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 33+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 28 50 29 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 26+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 22+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 17+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 12+                                  , srcInfoPoints = []+                                  }+                                "FClosed")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 13 50 17+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 13 50 17+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 13 50 17+                                  , srcInfoPoints = []+                                  }+                                "Char"))))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 18 50 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 18 50 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 18 50 22+                               , srcInfoPoints = []+                               }+                             "Bool"))))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 23 50 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 23 50 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 23 50 26+                            , srcInfoPoints = []+                            }+                          "Int"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 30 50 33+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 30 50 33+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 30 50 33+                         , srcInfoPoints = []+                         }+                       "Int")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 34+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 28 51 29 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 27+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 21+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 17+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 12+                                  , srcInfoPoints = []+                                  }+                                "FClosed")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 13 51 17+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 13 51 17+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 13 51 17+                                  , srcInfoPoints = []+                                  }+                                "Bool"))))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 18 51 21+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 18 51 21+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 18 51 21+                               , srcInfoPoints = []+                               }+                             "Int"))))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 23 51 27+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 23 51 27+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 23 51 27+                            , srcInfoPoints = []+                            }+                          "Char"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 30 51 34+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 30 51 34+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 30 51 34+                         , srcInfoPoints = []+                         }+                       "Char")))+          ]+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 1 53 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 1 53 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 6 53 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 63 53 68+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 47+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 38+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 29+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 20+                           , srcInfoPoints = []+                           }+                         "IClosed"))+                   (KindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 21 53 29+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 21 53 22+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 24 53 26+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 28 53 29+                            ]+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 22 53 23+                           , srcInfoPoints = []+                           }+                         "a")+                      (TyStar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 27 53 28+                           , srcInfoPoints = []+                           })))+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 30 53 38+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 30 53 31+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 33 53 35+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 37 53 38+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 31 53 32+                        , srcInfoPoints = []+                        }+                      "b")+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 36 53 37+                        , srcInfoPoints = []+                        })))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 39 53 47+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 39 53 40+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 42 53 44+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 46 53 47+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 40 53 41+                     , srcInfoPoints = []+                     }+                   "c")+                (TyStar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 45 53 46+                     , srcInfoPoints = []+                     })))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 48 53 51+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 48 53 49 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 50 53 51+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 50 53 51+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 52 53 60+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 52 53 53+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 56 53 58+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 54 53 55+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 59 53 60+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 61 53 62+                      , srcInfoPoints = []+                      }+                    "b"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 34+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 28 54 29 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 27+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 22+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 16+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 12+                                  , srcInfoPoints = []+                                  }+                                "IClosed")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 13 54 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 13 54 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 13 54 16+                                  , srcInfoPoints = []+                                  }+                                "Int"))))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 18 54 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 18 54 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 18 54 22+                               , srcInfoPoints = []+                               }+                             "Char"))))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 23 54 27+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 23 54 27+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 23 54 27+                            , srcInfoPoints = []+                            }+                          "Bool"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 30 54 34+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 30 54 34+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 30 54 34+                         , srcInfoPoints = []+                         }+                       "Bool")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 34+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 28 55 29 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 26+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 22+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 16+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 12+                                  , srcInfoPoints = []+                                  }+                                "IClosed")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 13 55 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 13 55 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 13 55 16+                                  , srcInfoPoints = []+                                  }+                                "Int"))))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 18 55 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 18 55 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 18 55 22+                               , srcInfoPoints = []+                               }+                             "Char"))))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 23 55 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 23 55 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 23 55 26+                            , srcInfoPoints = []+                            }+                          "Int"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 30 55 34+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 30 55 34+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 30 55 34+                         , srcInfoPoints = []+                         }+                       "Bool")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 33+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 28 56 29 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 26+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 21+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 17+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 12+                                  , srcInfoPoints = []+                                  }+                                "IClosed")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 13 56 17+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 13 56 17+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 13 56 17+                                  , srcInfoPoints = []+                                  }+                                "Bool"))))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 18 56 21+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 18 56 21+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 18 56 21+                               , srcInfoPoints = []+                               }+                             "Int"))))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 23 56 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 23 56 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 23 56 26+                            , srcInfoPoints = []+                            }+                          "Int"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 30 56 33+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 30 56 33+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 30 56 33+                         , srcInfoPoints = []+                         }+                       "Int")))+          ]+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 1 58 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 1 58 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 6 58 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 45 58 50+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 13 58 31+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 13 58 22+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 13 58 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 13 58 20+                        , srcInfoPoints = []+                        }+                      "JClosed"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 21 58 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 21 58 22+                        , srcInfoPoints = []+                        }+                      "a")))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 23 58 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 23 58 24+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 26 58 28+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 30 58 31+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 24 58 25+                     , srcInfoPoints = []+                     }+                   "b")+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 29 58 30+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 29 58 30+                        , srcInfoPoints = []+                        }+                      "k"))))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 32 58 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 32 58 33 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 34 58 35+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 34 58 35+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 36 58 44+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 36 58 37+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 40 58 42+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 38 58 39+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 43 58 44+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 25+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 19 59 20 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 18+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 16+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 12+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 12+                               , srcInfoPoints = []+                               }+                             "JClosed")))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 13 59 16+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 13 59 16+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 13 59 16+                               , srcInfoPoints = []+                               }+                             "Int"))))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 17 59 18+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 17 59 18+                         , srcInfoPoints = []+                         }+                       "b")))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 21 59 25+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 21 59 25+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 21 59 25+                         , srcInfoPoints = []+                         }+                       "Char")))+          ]+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 1 61 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 1 61 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 6 61 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 36 61 41+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 13 61 22+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 13 61 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 13 61 20+                     , srcInfoPoints = []+                     }+                   "KClosed"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 21 61 22+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 21 61 22+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 23 61 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 23 61 24 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 25 61 26+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 25 61 26+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 27 61 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 27 61 28+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 31 61 33+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 29 61 30+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 34 61 35+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 15 62 16 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 14+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 12+                            , srcInfoPoints = []+                            }+                          "KClosed")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 13 62 14+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 13 62 14+                         , srcInfoPoints = []+                         }+                       "a")))+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 17 62 27+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 17 62 25+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 17 62 25+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 17 62 25+                            , srcInfoPoints = []+                            }+                          "MaybeSyn")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 26 62 27+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 26 62 27+                         , srcInfoPoints = []+                         }+                       "a")))+          ]+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 1 66 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 1 66 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 6 66 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 32 66 37+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 13 66 18+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 13 66 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 13 66 16+                     , srcInfoPoints = []+                     }+                   "Bak"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 17 66 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 17 66 18+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 19 66 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 19 66 20 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 21 66 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 21 66 22+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 23 66 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 23 66 24+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 27 66 29+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 25 66 26+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 30 66 31+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 21+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 15 67 16 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 13+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 9+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 9+                            , srcInfoPoints = []+                            }+                          "Bak")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 10 67 13+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 10 67 13+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 10 67 13+                            , srcInfoPoints = []+                            }+                          "Int"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 17 67 21+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 17 67 21+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 17 67 21+                         , srcInfoPoints = []+                         }+                       "Char")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 20+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 15 68 16 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 14+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 9+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 9+                            , srcInfoPoints = []+                            }+                          "Bak")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 10 68 14+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 10 68 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 10 68 14+                            , srcInfoPoints = []+                            }+                          "Char"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 17 68 20+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 17 68 20+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 17 68 20+                         , srcInfoPoints = []+                         }+                       "Int")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 18+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 15 69 16 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 11+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 9+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 9+                            , srcInfoPoints = []+                            }+                          "Bak")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 10 69 11+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 10 69 11+                         , srcInfoPoints = []+                         }+                       "a")))+              (TyVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 17 69 18+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 17 69 18+                      , srcInfoPoints = []+                      }+                    "a"))+          ]+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 1 73 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 1 73 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 6 73 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 32 73 37+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 13 73 18+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 13 73 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 13 73 16+                     , srcInfoPoints = []+                     }+                   "Foo"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 17 73 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 17 73 18+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 19 73 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 19 73 20 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 21 73 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 21 73 22+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 23 73 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 23 73 24+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 27 73 29+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 25 73 26+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 30 73 31+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 20+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 14 74 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 12+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 8+                            , srcInfoPoints = []+                            }+                          "Foo")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 9 74 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 9 74 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 9 74 12+                            , srcInfoPoints = []+                            }+                          "Int"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 16 74 20+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 16 74 20+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 16 74 20+                         , srcInfoPoints = []+                         }+                       "Bool")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 19+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 14 75 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 13+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 8+                            , srcInfoPoints = []+                            }+                          "Foo")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 9 75 13+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 9 75 13+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 9 75 13+                            , srcInfoPoints = []+                            }+                          "Bool"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 16 75 19+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 16 75 19+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 16 75 19+                         , srcInfoPoints = []+                         }+                       "Int")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 20+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 14 76 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 13+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 8+                            , srcInfoPoints = []+                            }+                          "Foo")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 9 76 13+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 9 76 13+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 9 76 13+                            , srcInfoPoints = []+                            }+                          "Bool"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 16 76 20+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 16 76 20+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 16 76 20+                         , srcInfoPoints = []+                         }+                       "Bool")))+          ]+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 1 80 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 1 80 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 6 80 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 32 80 37+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 13 80 18+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 13 80 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 13 80 16+                     , srcInfoPoints = []+                     }+                   "Bar"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 17 80 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 17 80 18+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 19 80 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 19 80 20 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 21 80 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 21 80 22+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 23 80 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 23 80 24+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 27 80 29+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 25 80 26+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 30 80 31+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 20+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 14 81 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 12+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 8+                            , srcInfoPoints = []+                            }+                          "Bar")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 9 81 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 9 81 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 9 81 12+                            , srcInfoPoints = []+                            }+                          "Int"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 16 81 20+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 16 81 20+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 16 81 20+                         , srcInfoPoints = []+                         }+                       "Bool")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 19+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 14 82 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 13+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 8+                            , srcInfoPoints = []+                            }+                          "Bar")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 9 82 13+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 9 82 13+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 9 82 13+                            , srcInfoPoints = []+                            }+                          "Bool"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 16 82 19+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 16 82 19+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 16 82 19+                         , srcInfoPoints = []+                         }+                       "Int")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 20+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 14 83 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 13+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 8+                            , srcInfoPoints = []+                            }+                          "Bar")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 9 83 13+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 9 83 13+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 9 83 13+                            , srcInfoPoints = []+                            }+                          "Bool"))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 16 83 20+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 16 83 20+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 16 83 20+                         , srcInfoPoints = []+                         }+                       "Char")))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 1 88 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 3 88 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 1 88 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 14 88 16 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 13+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 11+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 9+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 7+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 7+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 7+                                 , srcInfoPoints = []+                                 }+                               "F")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 8 88 9+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 8 88 9+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 10 88 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 10 88 11+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 12 88 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 12 88 13+                        , srcInfoPoints = []+                        }+                      "c")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 24+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 22+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 20+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 18+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 18+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 18+                                 , srcInfoPoints = []+                                 }+                               "F")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 19 88 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 19 88 20+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 21 88 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 21 88 22+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 23 88 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 23 88 24+                        , srcInfoPoints = []+                        }+                      "c"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 1 89 8+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 1 89 8+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 1 89 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 3 89 4+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 3 89 4+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 5 89 8+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 5 89 6 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 7 89 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 7 89 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 7 89 8+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 1 92 13+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 6 92 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 1 92 5+                , srcInfoPoints = []+                }+              "fapp"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 9 92 13+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 9 92 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 9 92 13+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 1 93 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 1 93 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 1 93 5+                  , srcInfoPoints = []+                  }+                "fapp"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 6 93 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 6 93 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 8 93 14+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 8 93 9+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 8 93 9+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 8 93 9+                           , srcInfoPoints = []+                           }+                         "f")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 10 93 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 10 93 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 10 93 14+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 1 96 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 4 96 6 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 1 96 3+                , srcInfoPoints = []+                }+              "fc"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 37+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 21 96 23 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 20+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 18+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 16+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 14+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 14+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 14+                                 , srcInfoPoints = []+                                 }+                               "FClosed")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 15 96 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 15 96 16+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 17 96 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 17 96 18+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 19 96 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 19 96 20+                        , srcInfoPoints = []+                        }+                      "c")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 37+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 35+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 33+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 31+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 31+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 31+                                 , srcInfoPoints = []+                                 }+                               "FClosed")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 32 96 33+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 32 96 33+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 34 96 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 34 96 35+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 36 96 37+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 36 96 37+                        , srcInfoPoints = []+                        }+                      "c"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 1 97 9+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 1 97 9+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 1 97 3+                   , srcInfoPoints = []+                   }+                 "fc")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 4 97 5+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 4 97 5+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 6 97 9+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 6 97 7 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 8 97 9+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 8 97 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 8 97 9+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 1 99 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 7 99 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 1 99 6+                , srcInfoPoints = []+                }+              "fcapp"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 10 99 14+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 10 99 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 10 99 14+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 1 100 16+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 1 100 6+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 1 100 6+                  , srcInfoPoints = []+                  }+                "fcapp"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 7 100 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 7 100 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 9 100 16+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 9 100 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 9 100 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 9 100 11+                           , srcInfoPoints = []+                           }+                         "fc")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 12 100 16+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 12 100 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 12 100 16+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 1 103 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 3 103 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 1 103 2+                , srcInfoPoints = []+                }+              "i"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 28+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 16 103 18 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 15+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 11+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 9+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 7+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 7+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 7+                                 , srcInfoPoints = []+                                 }+                               "I")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 8 103 9+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 8 103 9+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 10 103 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 10 103 11+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 12 103 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 12 103 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 12 103 15+                           , srcInfoPoints = []+                           }+                         "Int"))))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 28+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 24+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 22+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 20+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 20+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 20+                                 , srcInfoPoints = []+                                 }+                               "I")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 21 103 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 21 103 22+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 23 103 24+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 23 103 24+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 25 103 28+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 25 103 28+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 25 103 28+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 1 104 8+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 1 104 8+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 1 104 2+                   , srcInfoPoints = []+                   }+                 "i")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 3 104 4+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 3 104 4+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 5 104 8+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 5 104 6 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 7 104 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 7 104 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 7 104 8+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 1 107 13+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 6 107 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 1 107 5+                , srcInfoPoints = []+                }+              "iapp"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 9 107 13+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 9 107 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 9 107 13+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 1 108 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 1 108 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 1 108 5+                  , srcInfoPoints = []+                  }+                "iapp"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 6 108 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 6 108 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 8 108 14+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 8 108 9+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 8 108 9+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 8 108 9+                           , srcInfoPoints = []+                           }+                         "i")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 10 108 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 10 108 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 10 108 14+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 1 111 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 4 111 6 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 1 111 3+                , srcInfoPoints = []+                }+              "ic"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 41+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 23 111 25 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 22+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 18+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 16+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 14+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 14+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 14+                                 , srcInfoPoints = []+                                 }+                               "IClosed")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 15 111 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 15 111 16+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 17 111 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 17 111 18+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 19 111 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 19 111 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 19 111 22+                           , srcInfoPoints = []+                           }+                         "Int"))))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 41+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 37+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 35+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 33+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 33+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 33+                                 , srcInfoPoints = []+                                 }+                               "IClosed")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 34 111 35+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 34 111 35+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 36 111 37+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 36 111 37+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 38 111 41+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 38 111 41+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 38 111 41+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 1 112 9+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 1 112 9+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 1 112 3+                   , srcInfoPoints = []+                   }+                 "ic")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 4 112 5+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 4 112 5+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 6 112 9+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 6 112 7 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 8 112 9+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 8 112 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 8 112 9+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 1 114 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 7 114 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 1 114 6+                , srcInfoPoints = []+                }+              "icapp"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 10 114 14+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 10 114 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 10 114 14+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 1 115 16+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 1 115 6+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 1 115 6+                  , srcInfoPoints = []+                  }+                "icapp"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 7 115 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 7 115 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 9 115 16+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 9 115 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 9 115 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 9 115 11+                           , srcInfoPoints = []+                           }+                         "ic")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 12 115 16+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 12 115 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 12 115 16+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 1 118 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 5 118 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 1 118 4+                , srcInfoPoints = []+                }+              "bak"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 14 118 16 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 11+                           , srcInfoPoints = []+                           }+                         "Bak")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 12 118 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 12 118 13+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 17 118 22+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 17 118 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 17 118 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 17 118 20+                           , srcInfoPoints = []+                           }+                         "Bak")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 21 118 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 21 118 22+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 1 119 10+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 1 119 10+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 1 119 4+                   , srcInfoPoints = []+                   }+                 "bak")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 5 119 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 5 119 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 7 119 10+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 7 119 8 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 9 119 10+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 9 119 10+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 9 119 10+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 1 121 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 9 121 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 1 121 8+                , srcInfoPoints = []+                }+              "bakapp1"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 12 121 16+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 12 121 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 12 121 16+                     , srcInfoPoints = []+                     }+                   "Char")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 1 122 18+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 1 122 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 1 122 8+                  , srcInfoPoints = []+                  }+                "bakapp1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 9 122 18+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 9 122 10 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 11 122 18+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 11 122 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 11 122 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 11 122 14+                           , srcInfoPoints = []+                           }+                         "bak")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 15 122 18+                     , srcInfoPoints = []+                     }+                   (Char+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 15 122 18+                        , srcInfoPoints = []+                        }+                      'c'+                      "c"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 1 124 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 9 124 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 1 124 8+                , srcInfoPoints = []+                }+              "bakapp2"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 12 124 18+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 12 124 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 12 124 18+                     , srcInfoPoints = []+                     }+                   "Double")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 1 125 18+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 1 125 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 1 125 8+                  , srcInfoPoints = []+                  }+                "bakapp2"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 9 125 18+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 9 125 10 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 11 125 18+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 11 125 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 11 125 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 11 125 14+                           , srcInfoPoints = []+                           }+                         "bak")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 15 125 18+                     , srcInfoPoints = []+                     }+                   (Frac+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 15 125 18+                        , srcInfoPoints = []+                        }+                      (1 % 1)+                      "1.0"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 1 127 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 9 127 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 1 127 8+                , srcInfoPoints = []+                }+              "bakapp3"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 13+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 13 127 14+                   ]+               }+             (Special+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 13+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 13 127 14+                      ]+                  }+                (UnitCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 13+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 13 127 14+                         ]+                     })))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 1 128 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 1 128 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 1 128 8+                  , srcInfoPoints = []+                  }+                "bakapp3"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 9 128 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 9 128 10 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 11 128 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 11 128 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 11 128 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 11 128 14+                           , srcInfoPoints = []+                           }+                         "bak")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 16+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 16 128 17+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 16+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 16 128 17+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 17+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 16+                               , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 16 128 17+                               ]+                           })))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 1 130 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 5 130 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 1 130 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 14 130 16 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 11+                           , srcInfoPoints = []+                           }+                         "Foo")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 12 130 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 12 130 13+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 17 130 22+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 17 130 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 17 130 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 17 130 20+                           , srcInfoPoints = []+                           }+                         "Foo")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 21 130 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 21 130 22+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 1 131 10+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 1 131 10+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 1 131 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 5 131 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 5 131 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 7 131 10+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 7 131 8 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 9 131 10+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 9 131 10+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 9 131 10+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 1 133 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 9 133 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 1 133 8+                , srcInfoPoints = []+                }+              "fooapp1"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 12 133 16+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 12 133 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 12 133 16+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 1 134 19+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 1 134 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 1 134 8+                  , srcInfoPoints = []+                  }+                "fooapp1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 9 134 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 9 134 10 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 11 134 19+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 11 134 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 11 134 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 11 134 14+                           , srcInfoPoints = []+                           }+                         "foo")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 15 134 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 15 134 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 15 134 19+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 1 136 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 5 136 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 1 136 4+                , srcInfoPoints = []+                }+              "bar"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 14 136 16 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 13+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 11+                           , srcInfoPoints = []+                           }+                         "Bar")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 12 136 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 12 136 13+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 17 136 22+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 17 136 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 17 136 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 17 136 20+                           , srcInfoPoints = []+                           }+                         "Bar")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 21 136 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 21 136 22+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 1 137 10+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 1 137 10+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 1 137 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 5 137 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 5 137 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 7 137 10+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 7 137 8 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 9 137 10+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 9 137 10+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 9 137 10+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 1 139 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 9 139 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 1 139 8+                , srcInfoPoints = []+                }+              "barapp1"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 12 139 16+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 12 139 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 12 139 16+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 1 140 19+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 1 140 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 1 140 8+                  , srcInfoPoints = []+                  }+                "barapp1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 9 140 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 9 140 10 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 11 140 19+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 11 140 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 11 140 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 11 140 14+                           , srcInfoPoints = []+                           }+                         "bar")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 15 140 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 15 140 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 15 140 19+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 1 142 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 9 142 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 1 142 8+                , srcInfoPoints = []+                }+              "barapp2"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 12 142 15+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 12 142 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 12 142 15+                     , srcInfoPoints = []+                     }+                   "Int")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 1 143 16+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 1 143 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 1 143 8+                  , srcInfoPoints = []+                  }+                "barapp2"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 9 143 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 9 143 10 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 11 143 16+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 11 143 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 11 143 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 11 143 14+                           , srcInfoPoints = []+                           }+                         "bar")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 15 143 16+                     , srcInfoPoints = []+                     }+                   (Int+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 15 143 16+                        , srcInfoPoints = []+                        }+                      1+                      "1"))))+          Nothing+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 1 148 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 1 148 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 6 148 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 13 148 18+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 13 148 16+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 13 148 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 13 148 14+                        , srcInfoPoints = []+                        }+                      "H"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 15 148 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 15 148 16+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 17 148 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 17 148 18+                     , srcInfoPoints = []+                     }+                   "b")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 19 148 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 19 148 20 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 21 148 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 21 148 22+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 23 148 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 23 148 24+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 27 148 29+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 25 148 26+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 30 148 31+                      , srcInfoPoints = []+                      }+                    "b"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 32 148 33+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 1 149 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 1 149 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 6 149 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 35 149 40+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 13 149 19+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 13 149 17+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 13 149 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 13 149 15+                        , srcInfoPoints = []+                        }+                      "Hc"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 16 149 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 16 149 17+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 18 149 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 18 149 19+                     , srcInfoPoints = []+                     }+                   "b")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 20 149 23+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 20 149 21 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 22 149 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 22 149 23+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 24 149 32+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 24 149 25+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 28 149 30+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 26 149 27+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 31 149 32+                      , srcInfoPoints = []+                      }+                    "b"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 33 149 34+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 15+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 10 150 11 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 9+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 7+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 5+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 5+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 5+                               , srcInfoPoints = []+                               }+                             "Hc")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 6 150 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 6 150 7+                            , srcInfoPoints = []+                            }+                          "a")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 8 150 9+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 8 150 9+                         , srcInfoPoints = []+                         }+                       "b")))+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 12 150 15+                   , srcInfoPoints = []+                   }+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 12 150 13+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 12 150 13+                         , srcInfoPoints = []+                         }+                       "a"))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 14 150 15+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 14 150 15+                         , srcInfoPoints = []+                         }+                       "b")))+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 1 152 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 1 151 6+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 15 151 20+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 3 152 3+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 1 156 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 7 151 14+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 7 151 12+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 7 151 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 7 151 10+                        , srcInfoPoints = []+                        }+                      "Hcl"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 11 151 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 11 151 12+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 13 151 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 13 151 14+                     , srcInfoPoints = []+                     }+                   "b")))+          []+          (Just+             [ ClsTyFam+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 3 152 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 3 152 7 ]+                   }+                 (DHApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 8 152 14+                      , srcInfoPoints = []+                      }+                    (DHApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 8 152 12+                         , srcInfoPoints = []+                         }+                       (DHead+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 8 152 10+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 8 152 10+                               , srcInfoPoints = []+                               }+                             "Ht"))+                       (UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 11 152 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 11 152 12+                               , srcInfoPoints = []+                               }+                             "a")))+                    (UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 13 152 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 13 152 14+                            , srcInfoPoints = []+                            }+                          "b")))+                 (Just+                    (TyVarSig+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 15 152 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 15 152 16 ]+                         }+                       (UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 17 152 18+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 17 152 18+                               , srcInfoPoints = []+                               }+                             "r"))))+                 (Just+                    (InjectivityInfo+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 19 152 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 19 152 20+                             , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 23 152 25+                             ]+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 21 152 22+                            , srcInfoPoints = []+                            }+                          "r")+                       [ Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 26 152 27+                             , srcInfoPoints = []+                             }+                           "b"+                       , Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 28 152 29+                             , srcInfoPoints = []+                             }+                           "a"+                       ]))+             ])+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 1 156 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 1 156 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 6 156 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 13 156 19+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 13 156 17+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 13 156 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 13 156 15+                        , srcInfoPoints = []+                        }+                      "Jx"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 16 156 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 16 156 17+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 18 156 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 18 156 19+                     , srcInfoPoints = []+                     }+                   "b")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 20 156 23+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 20 156 21 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 22 156 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 22 156 23+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 24 156 32+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 24 156 25+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 28 156 30+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 26 156 27+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 31 156 32+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 33 156 34+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 1 157 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 1 157 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 6 157 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 36 157 41+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 13 157 20+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 13 157 18+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 13 157 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 13 157 16+                        , srcInfoPoints = []+                        }+                      "Jcx"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 17 157 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 17 157 18+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 19 157 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 19 157 20+                     , srcInfoPoints = []+                     }+                   "b")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 21 157 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 21 157 22 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 23 157 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 23 157 24+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 25 157 33+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 25 157 26+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 29 157 31+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 27 157 28+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 32 157 33+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 34 157 35+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 16+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 11 158 12 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 10+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 8+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 6+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 6+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 6+                               , srcInfoPoints = []+                               }+                             "Jcx")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 7 158 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 7 158 8+                            , srcInfoPoints = []+                            }+                          "a")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 9 158 10+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 9 158 10+                         , srcInfoPoints = []+                         }+                       "b")))+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 13 158 16+                   , srcInfoPoints = []+                   }+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 13 158 14+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 13 158 14+                         , srcInfoPoints = []+                         }+                       "a"))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 15 158 16+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 15 158 16+                         , srcInfoPoints = []+                         }+                       "b")))+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 1 160 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 1 159 6+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 15 159 20+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 3 160 3+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 1 162 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 7 159 14+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 7 159 12+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 7 159 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 7 159 10+                        , srcInfoPoints = []+                        }+                      "Jcl"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 11 159 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 11 159 12+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 13 159 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 13 159 14+                     , srcInfoPoints = []+                     }+                   "b")))+          []+          (Just+             [ ClsTyFam+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 3 160 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 3 160 7 ]+                   }+                 (DHApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 8 160 14+                      , srcInfoPoints = []+                      }+                    (DHApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 8 160 12+                         , srcInfoPoints = []+                         }+                       (DHead+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 8 160 10+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 8 160 10+                               , srcInfoPoints = []+                               }+                             "Jt"))+                       (UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 11 160 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 11 160 12+                               , srcInfoPoints = []+                               }+                             "a")))+                    (UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 13 160 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 13 160 14+                            , srcInfoPoints = []+                            }+                          "b")))+                 (Just+                    (TyVarSig+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 15 160 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 15 160 16 ]+                         }+                       (UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 17 160 18+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 17 160 18+                               , srcInfoPoints = []+                               }+                             "r"))))+                 (Just+                    (InjectivityInfo+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 19 160 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 19 160 20+                             , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 23 160 25+                             ]+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 21 160 22+                            , srcInfoPoints = []+                            }+                          "r")+                       [ Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 26 160 27+                             , srcInfoPoints = []+                             }+                           "a"+                       , Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 28 160 29+                             , srcInfoPoints = []+                             }+                           "a"+                       ]))+             ])+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 1 162 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 1 162 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 6 162 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 13 162 19+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 13 162 17+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 13 162 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 13 162 15+                        , srcInfoPoints = []+                        }+                      "Kx"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 16 162 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 16 162 17+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 18 162 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 18 162 19+                     , srcInfoPoints = []+                     }+                   "b")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 20 162 23+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 20 162 21 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 22 162 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 22 162 23+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 24 162 32+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 24 162 25+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 28 162 30+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 26 162 27+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 31 162 32+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 33 162 34+                      , srcInfoPoints = []+                      }+                    "b"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 35 162 36+                      , srcInfoPoints = []+                      }+                    "b"+                ]))+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 1 163 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 1 163 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 6 163 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 38 163 43+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 13 163 20+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 13 163 18+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 13 163 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 13 163 16+                        , srcInfoPoints = []+                        }+                      "Kcx"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 17 163 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 17 163 18+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 19 163 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 19 163 20+                     , srcInfoPoints = []+                     }+                   "b")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 21 163 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 21 163 22 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 23 163 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 23 163 24+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 25 163 33+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 25 163 26+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 29 163 31+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 27 163 28+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 32 163 33+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 34 163 35+                      , srcInfoPoints = []+                      }+                    "b"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 36 163 37+                      , srcInfoPoints = []+                      }+                    "b"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 16+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 11 164 12 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 10+                   , srcInfoPoints = []+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 8+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 6+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 6+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 6+                               , srcInfoPoints = []+                               }+                             "Kcx")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 7 164 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 7 164 8+                            , srcInfoPoints = []+                            }+                          "a")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 9 164 10+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 9 164 10+                         , srcInfoPoints = []+                         }+                       "b")))+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 13 164 16+                   , srcInfoPoints = []+                   }+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 13 164 14+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 13 164 14+                         , srcInfoPoints = []+                         }+                       "a"))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 15 164 16+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 15 164 16+                         , srcInfoPoints = []+                         }+                       "b")))+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 1 166 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 1 165 6+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 15 165 20+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 3 166 3+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 1 170 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 7 165 14+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 7 165 12+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 7 165 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 7 165 10+                        , srcInfoPoints = []+                        }+                      "Kcl"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 11 165 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 11 165 12+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 13 165 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 13 165 14+                     , srcInfoPoints = []+                     }+                   "b")))+          []+          (Just+             [ ClsTyFam+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 3 166 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 3 166 7 ]+                   }+                 (DHApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 8 166 14+                      , srcInfoPoints = []+                      }+                    (DHApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 8 166 12+                         , srcInfoPoints = []+                         }+                       (DHead+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 8 166 10+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 8 166 10+                               , srcInfoPoints = []+                               }+                             "Kt"))+                       (UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 11 166 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 11 166 12+                               , srcInfoPoints = []+                               }+                             "a")))+                    (UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 13 166 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 13 166 14+                            , srcInfoPoints = []+                            }+                          "b")))+                 (Just+                    (TyVarSig+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 15 166 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 15 166 16 ]+                         }+                       (UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 17 166 18+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 17 166 18+                               , srcInfoPoints = []+                               }+                             "r"))))+                 (Just+                    (InjectivityInfo+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 19 166 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 19 166 20+                             , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 23 166 25+                             ]+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 21 166 22+                            , srcInfoPoints = []+                            }+                          "r")+                       [ Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 26 166 27+                             , srcInfoPoints = []+                             }+                           "a"+                       , Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 28 166 29+                             , srcInfoPoints = []+                             }+                           "b"+                       , Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 30 166 31+                             , srcInfoPoints = []+                             }+                           "b"+                       ]))+             ])+      , ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 1 170 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 1 170 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 6 170 12+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 47 170 52+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 13 170 24+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 13 170 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 13 170 14+                     , srcInfoPoints = []+                     }+                   "L"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 15 170 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 15 170 16+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 18 170 20+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 23 170 24+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 16 170 17+                     , srcInfoPoints = []+                     }+                   "a")+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 21 170 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 21 170 23+                        , srcInfoPoints = []+                        }+                      "k1"))))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 25 170 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 25 170 26 ]+                  }+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 27 170 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 27 170 28+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 30 170 32+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 35 170 36+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 28 170 29+                        , srcInfoPoints = []+                        }+                      "r")+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 33 170 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 33 170 35+                           , srcInfoPoints = []+                           }+                         "k2")))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 37 170 46+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 37 170 38+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 41 170 43+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 39 170 40+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 44 170 46+                      , srcInfoPoints = []+                      }+                    "k1"+                ]))+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 19+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 14 171 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 12+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 6+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 6+                            , srcInfoPoints = []+                            }+                          "L")))+                 (TyPromoted+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 7 171 12+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 7 171 8 ]+                      }+                    (PromotedCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 7 171 12+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 7 171 8 ]+                         }+                       True+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 8 171 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 8 171 12+                               , srcInfoPoints = []+                               }+                             "True")))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 16 171 19+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 16 171 19+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 16 171 19+                         , srcInfoPoints = []+                         }+                       "Int")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 19+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 14 172 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 13+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 6+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 6+                            , srcInfoPoints = []+                            }+                          "L")))+                 (TyPromoted+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 7 172 13+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 7 172 8 ]+                      }+                    (PromotedCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 7 172 13+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 7 172 8 ]+                         }+                       True+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 8 172 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 8 172 13+                               , srcInfoPoints = []+                               }+                             "False")))))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 16 172 19+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 16 172 19+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 16 172 19+                         , srcInfoPoints = []+                         }+                       "Int")))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 14 173 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 12+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 6+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 6+                            , srcInfoPoints = []+                            }+                          "L")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 7 173 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 7 173 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 7 173 12+                            , srcInfoPoints = []+                            }+                          "Maybe"))))+              (TyPromoted+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 16 173 17+                   , srcInfoPoints = []+                   }+                 (PromotedInteger+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 16 173 17+                      , srcInfoPoints = []+                      }+                    3+                    "3"))+          , TypeEqn+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 14 174 15 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 9+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 6+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 6+                            , srcInfoPoints = []+                            }+                          "L")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 7 174 9+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 7 174 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 7 174 9+                            , srcInfoPoints = []+                            }+                          "IO"))))+              (TyPromoted+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 16 174 17+                   , srcInfoPoints = []+                   }+                 (PromotedInteger+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 16 174 17+                      , srcInfoPoints = []+                      }+                    3+                    "3"))+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 1 176 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 22 176 23 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 1 176 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 6 176 21+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 6 176 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 6 176 12+                     , srcInfoPoints = []+                     }+                   "KProxy"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 13 176 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 13 176 14+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 16 176 18+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 20 176 21+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 14 176 15+                     , srcInfoPoints = []+                     }+                   "a")+                (TyStar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 19 176 20+                     , srcInfoPoints = []+                     })))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 24 176 30+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 24 176 30+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 24 176 30+                      , srcInfoPoints = []+                      }+                    "KProxy")+                 [])+          ]+          []+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 1 177 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 1 177 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 6 177 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 13 177 36+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 13 177 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 13 177 15+                     , srcInfoPoints = []+                     }+                   "KP"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 16 177 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 16 177 17+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 24 177 26+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 35 177 36+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 17 177 23+                     , srcInfoPoints = []+                     }+                   "kproxy")+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 35+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 33+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 33+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 33+                              , srcInfoPoints = []+                              }+                            "KProxy")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 34 177 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 34 177 35+                           , srcInfoPoints = []+                           }+                         "k")))))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 37 177 40+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 37 177 38 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 39 177 40+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 39 177 40+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 41 177 49+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 41 177 42+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 45 177 47+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 43 177 44+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 48 177 49+                      , srcInfoPoints = []+                      }+                    "k"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 1 178 48+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 1 178 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 6 178 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 43 178 44+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 15 178 42+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 15 178 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 15 178 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 15 178 17+                        , srcInfoPoints = []+                        }+                      "KP")))+             (TyKind+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 18 178 42+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 18 178 19+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 27 178 29+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 41 178 42+                      ]+                  }+                (TyPromoted+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 19 178 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 19 178 20 ]+                     }+                   (PromotedCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 19 178 26+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 19 178 20 ]+                        }+                      True+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 20 178 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 20 178 26+                              , srcInfoPoints = []+                              }+                            "KProxy"))))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 41+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 36+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 36+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 36+                              , srcInfoPoints = []+                              }+                            "KProxy")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 37 178 41+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 37 178 41+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 37 178 41+                              , srcInfoPoints = []+                              }+                            "Bool"))))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 45 178 48+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 45 178 48+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 45 178 48+                     , srcInfoPoints = []+                     }+                   "Int")))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 1 179 49+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 1 179 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 6 179 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 43 179 44+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 15 179 39+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 15 179 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 15 179 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 15 179 17+                        , srcInfoPoints = []+                        }+                      "KP")))+             (TyKind+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 18 179 39+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 18 179 19+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 27 179 29+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 38 179 39+                      ]+                  }+                (TyPromoted+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 19 179 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 19 179 20 ]+                     }+                   (PromotedCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 19 179 26+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 19 179 20 ]+                        }+                      True+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 20 179 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 20 179 26+                              , srcInfoPoints = []+                              }+                            "KProxy"))))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 38+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 36+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 36+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 36+                              , srcInfoPoints = []+                              }+                            "KProxy")))+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 37 179 38+                        , srcInfoPoints = []+                        }))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 45 179 49+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 45 179 49+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 45 179 49+                     , srcInfoPoints = []+                     }+                   "Char")))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 1 181 66+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 11 181 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 1 181 10+                , srcInfoPoints = []+                }+              "kproxy_id"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 66+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 39 181 41 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 38+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 16+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 16+                           , srcInfoPoints = []+                           }+                         "KP")))+                (TyKind+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 17 181 38+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 17 181 18+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 26 181 28+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 37 181 38+                         ]+                     }+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 18 181 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 18 181 19 ]+                        }+                      (PromotedCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 18 181 25+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 18 181 19 ]+                           }+                         True+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 19 181 25+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 19 181 25+                                 , srcInfoPoints = []+                                 }+                               "KProxy"))))+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 37+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 35+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 35+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 35+                                 , srcInfoPoints = []+                                 }+                               "KProxy")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 36 181 37+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 36 181 37+                              , srcInfoPoints = []+                              }+                            "k")))))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 42 181 66+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 42 181 44+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 42 181 44+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 42 181 44+                           , srcInfoPoints = []+                           }+                         "KP")))+                (TyKind+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 45 181 66+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 45 181 46+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 54 181 56+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 65 181 66+                         ]+                     }+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 46 181 53+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 46 181 47 ]+                        }+                      (PromotedCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 46 181 53+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 46 181 47 ]+                           }+                         True+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 47 181 53+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 47 181 53+                                 , srcInfoPoints = []+                                 }+                               "KProxy"))))+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 65+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 63+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 63+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 63+                                 , srcInfoPoints = []+                                 }+                               "KProxy")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 64 181 65+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 64 181 65+                              , srcInfoPoints = []+                              }+                            "k"))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 1 182 16+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 1 182 16+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 1 182 10+                   , srcInfoPoints = []+                   }+                 "kproxy_id")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 11 182 12+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 11 182 12+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 13 182 16+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 13 182 14 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 15 182 16+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 15 182 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 15 182 16+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 1 184 30+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 1 184 14+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 1 184 14+                  , srcInfoPoints = []+                  }+                "kproxy_id_use"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 15 184 30+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 15 184 16 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 17 184 30+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 17 184 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 17 184 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 17 184 26+                           , srcInfoPoints = []+                           }+                         "kproxy_id")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 27 184 30+                     , srcInfoPoints = []+                     }+                   (Char+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 27 184 30+                        , srcInfoPoints = []+                        }+                      'a'+                      "a"))))+          Nothing+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 1 188 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 1 188 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 6 188 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 13 188 17+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 13 188 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 13 188 15+                     , srcInfoPoints = []+                     }+                   "Gx"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 16 188 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 16 188 17+                     , srcInfoPoints = []+                     }+                   "a")))+          Nothing+          Nothing+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 1 189 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 1 189 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 6 189 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 13 189 17+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 13 189 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 13 189 15+                     , srcInfoPoints = []+                     }+                   "Hx"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 16 189 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 16 189 17+                     , srcInfoPoints = []+                     }+                   "a")))+          Nothing+          Nothing+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 1 190 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 1 190 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 6 190 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 13 190 17+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 13 190 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 13 190 15+                     , srcInfoPoints = []+                     }+                   "Gi"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 16 190 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 16 190 17+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 18 190 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 18 190 19 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 20 190 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 20 190 21+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 22 190 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 22 190 23+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 26 190 28+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 24 190 25+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 29 190 30+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 1 191 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 1 191 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 6 191 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 22 191 23+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 15 191 21+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 15 191 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 15 191 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 15 191 17+                        , srcInfoPoints = []+                        }+                      "Gi")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 18 191 21+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 18 191 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 18 191 21+                        , srcInfoPoints = []+                        }+                      "Int"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 24 191 28+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 24 191 28+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 24 191 28+                     , srcInfoPoints = []+                     }+                   "Char")))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 1 192 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 1 192 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 6 192 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 13 192 17+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 13 192 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 13 192 15+                     , srcInfoPoints = []+                     }+                   "Hi"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 16 192 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 16 192 17+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 18 192 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 18 192 19 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 20 192 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 20 192 21+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 22 192 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 22 192 23+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 26 192 28+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 24 192 25+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 29 192 30+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 1 194 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 1 194 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 6 194 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 13 194 17+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 13 194 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 13 194 15+                     , srcInfoPoints = []+                     }+                   "F2"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 16 194 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 16 194 17+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 18 194 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 18 194 19 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 20 194 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 20 194 21+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 22 194 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 22 194 23+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 26 194 28+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 24 194 25+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 29 194 30+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 1 195 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 1 195 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 6 195 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 28 195 29+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 15 195 21+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 15 195 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 15 195 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 15 195 17+                        , srcInfoPoints = []+                        }+                      "F2")))+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 18 195 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 18 195 19+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 20 195 21+                      ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 19 195 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 19 195 20+                        , srcInfoPoints = []+                        }+                      "a"))))+          (TyList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 30 195 36+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 30 195 31+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 35 195 36+                   ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 31 195 35+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 31 195 33+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 31 195 33+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 31 195 33+                           , srcInfoPoints = []+                           }+                         "Gi")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 34 195 35+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 34 195 35+                        , srcInfoPoints = []+                        }+                      "a"))))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 1 196 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 1 196 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 6 196 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 28 196 29+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 15 196 27+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 15 196 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 15 196 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 15 196 17+                        , srcInfoPoints = []+                        }+                      "F2")))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 18 196 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 18 196 19+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 26 196 27+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 19 196 26+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 19 196 24+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 19 196 24+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 19 196 24+                              , srcInfoPoints = []+                              }+                            "Maybe")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 25 196 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 25 196 26+                           , srcInfoPoints = []+                           }+                         "a")))))+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 41+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 35 196 37 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 34+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 32+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 32+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 32+                           , srcInfoPoints = []+                           }+                         "Hi")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 33 196 34+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 33 196 34+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 38 196 41+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 38 196 41+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 38 196 41+                        , srcInfoPoints = []+                        }+                      "Int"))))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 1 198 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 1 198 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 6 198 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 13 198 17+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 13 198 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 13 198 15+                     , srcInfoPoints = []+                     }+                   "F4"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 16 198 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 16 198 17+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 18 198 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 18 198 19 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 20 198 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 20 198 21+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 22 198 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 22 198 23+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 26 198 28+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 24 198 25+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 29 198 30+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 1 199 50+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 1 199 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 6 199 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 28 199 29+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 15 199 21+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 15 199 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 15 199 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 15 199 17+                        , srcInfoPoints = []+                        }+                      "F4")))+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 18 199 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 18 199 19+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 20 199 21+                      ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 19 199 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 19 199 20+                        , srcInfoPoints = []+                        }+                      "a"))))+          (TyTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 30 199 50+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 30 199 31+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 35 199 36+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 38 199 39+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 43 199 44+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 49 199 50+                   ]+               }+             Boxed+             [ TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 31 199 35+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 31 199 33+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 31 199 33+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 31 199 33+                            , srcInfoPoints = []+                            }+                          "Gx")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 34 199 35+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 34 199 35+                         , srcInfoPoints = []+                         }+                       "a"))+             , TyVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 37 199 38+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 37 199 38+                      , srcInfoPoints = []+                      }+                    "a")+             , TyVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 42 199 43+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 42 199 43+                      , srcInfoPoints = []+                      }+                    "a")+             , TyVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 48 199 49+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 48 199 49+                      , srcInfoPoints = []+                      }+                    "a")+             ])+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 1 200 50+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 1 200 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 6 200 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 28 200 29+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 15 200 27+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 15 200 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 15 200 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 15 200 17+                        , srcInfoPoints = []+                        }+                      "F4")))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 18 200 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 18 200 19+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 26 200 27+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 19 200 26+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 19 200 24+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 19 200 24+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 19 200 24+                              , srcInfoPoints = []+                              }+                            "Maybe")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 25 200 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 25 200 26+                           , srcInfoPoints = []+                           }+                         "a")))))+          (TyTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 30 200 50+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 30 200 31+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 35 200 36+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 38 200 39+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 43 200 44+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 49 200 50+                   ]+               }+             Boxed+             [ TyApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 31 200 35+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 31 200 33+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 31 200 33+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 31 200 33+                            , srcInfoPoints = []+                            }+                          "Hx")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 34 200 35+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 34 200 35+                         , srcInfoPoints = []+                         }+                       "a"))+             , TyVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 37 200 38+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 37 200 38+                      , srcInfoPoints = []+                      }+                    "a")+             , TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 40 200 43+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 40 200 43+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 40 200 43+                         , srcInfoPoints = []+                         }+                       "Int"))+             , TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 45 200 49+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 45 200 49+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 45 200 49+                         , srcInfoPoints = []+                         }+                       "Bool"))+             ])+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 1 202 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 1 202 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 6 202 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 13 202 19+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 13 202 17+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 13 202 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 13 202 15+                        , srcInfoPoints = []+                        }+                      "G2"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 16 202 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 16 202 17+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 18 202 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 18 202 19+                     , srcInfoPoints = []+                     }+                   "b")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 20 202 23+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 20 202 21 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 22 202 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 22 202 23+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 24 202 32+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 24 202 25+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 28 202 30+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 26 202 27+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 31 202 32+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 33 202 34+                      , srcInfoPoints = []+                      }+                    "b"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 1 203 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 1 203 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 6 203 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 28 203 29+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 27+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 19+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 17+                           , srcInfoPoints = []+                           }+                         "G2")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 18 203 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 18 203 19+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 23 203 27+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 23 203 27+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 23 203 27+                        , srcInfoPoints = []+                        }+                      "Bool"))))+          (TyTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 30 203 36+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 30 203 31+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 32 203 33+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 35 203 36+                   ]+               }+             Boxed+             [ TyVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 31 203 32+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 31 203 32+                      , srcInfoPoints = []+                      }+                    "a")+             , TyVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 34 203 35+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 34 203 35+                      , srcInfoPoints = []+                      }+                    "a")+             ])+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 1 204 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 1 204 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 6 204 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 28 204 29+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 24+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 22+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 17+                           , srcInfoPoints = []+                           }+                         "G2")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 18 204 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 18 204 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 18 204 22+                           , srcInfoPoints = []+                           }+                         "Bool"))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 23 204 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 23 204 24+                     , srcInfoPoints = []+                     }+                   "b")))+          (TyTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 30 204 39+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 30 204 31+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 32 204 33+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 38 204 39+                   ]+               }+             Boxed+             [ TyVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 31 204 32+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 31 204 32+                      , srcInfoPoints = []+                      }+                    "b")+             , TyCon+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 34 204 38+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 34 204 38+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 34 204 38+                         , srcInfoPoints = []+                         }+                       "Bool"))+             ])+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 1 206 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 1 206 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 6 206 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 13 206 17+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 13 206 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 13 206 15+                     , srcInfoPoints = []+                     }+                   "G6"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 16 206 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 16 206 17+                     , srcInfoPoints = []+                     }+                   "a")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 18 206 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 18 206 19 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 20 206 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 20 206 21+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 22 206 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 22 206 23+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 26 206 28+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 24 206 25+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 29 206 30+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 1 207 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 1 207 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 6 207 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 23 207 24+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 15 207 21+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 15 207 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 15 207 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 15 207 17+                        , srcInfoPoints = []+                        }+                      "G6")))+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 18 207 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 18 207 19+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 20 207 21+                      ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 19 207 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 19 207 20+                        , srcInfoPoints = []+                        }+                      "a"))))+          (TyList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 25 207 31+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 25 207 26+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 30 207 31+                   ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 26 207 30+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 26 207 28+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 26 207 28+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 26 207 28+                           , srcInfoPoints = []+                           }+                         "Gi")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 29 207 30+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 29 207 30+                        , srcInfoPoints = []+                        }+                      "a"))))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 1 208 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 1 208 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 6 208 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 23 208 24+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 15 208 22+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 15 208 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 15 208 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 15 208 17+                        , srcInfoPoints = []+                        }+                      "G6")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 18 208 22+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 18 208 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 18 208 22+                        , srcInfoPoints = []+                        }+                      "Bool"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 25 208 28+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 25 208 28+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 25 208 28+                     , srcInfoPoints = []+                     }+                   "Int")))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 1 210 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 7 210 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 1 210 6+                , srcInfoPoints = []+                }+              "g6_id"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 15 210 17 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 14+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 12+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 12+                           , srcInfoPoints = []+                           }+                         "G6")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 13 210 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 13 210 14+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 18 210 22+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 18 210 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 18 210 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 18 210 20+                           , srcInfoPoints = []+                           }+                         "G6")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 21 210 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 21 210 22+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 1 211 12+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 1 211 12+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 1 211 6+                   , srcInfoPoints = []+                   }+                 "g6_id")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 7 211 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 7 211 8+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 9 211 12+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 9 211 10 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 11 211 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 11 211 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 11 211 12+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 1 213 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 8 213 10 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 1 213 7+                , srcInfoPoints = []+                }+              "g6_use"+          ]+          (TyList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 11 213 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 11 213 12+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 16 213 17+                   ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 12 213 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 12 213 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 12 213 16+                        , srcInfoPoints = []+                        }+                      "Char"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 1 214 21+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 1 214 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 1 214 7+                  , srcInfoPoints = []+                  }+                "g6_use"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 8 214 21+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 8 214 9 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 10 214 21+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 10 214 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 10 214 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 10 214 15+                           , srcInfoPoints = []+                           }+                         "g6_id")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 16 214 21+                     , srcInfoPoints = []+                     }+                   (String+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 16 214 21+                        , srcInfoPoints = []+                        }+                      "foo"+                      "foo"))))+          Nothing+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 1 217 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 1 217 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 6 217 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 13 217 24+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 13 217 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 13 217 15+                     , srcInfoPoints = []+                     }+                   "Id"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 16 217 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 16 217 17+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 19 217 21+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 23 217 24+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 17 217 18+                     , srcInfoPoints = []+                     }+                   "a")+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 22 217 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 22 217 23+                        , srcInfoPoints = []+                        }+                      "k"))))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 25 217 40+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 25 217 26 ]+                  }+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 27 217 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 27 217 28+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 35 217 37+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 39 217 40+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 28 217 34+                        , srcInfoPoints = []+                        }+                      "result")+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 38 217 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 38 217 39+                           , srcInfoPoints = []+                           }+                         "k")))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 41 217 54+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 41 217 42+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 50 217 52+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 43 217 49+                     , srcInfoPoints = []+                     }+                   "result")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 53 217 54+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 1 218 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 1 218 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 6 218 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 20 218 21+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 15 218 19+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 15 218 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 15 218 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 15 218 17+                        , srcInfoPoints = []+                        }+                      "Id")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 18 218 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 18 218 19+                     , srcInfoPoints = []+                     }+                   "a")))+          (TyVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 22 218 23+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 22 218 23+                  , srcInfoPoints = []+                  }+                "a"))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 1 222 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 1 222 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 6 222 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 13 222 31+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 13 222 29+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 13 222 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 13 222 20+                        , srcInfoPoints = []+                        }+                      "IdProxy"))+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 21 222 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 21 222 22+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 24 222 26+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 28 222 29+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 22 222 23+                        , srcInfoPoints = []+                        }+                      "a")+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 27 222 28+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 27 222 28+                           , srcInfoPoints = []+                           }+                         "k"))))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 30 222 31+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 30 222 31+                     , srcInfoPoints = []+                     }+                   "b")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 32 222 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 32 222 33 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 34 222 35+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 34 222 35+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 36 222 44+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 36 222 37+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 40 222 42+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 38 222 39+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 43 222 44+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 1 223 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 1 223 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 6 223 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 27 223 28+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 26+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 24+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 22+                           , srcInfoPoints = []+                           }+                         "IdProxy")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 23 223 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 23 223 24+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 25 223 26+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 25 223 26+                     , srcInfoPoints = []+                     }+                   "b")))+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 29 223 37+               , srcInfoPoints = []+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 29 223 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 29 223 30+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 34 223 35+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 30 223 34+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 30 223 32+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 30 223 32+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 30 223 32+                              , srcInfoPoints = []+                              }+                            "Id")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 33 223 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 33 223 34+                           , srcInfoPoints = []+                           }+                         "a"))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 36 223 37+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 36 223 37+                     , srcInfoPoints = []+                     }+                   "b")))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 1 226 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 1 226 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 14 226 15+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 6 226 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 6 226 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 6 226 11+                     , srcInfoPoints = []+                     }+                   "IdSyn"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 12 226 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 12 226 13+                     , srcInfoPoints = []+                     }+                   "a")))+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 16 226 20+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 16 226 18+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 16 226 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 16 226 18+                        , srcInfoPoints = []+                        }+                      "Id")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 19 226 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 19 226 20+                     , srcInfoPoints = []+                     }+                   "a")))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 1 227 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 1 227 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 6 227 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 13 227 34+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 13 227 32+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 13 227 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 13 227 23+                        , srcInfoPoints = []+                        }+                      "IdProxySyn"))+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 24 227 32+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 24 227 25+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 27 227 29+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 31 227 32+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 25 227 26+                        , srcInfoPoints = []+                        }+                      "a")+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 30 227 31+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 30 227 31+                           , srcInfoPoints = []+                           }+                         "k"))))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 33 227 34+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 33 227 34+                     , srcInfoPoints = []+                     }+                   "b")))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 35 227 38+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 35 227 36 ]+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 37 227 38+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 37 227 38+                        , srcInfoPoints = []+                        }+                      "r"))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 39 227 47+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 39 227 40+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 43 227 45+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 41 227 42+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 46 227 47+                      , srcInfoPoints = []+                      }+                    "a"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 1 228 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 1 228 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 6 228 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 30 228 31+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 29+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 27+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 25+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 25+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 25+                           , srcInfoPoints = []+                           }+                         "IdProxySyn")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 26 228 27+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 26 228 27+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 28 228 29+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 28 228 29+                     , srcInfoPoints = []+                     }+                   "b")))+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 32 228 43+               , srcInfoPoints = []+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 32 228 41+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 32 228 33+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 40 228 41+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 33 228 40+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 33 228 38+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 33 228 38+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 33 228 38+                              , srcInfoPoints = []+                              }+                            "IdSyn")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 39 228 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 39 228 40+                           , srcInfoPoints = []+                           }+                         "a"))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 42 228 43+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 42 228 43+                     , srcInfoPoints = []+                     }+                   "b")))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 1 232 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 1 232 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 6 232 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 13 232 33+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 13 232 24+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 13 232 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 13 232 15+                        , srcInfoPoints = []+                        }+                      "Fa"))+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 16 232 24+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 16 232 17+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 19 232 21+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 23 232 24+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 17 232 18+                        , srcInfoPoints = []+                        }+                      "a")+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 22 232 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 22 232 23+                           , srcInfoPoints = []+                           }+                         "k"))))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 25 232 33+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 25 232 26+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 28 232 30+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 32 232 33+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 26 232 27+                     , srcInfoPoints = []+                     }+                   "b")+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 31 232 32+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 31 232 32+                        , srcInfoPoints = []+                        }+                      "k"))))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 34 232 45+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 34 232 35 ]+                  }+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 36 232 45+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 36 232 37+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 39 232 41+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 44 232 45+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 37 232 38+                        , srcInfoPoints = []+                        }+                      "r")+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 42 232 44+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 42 232 44+                           , srcInfoPoints = []+                           }+                         "k2")))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 46 232 54+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 46 232 47+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 50 232 52+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 48 232 49+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 53 232 54+                      , srcInfoPoints = []+                      }+                    "k"+                ]))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 1 233 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 1 233 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 6 233 14+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 22 233 23+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 21+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 19+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 17+                           , srcInfoPoints = []+                           }+                         "Fa")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 18 233 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 18 233 19+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 20 233 21+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 20 233 21+                     , srcInfoPoints = []+                     }+                   "b")))+          (TyVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 24 233 25+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 24 233 25+                  , srcInfoPoints = []+                  }+                "a"))+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 1 236 51+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 1 236 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 6 236 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 51+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 42+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 33+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 16+                           , srcInfoPoints = []+                           }+                         "Arr"))+                   (KindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 17 236 33+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 17 236 18+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 23 236 25+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 32 236 33+                            ]+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 18 236 22+                           , srcInfoPoints = []+                           }+                         "repr")+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 26 236 32+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 28 236 30 ]+                           }+                         (TyStar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 26 236 27+                              , srcInfoPoints = []+                              })+                         (TyStar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 31 236 32+                              , srcInfoPoints = []+                              }))))+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 34 236 42+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 34 236 35+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 37 236 39+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 41 236 42+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 35 236 36+                        , srcInfoPoints = []+                        }+                      "a")+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 40 236 41+                        , srcInfoPoints = []+                        })))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 43 236 51+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 43 236 44+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 46 236 48+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 50 236 51+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 44 236 45+                     , srcInfoPoints = []+                     }+                   "b")+                (TyStar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 49 236 50+                     , srcInfoPoints = []+                     })))+          (Just+             (TyVarSig+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 52 236 62+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 52 236 53 ]+                  }+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 54 236 62+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 54 236 55+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 57 236 59+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 61 236 62+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 55 236 56+                        , srcInfoPoints = []+                        }+                      "r")+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 60 236 61+                        , srcInfoPoints = []+                        }))))+          (Just+             (InjectivityInfo+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 63 236 74+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 63 236 64+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 67 236 69+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 65 236 66+                     , srcInfoPoints = []+                     }+                   "r")+                [ Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 70 236 74+                      , srcInfoPoints = []+                      }+                    "repr"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 75 236 76+                      , srcInfoPoints = []+                      }+                    "a"+                , Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 77 236 78+                      , srcInfoPoints = []+                      }+                    "b"+                ]))+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 1 243 51+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 1 238 6+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 23 238 28+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 5 239 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 5 240 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 5 242 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 5 243 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 245 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 7 238 22+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 7 238 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 7 238 17+                     , srcInfoPoints = []+                     }+                   "ESymantics"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 18 238 22+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 18 238 22+                     , srcInfoPoints = []+                     }+                   "repr")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 5 239 28+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 9 239 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 5 239 28+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 9 239 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 5 239 8+                          , srcInfoPoints = []+                          }+                        "int"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 12 239 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 17 239 19 ]+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 12 239 15+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 12 239 15+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 239 12 239 15+                                  , srcInfoPoints = []+                                  }+                                "Int")))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 20 239 28+                            , srcInfoPoints = []+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 20 239 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 239 20 239 24+                                  , srcInfoPoints = []+                                  }+                                "repr"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 25 239 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 239 25 239 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 239 25 239 28+                                     , srcInfoPoints = []+                                     }+                                   "Int"))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 5 240 45+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 9 240 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 5 240 45+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 9 240 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 5 240 8+                          , srcInfoPoints = []+                          }+                        "add"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 12 240 45+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 22 240 24 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 12 240 20+                            , srcInfoPoints = []+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 12 240 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 240 12 240 16+                                  , srcInfoPoints = []+                                  }+                                "repr"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 17 240 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 240 17 240 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 240 17 240 20+                                     , srcInfoPoints = []+                                     }+                                   "Int"))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 25 240 45+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 34 240 36 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 25 240 33+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 240 25 240 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 240 25 240 29+                                     , srcInfoPoints = []+                                     }+                                   "repr"))+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 240 30 240 33+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 240 30 240 33+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              240+                                              30+                                              240+                                              33+                                        , srcInfoPoints = []+                                        }+                                      "Int"))))+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 37 240 45+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 240 37 240 41+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 240 37 240 41+                                     , srcInfoPoints = []+                                     }+                                   "repr"))+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 240 42 240 45+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 240 42 240 45+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              240+                                              42+                                              240+                                              45+                                        , srcInfoPoints = []+                                        }+                                      "Int")))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 5 242 53+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 9 242 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 5 242 53+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 9 242 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 5 242 8+                          , srcInfoPoints = []+                          }+                        "lam"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 12 242 53+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 31 242 33 ]+                         }+                       (TyParen+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 12 242 30+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 12 242 13+                                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 29 242 30+                                ]+                            }+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 13 242 29+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 20 242 22+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 242 13 242 19+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 242 13 242 17+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              242+                                              13+                                              242+                                              17+                                        , srcInfoPoints = []+                                        }+                                      "repr"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 242 18 242 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              242+                                              18+                                              242+                                              19+                                        , srcInfoPoints = []+                                        }+                                      "a")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 242 23 242 29+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 242 23 242 27+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              242+                                              23+                                              242+                                              27+                                        , srcInfoPoints = []+                                        }+                                      "repr"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 242 28 242 29+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              242+                                              28+                                              242+                                              29+                                        , srcInfoPoints = []+                                        }+                                      "b")))))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 34 242 53+                            , srcInfoPoints = []+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 34 242 38+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 242 34 242 38+                                  , srcInfoPoints = []+                                  }+                                "repr"))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 39 242 53+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 39 242 40+                                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 52 242 53+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 242 40 242 52+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 242 40 242 50+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              242+                                              40+                                              242+                                              48+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/InjectiveTypeFamilies.hs"+                                                 242+                                                 40+                                                 242+                                                 43+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InjectiveTypeFamilies.hs"+                                                    242+                                                    40+                                                    242+                                                    43+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/InjectiveTypeFamilies.hs"+                                                       242+                                                       40+                                                       242+                                                       43+                                                 , srcInfoPoints = []+                                                 }+                                               "Arr")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/InjectiveTypeFamilies.hs"+                                                 242+                                                 44+                                                 242+                                                 48+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InjectiveTypeFamilies.hs"+                                                    242+                                                    44+                                                    242+                                                    48+                                              , srcInfoPoints = []+                                              }+                                            "repr")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              242+                                              49+                                              242+                                              50+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/InjectiveTypeFamilies.hs"+                                                 242+                                                 49+                                                 242+                                                 50+                                           , srcInfoPoints = []+                                           }+                                         "a")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 242 51 242 52+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              242+                                              51+                                              242+                                              52+                                        , srcInfoPoints = []+                                        }+                                      "b")))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 5 243 51+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 9 243 11 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 5 243 51+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 9 243 11 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 5 243 8+                          , srcInfoPoints = []+                          }+                        "app"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 12 243 51+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 32 243 34 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 12 243 31+                            , srcInfoPoints = []+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 12 243 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 243 12 243 16+                                  , srcInfoPoints = []+                                  }+                                "repr"))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 17 243 31+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 17 243 18+                                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 30 243 31+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 243 18 243 30+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 243 18 243 28+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              243+                                              18+                                              243+                                              26+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/InjectiveTypeFamilies.hs"+                                                 243+                                                 18+                                                 243+                                                 21+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InjectiveTypeFamilies.hs"+                                                    243+                                                    18+                                                    243+                                                    21+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/InjectiveTypeFamilies.hs"+                                                       243+                                                       18+                                                       243+                                                       21+                                                 , srcInfoPoints = []+                                                 }+                                               "Arr")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/InjectiveTypeFamilies.hs"+                                                 243+                                                 22+                                                 243+                                                 26+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InjectiveTypeFamilies.hs"+                                                    243+                                                    22+                                                    243+                                                    26+                                              , srcInfoPoints = []+                                              }+                                            "repr")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              243+                                              27+                                              243+                                              28+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/InjectiveTypeFamilies.hs"+                                                 243+                                                 27+                                                 243+                                                 28+                                           , srcInfoPoints = []+                                           }+                                         "a")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 243 29 243 30+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              243+                                              29+                                              243+                                              30+                                        , srcInfoPoints = []+                                        }+                                      "b")))))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 35 243 51+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 42 243 44 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 35 243 41+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 243 35 243 39+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 243 35 243 39+                                     , srcInfoPoints = []+                                     }+                                   "repr"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 243 40 243 41+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 243 40 243 41+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 45 243 51+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 243 45 243 49+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 243 45 243 49+                                     , srcInfoPoints = []+                                     }+                                   "repr"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 243 50 243 51+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 243 50 243 51+                                     , srcInfoPoints = []+                                     }+                                   "b"))))))+             ])+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 246 63+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 245 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 245 4+                  , srcInfoPoints = []+                  }+                "te4"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 5 246 63+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 5 245 6 ]+               }+             (Let+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 7 246 63+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 7 245 10+                      , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 7 246 9+                      ]+                  }+                (BDecls+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 69+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 11+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 7 246 0+                         ]+                     }+                   [ PatBind+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 69+                         , srcInfoPoints = []+                         }+                       (PVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 13+                               , srcInfoPoints = []+                               }+                             "c3"))+                       (UnGuardedRhs+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 14 245 69+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 14 245 15 ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 16 245 69+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 245 16 245 19+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 245 16 245 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              245+                                              16+                                              245+                                              19+                                        , srcInfoPoints = []+                                        }+                                      "lam")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 245 20 245 69+                                  , srcInfoPoints =+                                      [ SrcSpan+                                          "tests/examples/InjectiveTypeFamilies.hs" 245 20 245 21+                                      , SrcSpan+                                          "tests/examples/InjectiveTypeFamilies.hs" 245 68 245 69+                                      ]+                                  }+                                (Lambda+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 245 21 245 68+                                     , srcInfoPoints =+                                         [ SrcSpan+                                             "tests/examples/InjectiveTypeFamilies.hs" 245 21 245 22+                                         , SrcSpan+                                             "tests/examples/InjectiveTypeFamilies.hs" 245 24 245 26+                                         ]+                                     }+                                   [ PVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/InjectiveTypeFamilies.hs"+                                               245+                                               22+                                               245+                                               23+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/InjectiveTypeFamilies.hs"+                                                  245+                                                  22+                                                  245+                                                  23+                                            , srcInfoPoints = []+                                            }+                                          "f")+                                   ]+                                   (App+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/InjectiveTypeFamilies.hs"+                                              245+                                              27+                                              245+                                              68+                                        , srcInfoPoints = []+                                        }+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/InjectiveTypeFamilies.hs"+                                                 245+                                                 27+                                                 245+                                                 30+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InjectiveTypeFamilies.hs"+                                                    245+                                                    27+                                                    245+                                                    30+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/InjectiveTypeFamilies.hs"+                                                       245+                                                       27+                                                       245+                                                       30+                                                 , srcInfoPoints = []+                                                 }+                                               "lam")))+                                      (Paren+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/InjectiveTypeFamilies.hs"+                                                 245+                                                 31+                                                 245+                                                 68+                                           , srcInfoPoints =+                                               [ SrcSpan+                                                   "tests/examples/InjectiveTypeFamilies.hs"+                                                   245+                                                   31+                                                   245+                                                   32+                                               , SrcSpan+                                                   "tests/examples/InjectiveTypeFamilies.hs"+                                                   245+                                                   67+                                                   245+                                                   68+                                               ]+                                           }+                                         (Lambda+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InjectiveTypeFamilies.hs"+                                                    245+                                                    32+                                                    245+                                                    67+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                      245+                                                      32+                                                      245+                                                      33+                                                  , SrcSpan+                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                      245+                                                      35+                                                      245+                                                      37+                                                  ]+                                              }+                                            [ PVar+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/InjectiveTypeFamilies.hs"+                                                        245+                                                        33+                                                        245+                                                        34+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/InjectiveTypeFamilies.hs"+                                                           245+                                                           33+                                                           245+                                                           34+                                                     , srcInfoPoints = []+                                                     }+                                                   "x")+                                            ]+                                            (InfixApp+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/InjectiveTypeFamilies.hs"+                                                       245+                                                       38+                                                       245+                                                       67+                                                 , srcInfoPoints = []+                                                 }+                                               (Var+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/InjectiveTypeFamilies.hs"+                                                          245+                                                          38+                                                          245+                                                          39+                                                    , srcInfoPoints = []+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/InjectiveTypeFamilies.hs"+                                                             245+                                                             38+                                                             245+                                                             39+                                                       , srcInfoPoints = []+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/InjectiveTypeFamilies.hs"+                                                                245+                                                                38+                                                                245+                                                                39+                                                          , srcInfoPoints = []+                                                          }+                                                        "f")))+                                               (QVarOp+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/InjectiveTypeFamilies.hs"+                                                          245+                                                          40+                                                          245+                                                          45+                                                    , srcInfoPoints =+                                                        [ SrcSpan+                                                            "tests/examples/InjectiveTypeFamilies.hs"+                                                            245+                                                            40+                                                            245+                                                            41+                                                        , SrcSpan+                                                            "tests/examples/InjectiveTypeFamilies.hs"+                                                            245+                                                            41+                                                            245+                                                            44+                                                        , SrcSpan+                                                            "tests/examples/InjectiveTypeFamilies.hs"+                                                            245+                                                            44+                                                            245+                                                            45+                                                        ]+                                                    }+                                                  (UnQual+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/InjectiveTypeFamilies.hs"+                                                             245+                                                             40+                                                             245+                                                             45+                                                       , srcInfoPoints =+                                                           [ SrcSpan+                                                               "tests/examples/InjectiveTypeFamilies.hs"+                                                               245+                                                               40+                                                               245+                                                               41+                                                           , SrcSpan+                                                               "tests/examples/InjectiveTypeFamilies.hs"+                                                               245+                                                               41+                                                               245+                                                               44+                                                           , SrcSpan+                                                               "tests/examples/InjectiveTypeFamilies.hs"+                                                               245+                                                               44+                                                               245+                                                               45+                                                           ]+                                                       }+                                                     (Ident+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/InjectiveTypeFamilies.hs"+                                                                245+                                                                41+                                                                245+                                                                44+                                                          , srcInfoPoints = []+                                                          }+                                                        "app")))+                                               (Paren+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/InjectiveTypeFamilies.hs"+                                                          245+                                                          46+                                                          245+                                                          67+                                                    , srcInfoPoints =+                                                        [ SrcSpan+                                                            "tests/examples/InjectiveTypeFamilies.hs"+                                                            245+                                                            46+                                                            245+                                                            47+                                                        , SrcSpan+                                                            "tests/examples/InjectiveTypeFamilies.hs"+                                                            245+                                                            66+                                                            245+                                                            67+                                                        ]+                                                    }+                                                  (InfixApp+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/InjectiveTypeFamilies.hs"+                                                             245+                                                             47+                                                             245+                                                             66+                                                       , srcInfoPoints = []+                                                       }+                                                     (Var+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/InjectiveTypeFamilies.hs"+                                                                245+                                                                47+                                                                245+                                                                48+                                                          , srcInfoPoints = []+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/InjectiveTypeFamilies.hs"+                                                                   245+                                                                   47+                                                                   245+                                                                   48+                                                             , srcInfoPoints = []+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                                      245+                                                                      47+                                                                      245+                                                                      48+                                                                , srcInfoPoints = []+                                                                }+                                                              "f")))+                                                     (QVarOp+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/InjectiveTypeFamilies.hs"+                                                                245+                                                                49+                                                                245+                                                                54+                                                          , srcInfoPoints =+                                                              [ SrcSpan+                                                                  "tests/examples/InjectiveTypeFamilies.hs"+                                                                  245+                                                                  49+                                                                  245+                                                                  50+                                                              , SrcSpan+                                                                  "tests/examples/InjectiveTypeFamilies.hs"+                                                                  245+                                                                  50+                                                                  245+                                                                  53+                                                              , SrcSpan+                                                                  "tests/examples/InjectiveTypeFamilies.hs"+                                                                  245+                                                                  53+                                                                  245+                                                                  54+                                                              ]+                                                          }+                                                        (UnQual+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/InjectiveTypeFamilies.hs"+                                                                   245+                                                                   49+                                                                   245+                                                                   54+                                                             , srcInfoPoints =+                                                                 [ SrcSpan+                                                                     "tests/examples/InjectiveTypeFamilies.hs"+                                                                     245+                                                                     49+                                                                     245+                                                                     50+                                                                 , SrcSpan+                                                                     "tests/examples/InjectiveTypeFamilies.hs"+                                                                     245+                                                                     50+                                                                     245+                                                                     53+                                                                 , SrcSpan+                                                                     "tests/examples/InjectiveTypeFamilies.hs"+                                                                     245+                                                                     53+                                                                     245+                                                                     54+                                                                 ]+                                                             }+                                                           (Ident+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                                      245+                                                                      50+                                                                      245+                                                                      53+                                                                , srcInfoPoints = []+                                                                }+                                                              "app")))+                                                     (Paren+                                                        SrcSpanInfo+                                                          { srcInfoSpan =+                                                              SrcSpan+                                                                "tests/examples/InjectiveTypeFamilies.hs"+                                                                245+                                                                55+                                                                245+                                                                66+                                                          , srcInfoPoints =+                                                              [ SrcSpan+                                                                  "tests/examples/InjectiveTypeFamilies.hs"+                                                                  245+                                                                  55+                                                                  245+                                                                  56+                                                              , SrcSpan+                                                                  "tests/examples/InjectiveTypeFamilies.hs"+                                                                  245+                                                                  65+                                                                  245+                                                                  66+                                                              ]+                                                          }+                                                        (InfixApp+                                                           SrcSpanInfo+                                                             { srcInfoSpan =+                                                                 SrcSpan+                                                                   "tests/examples/InjectiveTypeFamilies.hs"+                                                                   245+                                                                   56+                                                                   245+                                                                   65+                                                             , srcInfoPoints = []+                                                             }+                                                           (Var+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                                      245+                                                                      56+                                                                      245+                                                                      57+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/InjectiveTypeFamilies.hs"+                                                                         245+                                                                         56+                                                                         245+                                                                         57+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/InjectiveTypeFamilies.hs"+                                                                            245+                                                                            56+                                                                            245+                                                                            57+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "f")))+                                                           (QVarOp+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                                      245+                                                                      58+                                                                      245+                                                                      63+                                                                , srcInfoPoints =+                                                                    [ SrcSpan+                                                                        "tests/examples/InjectiveTypeFamilies.hs"+                                                                        245+                                                                        58+                                                                        245+                                                                        59+                                                                    , SrcSpan+                                                                        "tests/examples/InjectiveTypeFamilies.hs"+                                                                        245+                                                                        59+                                                                        245+                                                                        62+                                                                    , SrcSpan+                                                                        "tests/examples/InjectiveTypeFamilies.hs"+                                                                        245+                                                                        62+                                                                        245+                                                                        63+                                                                    ]+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/InjectiveTypeFamilies.hs"+                                                                         245+                                                                         58+                                                                         245+                                                                         63+                                                                   , srcInfoPoints =+                                                                       [ SrcSpan+                                                                           "tests/examples/InjectiveTypeFamilies.hs"+                                                                           245+                                                                           58+                                                                           245+                                                                           59+                                                                       , SrcSpan+                                                                           "tests/examples/InjectiveTypeFamilies.hs"+                                                                           245+                                                                           59+                                                                           245+                                                                           62+                                                                       , SrcSpan+                                                                           "tests/examples/InjectiveTypeFamilies.hs"+                                                                           245+                                                                           62+                                                                           245+                                                                           63+                                                                       ]+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/InjectiveTypeFamilies.hs"+                                                                            245+                                                                            59+                                                                            245+                                                                            62+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "app")))+                                                           (Var+                                                              SrcSpanInfo+                                                                { srcInfoSpan =+                                                                    SrcSpan+                                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                                      245+                                                                      64+                                                                      245+                                                                      65+                                                                , srcInfoPoints = []+                                                                }+                                                              (UnQual+                                                                 SrcSpanInfo+                                                                   { srcInfoSpan =+                                                                       SrcSpan+                                                                         "tests/examples/InjectiveTypeFamilies.hs"+                                                                         245+                                                                         64+                                                                         245+                                                                         65+                                                                   , srcInfoPoints = []+                                                                   }+                                                                 (Ident+                                                                    SrcSpanInfo+                                                                      { srcInfoSpan =+                                                                          SrcSpan+                                                                            "tests/examples/InjectiveTypeFamilies.hs"+                                                                            245+                                                                            64+                                                                            245+                                                                            65+                                                                      , srcInfoPoints = []+                                                                      }+                                                                    "x")))))))))))))))+                       Nothing+                   ])+                (InfixApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 10 246 63+                     , srcInfoPoints = []+                     }+                   (Paren+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 10 246 49+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 10 246 11+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 48 246 49+                            ]+                        }+                      (InfixApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 11 246 48+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 11 246 13+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 11 246 13+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan+                                          "tests/examples/InjectiveTypeFamilies.hs" 246 11 246 13+                                    , srcInfoPoints = []+                                    }+                                  "c3")))+                         (QVarOp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 14 246 19+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 14 246 15+                                  , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 15 246 18+                                  , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 18 246 19+                                  ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 14 246 19+                                 , srcInfoPoints =+                                     [ SrcSpan+                                         "tests/examples/InjectiveTypeFamilies.hs" 246 14 246 15+                                     , SrcSpan+                                         "tests/examples/InjectiveTypeFamilies.hs" 246 15 246 18+                                     , SrcSpan+                                         "tests/examples/InjectiveTypeFamilies.hs" 246 18 246 19+                                     ]+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan+                                          "tests/examples/InjectiveTypeFamilies.hs" 246 15 246 18+                                    , srcInfoPoints = []+                                    }+                                  "app")))+                         (Paren+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 20 246 48+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 20 246 21+                                  , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 47 246 48+                                  ]+                              }+                            (App+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 21 246 47+                                 , srcInfoPoints = []+                                 }+                               (Var+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan+                                          "tests/examples/InjectiveTypeFamilies.hs" 246 21 246 24+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/InjectiveTypeFamilies.hs" 246 21 246 24+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/InjectiveTypeFamilies.hs"+                                                246+                                                21+                                                246+                                                24+                                          , srcInfoPoints = []+                                          }+                                        "lam")))+                               (Paren+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan+                                          "tests/examples/InjectiveTypeFamilies.hs" 246 25 246 47+                                    , srcInfoPoints =+                                        [ SrcSpan+                                            "tests/examples/InjectiveTypeFamilies.hs" 246 25 246 26+                                        , SrcSpan+                                            "tests/examples/InjectiveTypeFamilies.hs" 246 46 246 47+                                        ]+                                    }+                                  (Lambda+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/InjectiveTypeFamilies.hs" 246 26 246 46+                                       , srcInfoPoints =+                                           [ SrcSpan+                                               "tests/examples/InjectiveTypeFamilies.hs"+                                               246+                                               26+                                               246+                                               27+                                           , SrcSpan+                                               "tests/examples/InjectiveTypeFamilies.hs"+                                               246+                                               29+                                               246+                                               31+                                           ]+                                       }+                                     [ PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/InjectiveTypeFamilies.hs"+                                                 246+                                                 27+                                                 246+                                                 28+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/InjectiveTypeFamilies.hs"+                                                    246+                                                    27+                                                    246+                                                    28+                                              , srcInfoPoints = []+                                              }+                                            "x")+                                     ]+                                     (InfixApp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/InjectiveTypeFamilies.hs"+                                                246+                                                32+                                                246+                                                46+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/InjectiveTypeFamilies.hs"+                                                   246+                                                   32+                                                   246+                                                   33+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                      246+                                                      32+                                                      246+                                                      33+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/InjectiveTypeFamilies.hs"+                                                         246+                                                         32+                                                         246+                                                         33+                                                   , srcInfoPoints = []+                                                   }+                                                 "x")))+                                        (QVarOp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/InjectiveTypeFamilies.hs"+                                                   246+                                                   34+                                                   246+                                                   39+                                             , srcInfoPoints =+                                                 [ SrcSpan+                                                     "tests/examples/InjectiveTypeFamilies.hs"+                                                     246+                                                     34+                                                     246+                                                     35+                                                 , SrcSpan+                                                     "tests/examples/InjectiveTypeFamilies.hs"+                                                     246+                                                     35+                                                     246+                                                     38+                                                 , SrcSpan+                                                     "tests/examples/InjectiveTypeFamilies.hs"+                                                     246+                                                     38+                                                     246+                                                     39+                                                 ]+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                      246+                                                      34+                                                      246+                                                      39+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/InjectiveTypeFamilies.hs"+                                                        246+                                                        34+                                                        246+                                                        35+                                                    , SrcSpan+                                                        "tests/examples/InjectiveTypeFamilies.hs"+                                                        246+                                                        35+                                                        246+                                                        38+                                                    , SrcSpan+                                                        "tests/examples/InjectiveTypeFamilies.hs"+                                                        246+                                                        38+                                                        246+                                                        39+                                                    ]+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/InjectiveTypeFamilies.hs"+                                                         246+                                                         35+                                                         246+                                                         38+                                                   , srcInfoPoints = []+                                                   }+                                                 "add")))+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/InjectiveTypeFamilies.hs"+                                                   246+                                                   40+                                                   246+                                                   46+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                      246+                                                      40+                                                      246+                                                      43+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/InjectiveTypeFamilies.hs"+                                                         246+                                                         40+                                                         246+                                                         43+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/InjectiveTypeFamilies.hs"+                                                            246+                                                            40+                                                            246+                                                            43+                                                      , srcInfoPoints = []+                                                      }+                                                    "int")))+                                           (Lit+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/InjectiveTypeFamilies.hs"+                                                      246+                                                      44+                                                      246+                                                      46+                                                , srcInfoPoints = []+                                                }+                                              (Int+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/InjectiveTypeFamilies.hs"+                                                         246+                                                         44+                                                         246+                                                         46+                                                   , srcInfoPoints = []+                                                   }+                                                 14+                                                 "14"))))))))))+                   (QVarOp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 50 246 55+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 50 246 51+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 51 246 54+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 54 246 55+                            ]+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 50 246 55+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 50 246 51+                               , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 51 246 54+                               , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 54 246 55+                               ]+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 51 246 54+                              , srcInfoPoints = []+                              }+                            "app")))+                   (Paren+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 56 246 63+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 56 246 57+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 62 246 63+                            ]+                        }+                      (App+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 57 246 62+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 57 246 60+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 57 246 60+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan+                                          "tests/examples/InjectiveTypeFamilies.hs" 246 57 246 60+                                    , srcInfoPoints = []+                                    }+                                  "int")))+                         (Lit+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 61 246 62+                              , srcInfoPoints = []+                              }+                            (Int+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 61 246 62+                                 , srcInfoPoints = []+                                 }+                               0+                               "0")))))))+          Nothing+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 1 252 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 1 249 6+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 19 249 24+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 5 250 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 5 251 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 5 252 5+                , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 1 254 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 7 249 18+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 7 249 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 7 249 16+                     , srcInfoPoints = []+                     }+                   "Manifold'"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 17 249 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 17 249 18+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just+             [ ClsTyFam+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 5 250 30+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 5 250 9 ]+                   }+                 (DHApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 10 250 17+                      , srcInfoPoints = []+                      }+                    (DHead+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 10 250 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 10 250 14+                            , srcInfoPoints = []+                            }+                          "Base"))+                    (UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 16 250 17+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 16 250 17+                            , srcInfoPoints = []+                            }+                          "a")))+                 (Just+                    (TyVarSig+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 18 250 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 18 250 19 ]+                         }+                       (UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 20 250 21+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 20 250 21+                               , srcInfoPoints = []+                               }+                             "r"))))+                 (Just+                    (InjectivityInfo+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 22 250 30+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 22 250 23+                             , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 26 250 28+                             ]+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 24 250 25+                            , srcInfoPoints = []+                            }+                          "r")+                       [ Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 29 250 30+                             , srcInfoPoints = []+                             }+                           "a"+                       ]))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 5 251 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 13 251 15 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 5 251 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 13 251 15 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 5 251 12+                          , srcInfoPoints = []+                          }+                        "project"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 16 251 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 18 251 20 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 16 251 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 16 251 17+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 21 251 27+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 21 251 25+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 251 21 251 25+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 251 21 251 25+                                     , srcInfoPoints = []+                                     }+                                   "Base")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 26 251 27+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 251 26 251 27+                                  , srcInfoPoints = []+                                  }+                                "a")))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 5 252 29+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 15 252 17 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 5 252 29+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 15 252 17 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 5 252 14+                          , srcInfoPoints = []+                          }+                        "unproject"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 29+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 25 252 27 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 24+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 22+                                     , srcInfoPoints = []+                                     }+                                   "Base")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 23 252 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan+                                        "tests/examples/InjectiveTypeFamilies.hs" 252 23 252 24+                                  , srcInfoPoints = []+                                  }+                                "a")))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 28 252 29+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 28 252 29+                               , srcInfoPoints = []+                               }+                             "a"))))+             ])+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 1 254 53+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 5 254 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 1 254 4+                , srcInfoPoints = []+                }+              "id'"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 8 254 53+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 8 254 14+                   , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 16 254 17+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 15 254 16+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 15 254 16+                         , srcInfoPoints = []+                         }+                       "a")+                ])+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 18 254 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 18 254 19+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 32 254 33+                         , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 34 254 36+                         ]+                     }+                   (ParenA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 18 254 36+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 18 254 19+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 32 254 33+                            , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 34 254 36+                            ]+                        }+                      (TypeA+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31+                           , srcInfoPoints = []+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan+                                          "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29+                                       , srcInfoPoints = []+                                       }+                                     "Manifold'")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan+                                          "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31+                                    , srcInfoPoints = []+                                    }+                                  "a")))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 53+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 44 254 46 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 43+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 41+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 41+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 41+                              , srcInfoPoints = []+                              }+                            "Base")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 42 254 43+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 42 254 43+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 47 254 53+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 47 254 51+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 47 254 51+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 47 254 51+                              , srcInfoPoints = []+                              }+                            "Base")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 52 254 53+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 52 254 53+                           , srcInfoPoints = []+                           }+                         "a")))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 1 255 26+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 1 255 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 1 255 4+                  , srcInfoPoints = []+                  }+                "id'"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 5 255 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 5 255 6 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 7 255 26+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 7 255 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 7 255 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 7 255 14+                           , srcInfoPoints = []+                           }+                         "project")))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 15 255 16+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 15 255 16+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 15 255 16+                           , srcInfoPoints = []+                           }+                         ".")))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 17 255 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 17 255 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 17 255 26+                           , srcInfoPoints = []+                           }+                         "unproject")))))+          Nothing+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 15 12 43)+        " defines G, identical to F"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 27 1 27 81)+        " this is injective - a type variable introduced in the LHS is not mentioned on"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 28 1 28 56)+        " RHS but we don't claim injectivity in that argument."+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 35 1 35 46)+        " make sure we look through type synonyms..."+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 39 1 39 23)+        " .. but not newtypes"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 44 1 44 24)+        " Closed type families"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 46 1 46 80)+        " these are simple conversions from open type families. They should behave the"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 47 1 47 8)+        " same"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 64 1 64 72)+        " Here the last equation might return both Int and Char but we have to"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 65 1 65 61)+        " recognize that it is not possible due to equation overlap"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 71 1 71 81)+        " This is similar, except that the last equation contains concrete type.  Since"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 72 1 72 56)+        " it is overlapped it should be dropped with a warning"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 78 1 78 78)+        " this one was tricky in the early implementation of injectivity.  Now it is"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 79 1 79 69)+        " identical to the above but we still keep it as a regression test."+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 85 1 85 79)+        " Now let's use declared type families. All the below definitions should work"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 87 1 87 61)+        " No ambiguity for any of the arguments - all are injective"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 91 1 91 55)+        " From 1st instance of F: a ~ Int, b ~ Char, c ~ Bool"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 95 1 95 31)+        " now the closed variant of F"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 102 1 102 65)+        " The last argument is not injective so it must be instantiated"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 106 1 106 45)+        " From 1st instance of I: a ~ Int, b ~ Char"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 110 1 110 30)+        " again, closed variant of I"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 117 1 117 51)+        " Now we have to test weird closed type families:"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 145 1 145 73)+        " Declarations below test more liberal RHSs of injectivity annotations:"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 146 1 146 79)+        " permiting variables to appear in different order than the one in which they"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 147 1 147 18)+        " were declared."+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 154 1 154 79)+        " repeated tyvars in the RHS of injectivity annotation: no warnings or errors"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 155 1 155 59)+        " (consistent with behaviour for functional dependencies)"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 168 1 168 71)+        " Declaring kind injectivity. Here we only claim that knowing the RHS"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 169 1 169 45)+        " determines the LHS kind but not the type."+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 186 1 186 74)+        " Now test some awkward cases from The Injectivity Paper.  All should be"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 187 1 187 13)+        " accepted."+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 216 1 216 56)+        " A sole exception to \"bare variables in the RHS\" rule"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 220 1 220 81)+        " This makes sure that over-saturated type family applications at the top-level"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 221 1 221 17)+        " are accepted."+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 225 1 225 52)+        " make sure we look through type synonyms properly"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 230 1 230 80)+        " this has bare variable in the RHS but all LHS varaiables are also bare so it"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 231 1 231 22)+        " should be accepted"+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 235 1 235 55)+        " Taken from #9587. This exposed a bug in the solver."+    , Comment+        False+        (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 248 1 248 40)+        " This used to fail during development"+    ]+  )
+ tests/examples/InjectiveTypeFamilies.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InjectiveTypeFamilies.hs.prettyprinter.golden view
@@ -0,0 +1,253 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE TypeFamilyDependencies #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+module T6018 where+import T6018a++type family F a b c = (result :: k) | result -> a b c++type instance F Int Char Bool = Bool++type instance F Char Bool Int = Int++type instance F Bool Int Char = Char++type instance G Bool Int Char = Char++type family I (a :: k) b (c :: k) = r | r -> a b++type instance I Int Char Bool = Bool++type instance I Int Char Int = Bool++type instance I Bool Int Int = Int++type family J a (b :: k) = r | r -> a++type instance J Int b = Char++type MaybeSyn a = Maybe a++newtype MaybeNew a = MaybeNew (Maybe a)++type family K a = r | r -> a++type instance K a = MaybeSyn a++type family M a = r | r -> a++type instance M (Maybe a) = MaybeSyn a++type instance M (MaybeNew a) = MaybeNew a++type family FClosed a b c = result | result -> a b c where+        FClosed Int Char Bool = Bool+        FClosed Char Bool Int = Int+        FClosed Bool Int Char = Char++type family IClosed (a :: *) (b :: *) (c :: *) = r | r -> a b where+        IClosed Int Char Bool = Bool+        IClosed Int Char Int = Bool+        IClosed Bool Int Int = Int++type family JClosed a (b :: k) = r | r -> a where+        JClosed Int b = Char++type family KClosed a = r | r -> a where+        KClosed a = MaybeSyn a++type family Bak a = r | r -> a where+        Bak Int = Char+        Bak Char = Int+        Bak a = a++type family Foo a = r | r -> a where+        Foo Int = Bool+        Foo Bool = Int+        Foo Bool = Bool++type family Bar a = r | r -> a where+        Bar Int = Bool+        Bar Bool = Int+        Bar Bool = Char++f :: F a b c -> F a b c+f x = x++fapp :: Bool+fapp = f True++fc :: FClosed a b c -> FClosed a b c+fc x = x++fcapp :: Bool+fcapp = fc True++i :: I a b Int -> I a b Int+i x = x++iapp :: Bool+iapp = i True++ic :: IClosed a b Int -> IClosed a b Int+ic x = x++icapp :: Bool+icapp = ic True++bak :: Bak a -> Bak a+bak x = x++bakapp1 :: Char+bakapp1 = bak 'c'++bakapp2 :: Double+bakapp2 = bak 1.0++bakapp3 :: ()+bakapp3 = bak ()++foo :: Foo a -> Foo a+foo x = x++fooapp1 :: Bool+fooapp1 = foo True++bar :: Bar a -> Bar a+bar x = x++barapp1 :: Bool+barapp1 = bar True++barapp2 :: Int+barapp2 = bar 1++type family H a b = r | r -> b a++type family Hc a b = r | r -> b a where+        Hc a b = a b++class Hcl a b where+        type Ht a b = r | r -> b a++type family Jx a b = r | r -> a a++type family Jcx a b = r | r -> a a where+        Jcx a b = a b++class Jcl a b where+        type Jt a b = r | r -> a a++type family Kx a b = r | r -> a b b++type family Kcx a b = r | r -> a b b where+        Kcx a b = a b++class Kcl a b where+        type Kt a b = r | r -> a b b++type family L (a :: k1) = (r :: k2) | r -> k1 where+        L 'True = Int+        L 'False = Int+        L Maybe = 3+        L IO = 3++data KProxy (a :: *) = KProxy++type family KP (kproxy :: KProxy k) = r | r -> k++type instance KP ('KProxy :: KProxy Bool) = Int++type instance KP ('KProxy :: KProxy *) = Char++kproxy_id :: KP ('KProxy :: KProxy k) -> KP ('KProxy :: KProxy k)+kproxy_id x = x+kproxy_id_use = kproxy_id 'a'++type family Gx a++type family Hx a++type family Gi a = r | r -> a++type instance Gi Int = Char++type family Hi a = r | r -> a++type family F2 a = r | r -> a++type instance F2 [a] = [Gi a]++type instance F2 (Maybe a) = Hi a -> Int++type family F4 a = r | r -> a++type instance F4 [a] = (Gx a, a, a, a)++type instance F4 (Maybe a) = (Hx a, a, Int, Bool)++type family G2 a b = r | r -> a b++type instance G2 a Bool = (a, a)++type instance G2 Bool b = (b, Bool)++type family G6 a = r | r -> a++type instance G6 [a] = [Gi a]++type instance G6 Bool = Int++g6_id :: G6 a -> G6 a+g6_id x = x++g6_use :: [Char]+g6_use = g6_id "foo"++type family Id (a :: k) = (result :: k) | result -> a++type instance Id a = a++type family IdProxy (a :: k) b = r | r -> a++type instance IdProxy a b = (Id a) b++type IdSyn a = Id a++type family IdProxySyn (a :: k) b = r | r -> a++type instance IdProxySyn a b = (IdSyn a) b++type family Fa (a :: k) (b :: k) = (r :: k2) | r -> k++type instance Fa a b = a++type family Arr (repr :: * -> *) (a :: *) (b :: *) = (r :: *)+     | r -> repr a b++class ESymantics repr where+        int :: Int -> repr Int+        +        add :: repr Int -> repr Int -> repr Int+        +        lam :: (repr a -> repr b) -> repr (Arr repr a b)+        +        app :: repr (Arr repr a b) -> repr a -> repr b+te4+  = let c3 = lam (\ f -> lam (\ x -> f `app` (f `app` (f `app` x))))+      in (c3 `app` (lam (\ x -> x `add` int 14))) `app` (int 0)++class Manifold' a where+        type Base a = r | r -> a+        +        project :: a -> Base a+        +        unproject :: Base a -> a++id' :: forall a . (Manifold' a) => Base a -> Base a+id' = project . unproject
+ tests/examples/InlineConlike.hs view
@@ -0,0 +1,3 @@+{-# INLINE CONLIKE size #-}+size :: Int+size = 64
+ tests/examples/InlineConlike.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InlineConlike.hs.parser.golden view
@@ -0,0 +1,104 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 1+            , SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 1+            , SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 1+            , SrcSpan "tests/examples/InlineConlike.hs" 2 1 2 1+            , SrcSpan "tests/examples/InlineConlike.hs" 3 1 3 1+            , SrcSpan "tests/examples/InlineConlike.hs" 4 1 4 1+            , SrcSpan "tests/examples/InlineConlike.hs" 4 1 4 1+            ]+        }+      Nothing+      []+      []+      [ InlineConlikeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 19+                , SrcSpan "tests/examples/InlineConlike.hs" 1 25 1 28+                ]+            }+          Nothing+          (UnQual+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 1 20 1 24+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 1 20 1 24+                  , srcInfoPoints = []+                  }+                "size"))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 1 2 12+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InlineConlike.hs" 2 6 2 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 1 2 5+                , srcInfoPoints = []+                }+              "size"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 9 2 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 9 2 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 9 2 12+                     , srcInfoPoints = []+                     }+                   "Int")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 1 3 10+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 1 3 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 1 3 5+                  , srcInfoPoints = []+                  }+                "size"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 6 3 10+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/InlineConlike.hs" 3 6 3 7 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 8 3 10+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 8 3 10+                     , srcInfoPoints = []+                     }+                   64+                   "64")))+          Nothing+      ]+  , []+  )
+ tests/examples/InlineConlike.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InlineConlike.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# INLINE CONLIKE size #-}++size :: Int+size = 64
+ tests/examples/InstanceSigs.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeFamilies #-}++instance SupportsDelta (Map k v) where+  type Delta (Map k v) = Map k v++  mkDelta :: Map k v -> Map k v -> Delta (Map k v)+  mkDelta = undefined
+ tests/examples/InstanceSigs.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InstanceSigs.hs.parser.golden view
@@ -0,0 +1,571 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 1 1 10 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/InstanceSigs.hs" 1 1 1 1+            , SrcSpan "tests/examples/InstanceSigs.hs" 2 1 2 1+            , SrcSpan "tests/examples/InstanceSigs.hs" 3 1 3 1+            , SrcSpan "tests/examples/InstanceSigs.hs" 5 1 5 1+            , SrcSpan "tests/examples/InstanceSigs.hs" 5 1 5 1+            , SrcSpan "tests/examples/InstanceSigs.hs" 5 1 5 1+            , SrcSpan "tests/examples/InstanceSigs.hs" 10 1 10 1+            , SrcSpan "tests/examples/InstanceSigs.hs" 10 1 10 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 1 1 1 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InstanceSigs.hs" 1 1 1 13+                , SrcSpan "tests/examples/InstanceSigs.hs" 1 34 1 37+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 1 14 1 33+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 2 1 2 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InstanceSigs.hs" 2 1 2 13+                , SrcSpan "tests/examples/InstanceSigs.hs" 2 27 2 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 2 14 2 26+                , srcInfoPoints = []+                }+              "InstanceSigs"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 3 1 3 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InstanceSigs.hs" 3 1 3 13+                , SrcSpan "tests/examples/InstanceSigs.hs" 3 27 3 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 3 14 3 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      ]+      []+      [ InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 1 10 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/InstanceSigs.hs" 5 1 5 9+                , SrcSpan "tests/examples/InstanceSigs.hs" 5 34 5 39+                , SrcSpan "tests/examples/InstanceSigs.hs" 6 3 6 3+                , SrcSpan "tests/examples/InstanceSigs.hs" 8 3 8 3+                , SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 3+                , SrcSpan "tests/examples/InstanceSigs.hs" 10 1 10 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 33+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 33+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 23+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 23+                           , srcInfoPoints = []+                           }+                         "SupportsDelta")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 24 5 33+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/InstanceSigs.hs" 5 24 5 25+                         , SrcSpan "tests/examples/InstanceSigs.hs" 5 32 5 33+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 32+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 30+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 28+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 28+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 28+                                    , srcInfoPoints = []+                                    }+                                  "Map")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 29 5 30+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 29 5 30+                                 , srcInfoPoints = []+                                 }+                               "k")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 31 5 32+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 31 5 32+                              , srcInfoPoints = []+                              }+                            "v"))))))+          (Just+             [ InsType+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 3 6 33+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InstanceSigs.hs" 6 3 6 7+                       , SrcSpan "tests/examples/InstanceSigs.hs" 6 24 6 25+                       ]+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 8 6 23+                      , srcInfoPoints = []+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 8 6 13+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 8 6 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 8 6 13+                               , srcInfoPoints = []+                               }+                             "Delta")))+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 14 6 23+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InstanceSigs.hs" 6 14 6 15+                             , SrcSpan "tests/examples/InstanceSigs.hs" 6 22 6 23+                             ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 22+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 20+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 18+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 18+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 18+                                        , srcInfoPoints = []+                                        }+                                      "Map")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 19 6 20+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InstanceSigs.hs" 6 19 6 20+                                     , srcInfoPoints = []+                                     }+                                   "k")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 21 6 22+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 21 6 22+                                  , srcInfoPoints = []+                                  }+                                "v")))))+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 33+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 31+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 29+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 29+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 29+                                  , srcInfoPoints = []+                                  }+                                "Map")))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 30 6 31+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 30 6 31+                               , srcInfoPoints = []+                               }+                             "k")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 32 6 33+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 32 6 33+                            , srcInfoPoints = []+                            }+                          "v")))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 3 8 51+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/InstanceSigs.hs" 8 11 8 13 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 3 8 51+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/InstanceSigs.hs" 8 11 8 13 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 3 8 10+                          , srcInfoPoints = []+                          }+                        "mkDelta"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 51+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InstanceSigs.hs" 8 22 8 24 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 21+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 19+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 17+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 17+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 17+                                        , srcInfoPoints = []+                                        }+                                      "Map")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 18 8 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InstanceSigs.hs" 8 18 8 19+                                     , srcInfoPoints = []+                                     }+                                   "k")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 20 8 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 20 8 21+                                  , srcInfoPoints = []+                                  }+                                "v")))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 51+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/InstanceSigs.hs" 8 33 8 35 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 32+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 30+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 28+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 28+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 28+                                           , srcInfoPoints = []+                                           }+                                         "Map")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InstanceSigs.hs" 8 29 8 30+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InstanceSigs.hs" 8 29 8 30+                                        , srcInfoPoints = []+                                        }+                                      "k")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 31 8 32+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InstanceSigs.hs" 8 31 8 32+                                     , srcInfoPoints = []+                                     }+                                   "v")))+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 36 8 51+                               , srcInfoPoints = []+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 36 8 41+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InstanceSigs.hs" 8 36 8 41+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InstanceSigs.hs" 8 36 8 41+                                        , srcInfoPoints = []+                                        }+                                      "Delta")))+                             (TyParen+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 42 8 51+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/InstanceSigs.hs" 8 42 8 43+                                      , SrcSpan "tests/examples/InstanceSigs.hs" 8 50 8 51+                                      ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/InstanceSigs.hs" 8 43 8 50+                                     , srcInfoPoints = []+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InstanceSigs.hs" 8 43 8 48+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InstanceSigs.hs" 8 43 8 46+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/InstanceSigs.hs" 8 43 8 46+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/InstanceSigs.hs" 8 43 8 46+                                                 , srcInfoPoints = []+                                                 }+                                               "Map")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InstanceSigs.hs" 8 47 8 48+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/InstanceSigs.hs" 8 47 8 48+                                              , srcInfoPoints = []+                                              }+                                            "k")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/InstanceSigs.hs" 8 49 8 50+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/InstanceSigs.hs" 8 49 8 50+                                           , srcInfoPoints = []+                                           }+                                         "v"))))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 22+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 22+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 10+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 10+                            , srcInfoPoints = []+                            }+                          "mkDelta"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 11 9 22+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/InstanceSigs.hs" 9 11 9 12 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 13 9 22+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 13 9 22+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 13 9 22+                                  , srcInfoPoints = []+                                  }+                                "undefined"))))+                    Nothing)+             ])+      ]+  , []+  )
+ tests/examples/InstanceSigs.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InstanceSigs.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeFamilies #-}++instance SupportsDelta (Map k v) where+        type Delta (Map k v) = Map k v+        +        mkDelta :: Map k v -> Map k v -> Delta (Map k v)+        mkDelta = undefined
+ tests/examples/LambdaCase.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE LambdaCase #-}+module LambdaCase where++foo = \case+        Nothing -> e1+        Just e2 -> e2++bar = \    case { _ -> True }
+ tests/examples/LambdaCase.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LambdaCase.hs.parser.golden view
@@ -0,0 +1,254 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/LambdaCase.hs" 1 1 1 1+            , SrcSpan "tests/examples/LambdaCase.hs" 2 1 2 1+            , SrcSpan "tests/examples/LambdaCase.hs" 2 1 2 1+            , SrcSpan "tests/examples/LambdaCase.hs" 4 1 4 1+            , SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 1+            , SrcSpan "tests/examples/LambdaCase.hs" 9 1 9 1+            , SrcSpan "tests/examples/LambdaCase.hs" 9 1 9 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 2 1 2 24+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/LambdaCase.hs" 2 1 2 7+                  , SrcSpan "tests/examples/LambdaCase.hs" 2 19 2 24+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 2 8 2 18+                 , srcInfoPoints = []+                 }+               "LambdaCase")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 1 1 1 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/LambdaCase.hs" 1 1 1 13+                , SrcSpan "tests/examples/LambdaCase.hs" 1 25 1 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 1 14 1 24+                , srcInfoPoints = []+                }+              "LambdaCase"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 1 6 22+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 1 4 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 1 4 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 5 6 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/LambdaCase.hs" 4 5 4 6 ]+               }+             (LCase+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 7 6 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/LambdaCase.hs" 4 7 4 8+                      , SrcSpan "tests/examples/LambdaCase.hs" 4 8 4 12+                      , SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 9+                      , SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 9+                      , SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 0+                      ]+                  }+                [ Alt+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 22+                      , srcInfoPoints = []+                      }+                    (PApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 16+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 16+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 16+                               , srcInfoPoints = []+                               }+                             "Nothing"))+                       [])+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 17 5 22+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/LambdaCase.hs" 5 17 5 19 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 20 5 22+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 20 5 22+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 20 5 22+                                  , srcInfoPoints = []+                                  }+                                "e1"))))+                    Nothing+                , Alt+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 22+                      , srcInfoPoints = []+                      }+                    (PApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 16+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 13+                               , srcInfoPoints = []+                               }+                             "Just"))+                       [ PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 14 6 16+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 14 6 16+                                , srcInfoPoints = []+                                }+                              "e2")+                       ])+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 17 6 22+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/LambdaCase.hs" 6 17 6 19 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 20 6 22+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 20 6 22+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 20 6 22+                                  , srcInfoPoints = []+                                  }+                                "e2"))))+                    Nothing+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 30+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 4+                  , srcInfoPoints = []+                  }+                "bar"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 5 8 30+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/LambdaCase.hs" 8 5 8 6 ]+               }+             (LCase+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 7 8 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/LambdaCase.hs" 8 7 8 8+                      , SrcSpan "tests/examples/LambdaCase.hs" 8 12 8 16+                      , SrcSpan "tests/examples/LambdaCase.hs" 8 17 8 18+                      , SrcSpan "tests/examples/LambdaCase.hs" 8 29 8 30+                      ]+                  }+                [ Alt+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 19 8 28+                      , srcInfoPoints = []+                      }+                    (PWildCard+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 19 8 20+                         , srcInfoPoints = []+                         })+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 21 8 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/LambdaCase.hs" 8 21 8 23 ]+                         }+                       (Con+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 24 8 28+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 24 8 28+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 24 8 28+                                  , srcInfoPoints = []+                                  }+                                "True"))))+                    Nothing+                ]))+          Nothing+      ]+  , []+  )
+ tests/examples/LambdaCase.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LambdaCase.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE LambdaCase #-}+module LambdaCase where+foo+  = \case+        Nothing -> e1+        Just e2 -> e2+bar+  = \case+        _ -> True
+ tests/examples/LanguagePragma.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE+RecordWildCards+ #-}+main = print "hello"
+ tests/examples/LanguagePragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LanguagePragma.hs.parser.golden view
@@ -0,0 +1,92 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/LanguagePragma.hs" 1 1 1 1+            , SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 1+            , SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 1+            , SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 1+            , SrcSpan "tests/examples/LanguagePragma.hs" 5 1 5 1+            , SrcSpan "tests/examples/LanguagePragma.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 1 1 3 5+            , srcInfoPoints =+                [ SrcSpan "tests/examples/LanguagePragma.hs" 1 1 1 13+                , SrcSpan "tests/examples/LanguagePragma.hs" 3 2 3 5+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 2 1 2 16+                , srcInfoPoints = []+                }+              "RecordWildCards"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 21+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 6 4 21+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/LanguagePragma.hs" 4 6 4 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 8 4 21+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 8 4 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 8 4 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 8 4 13+                           , srcInfoPoints = []+                           }+                         "print")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/LanguagePragma.hs" 4 14 4 21+                     , srcInfoPoints = []+                     }+                   (String+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/LanguagePragma.hs" 4 14 4 21+                        , srcInfoPoints = []+                        }+                      "hello"+                      "hello"))))+          Nothing+      ]+  , []+  )
+ tests/examples/LanguagePragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LanguagePragma.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE RecordWildCards #-}+main = print "hello"
+ tests/examples/Lib.hs view
@@ -0,0 +1,17 @@+{-# LANGUAGE UnboxedSums, MagicHash #-}++module Lib (flip, getInt) where++import GHC.Exts+import Prelude (Int)++{-# NOINLINE flip #-}+flip :: (# Int | Int# #) -> (# Int# | Int #)+flip (# i | #) = (# | i #)+flip (# | i #) = (# i | #)++{-# NOINLINE getInt #-}+getInt :: (# Int# | Int #) -> Int+getInt (# i | #) = I# i+getInt (# | i #) = i+
+ tests/examples/Lib.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Lib.hs.parser.golden view
@@ -0,0 +1,672 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 1 1 18 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Lib.hs" 1 1 1 1+            , SrcSpan "tests/examples/Lib.hs" 3 1 3 1+            , SrcSpan "tests/examples/Lib.hs" 3 1 3 1+            , SrcSpan "tests/examples/Lib.hs" 5 1 5 1+            , SrcSpan "tests/examples/Lib.hs" 6 1 6 1+            , SrcSpan "tests/examples/Lib.hs" 8 1 8 1+            , SrcSpan "tests/examples/Lib.hs" 9 1 9 1+            , SrcSpan "tests/examples/Lib.hs" 10 1 10 1+            , SrcSpan "tests/examples/Lib.hs" 11 1 11 1+            , SrcSpan "tests/examples/Lib.hs" 13 1 13 1+            , SrcSpan "tests/examples/Lib.hs" 14 1 14 1+            , SrcSpan "tests/examples/Lib.hs" 15 1 15 1+            , SrcSpan "tests/examples/Lib.hs" 16 1 16 1+            , SrcSpan "tests/examples/Lib.hs" 18 1 18 1+            , SrcSpan "tests/examples/Lib.hs" 18 1 18 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 1 3 32+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/Lib.hs" 3 1 3 7+                  , SrcSpan "tests/examples/Lib.hs" 3 27 3 32+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 8 3 11+                 , srcInfoPoints = []+                 }+               "Lib")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 12 3 26+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Lib.hs" 3 12 3 13+                        , SrcSpan "tests/examples/Lib.hs" 3 17 3 18+                        , SrcSpan "tests/examples/Lib.hs" 3 25 3 26+                        ]+                    }+                  [ EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 13 3 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 13 3 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 13 3 17+                              , srcInfoPoints = []+                              }+                            "flip"))+                  , EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 19 3 25+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 19 3 25+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 19 3 25+                              , srcInfoPoints = []+                              }+                            "getInt"))+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 1 1 1 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Lib.hs" 1 1 1 13+                , SrcSpan "tests/examples/Lib.hs" 1 25 1 26+                , SrcSpan "tests/examples/Lib.hs" 1 37 1 40+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "UnboxedSums"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 1 27 1 36+                , srcInfoPoints = []+                }+              "MagicHash"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 5 1 5 16+                , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 5 1 5 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 5 8 5 16+                  , srcInfoPoints = []+                  }+                "GHC.Exts"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 1 6 21+                , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 6 1 6 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 8 6 15+                  , srcInfoPoints = []+                  }+                "Prelude"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 16 6 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Lib.hs" 6 16 6 17+                         , SrcSpan "tests/examples/Lib.hs" 6 20 6 21+                         ]+                     }+                   False+                   [ IAbs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 17 6 20+                         , srcInfoPoints = []+                         }+                       (NoNamespace+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 17 6 20+                            , srcInfoPoints = []+                            })+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 17 6 20+                            , srcInfoPoints = []+                            }+                          "Int")+                   ])+          }+      ]+      [ InlineSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 8 1 8 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Lib.hs" 8 1 8 13+                , SrcSpan "tests/examples/Lib.hs" 8 19 8 22+                ]+            }+          False+          Nothing+          (UnQual+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 8 14 8 18+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 8 14 8 18+                  , srcInfoPoints = []+                  }+                "flip"))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 1 9 45+            , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 9 6 9 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 1 9 5+                , srcInfoPoints = []+                }+              "flip"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 9 9 45+               , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 9 26 9 28 ]+               }+             (TyUnboxedSum+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 9 9 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Lib.hs" 9 9 9 11+                      , SrcSpan "tests/examples/Lib.hs" 9 16 9 17+                      , SrcSpan "tests/examples/Lib.hs" 9 23 9 25+                      ]+                  }+                [ TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 12 9 15+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 12 9 15+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 12 9 15+                            , srcInfoPoints = []+                            }+                          "Int"))+                , TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 18 9 22+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 18 9 22+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 18 9 22+                            , srcInfoPoints = []+                            }+                          "Int#"))+                ])+             (TyUnboxedSum+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 29 9 45+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Lib.hs" 9 29 9 31+                      , SrcSpan "tests/examples/Lib.hs" 9 37 9 38+                      , SrcSpan "tests/examples/Lib.hs" 9 43 9 45+                      ]+                  }+                [ TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 32 9 36+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 32 9 36+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 32 9 36+                            , srcInfoPoints = []+                            }+                          "Int#"))+                , TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 39 9 42+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 39 9 42+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 39 9 42+                            , srcInfoPoints = []+                            }+                          "Int"))+                ]))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 1 11 27+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 1 10 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 1 10 5+                   , srcInfoPoints = []+                   }+                 "flip")+              [ PUnboxedSum+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 6 10 15+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Lib.hs" 10 6 10 8+                        , SrcSpan "tests/examples/Lib.hs" 10 11 10 12+                        , SrcSpan "tests/examples/Lib.hs" 10 13 10 15+                        ]+                    }+                  0+                  1+                  (PVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 9 10 10+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 9 10 10+                          , srcInfoPoints = []+                          }+                        "i"))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 16 10 27+                   , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 10 16 10 17 ]+                   }+                 (UnboxedSum+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 18 10 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Lib.hs" 10 18 10 20+                          , SrcSpan "tests/examples/Lib.hs" 10 21 10 22+                          , SrcSpan "tests/examples/Lib.hs" 10 25 10 27+                          ]+                      }+                    1+                    0+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 23 10 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 23 10 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 23 10 24+                               , srcInfoPoints = []+                               }+                             "i")))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 1 11 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 1 11 5+                   , srcInfoPoints = []+                   }+                 "flip")+              [ PUnboxedSum+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 6 11 15+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Lib.hs" 11 6 11 8+                        , SrcSpan "tests/examples/Lib.hs" 11 9 11 10+                        , SrcSpan "tests/examples/Lib.hs" 11 13 11 15+                        ]+                    }+                  1+                  0+                  (PVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 11 11 12+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 11 11 12+                          , srcInfoPoints = []+                          }+                        "i"))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 16 11 27+                   , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 11 16 11 17 ]+                   }+                 (UnboxedSum+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 18 11 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Lib.hs" 11 18 11 20+                          , SrcSpan "tests/examples/Lib.hs" 11 23 11 24+                          , SrcSpan "tests/examples/Lib.hs" 11 25 11 27+                          ]+                      }+                    0+                    1+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 21 11 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 21 11 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 21 11 22+                               , srcInfoPoints = []+                               }+                             "i")))))+              Nothing+          ]+      , InlineSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 13 1 13 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Lib.hs" 13 1 13 13+                , SrcSpan "tests/examples/Lib.hs" 13 21 13 24+                ]+            }+          False+          Nothing+          (UnQual+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 13 14 13 20+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 13 14 13 20+                  , srcInfoPoints = []+                  }+                "getInt"))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 1 14 34+            , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 14 8 14 10 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 1 14 7+                , srcInfoPoints = []+                }+              "getInt"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 11 14 34+               , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 14 28 14 30 ]+               }+             (TyUnboxedSum+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 11 14 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Lib.hs" 14 11 14 13+                      , SrcSpan "tests/examples/Lib.hs" 14 19 14 20+                      , SrcSpan "tests/examples/Lib.hs" 14 25 14 27+                      ]+                  }+                [ TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 14 14 18+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 14 14 18+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 14 14 18+                            , srcInfoPoints = []+                            }+                          "Int#"))+                , TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 21 14 24+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 21 14 24+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 21 14 24+                            , srcInfoPoints = []+                            }+                          "Int"))+                ])+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 31 14 34+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 31 14 34+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 31 14 34+                        , srcInfoPoints = []+                        }+                      "Int"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 1 16 21+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 1 15 24+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 1 15 7+                   , srcInfoPoints = []+                   }+                 "getInt")+              [ PUnboxedSum+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 8 15 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Lib.hs" 15 8 15 10+                        , SrcSpan "tests/examples/Lib.hs" 15 13 15 14+                        , SrcSpan "tests/examples/Lib.hs" 15 15 15 17+                        ]+                    }+                  0+                  1+                  (PVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 11 15 12+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 11 15 12+                          , srcInfoPoints = []+                          }+                        "i"))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 18 15 24+                   , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 15 18 15 19 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 20 15 24+                      , srcInfoPoints = []+                      }+                    (Con+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 20 15 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 20 15 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 20 15 22+                               , srcInfoPoints = []+                               }+                             "I#")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 23 15 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 23 15 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 23 15 24+                               , srcInfoPoints = []+                               }+                             "i")))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 1 16 21+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 1 16 7+                   , srcInfoPoints = []+                   }+                 "getInt")+              [ PUnboxedSum+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 8 16 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Lib.hs" 16 8 16 10+                        , SrcSpan "tests/examples/Lib.hs" 16 11 16 12+                        , SrcSpan "tests/examples/Lib.hs" 16 15 16 17+                        ]+                    }+                  1+                  0+                  (PVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 13 16 14+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 13 16 14+                          , srcInfoPoints = []+                          }+                        "i"))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 18 16 21+                   , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 16 18 16 19 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 20 16 21+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 20 16 21+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 20 16 21+                            , srcInfoPoints = []+                            }+                          "i"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/Lib.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Lib.hs.prettyprinter.golden view
@@ -0,0 +1,16 @@+{-# LANGUAGE UnboxedSums, MagicHash #-}+module Lib (flip, getInt) where+import GHC.Exts+import Prelude (Int)++{-# NOINLINE flip #-}++flip :: (# Int | Int# #) -> (# Int# | Int #)+flip (# i | #) = (# | i #)+flip (# | i #) = (# i | #)++{-# NOINLINE getInt #-}++getInt :: (# Int# | Int #) -> Int+getInt (# i | #) = I# i+getInt (# | i #) = i
+ tests/examples/LineOptionsPragma.hs view
@@ -0,0 +1,3 @@+{-# OPTIONS #-}+{-# LINE 49 "src/Language/C/Parser/Lexer.x" #-}+module Fail where
+ tests/examples/LineOptionsPragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LineOptionsPragma.hs.parser.golden view
@@ -0,0 +1,52 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/LineOptionsPragma.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/LineOptionsPragma.hs" 1 1 1 1+            , SrcSpan "tests/examples/LineOptionsPragma.hs" 3 1 3 1+            , SrcSpan "tests/examples/LineOptionsPragma.hs" 3 1 3 1+            , SrcSpan "tests/examples/LineOptionsPragma.hs" 4 1 4 1+            , SrcSpan "tests/examples/LineOptionsPragma.hs" 4 1 4 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/LineOptionsPragma.hs" 3 1 3 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/LineOptionsPragma.hs" 3 1 3 7+                  , SrcSpan "tests/examples/LineOptionsPragma.hs" 3 13 3 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/LineOptionsPragma.hs" 3 8 3 12+                 , srcInfoPoints = []+                 }+               "Fail")+            Nothing+            Nothing))+      [ OptionsPragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/LineOptionsPragma.hs" 1 1 1 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/LineOptionsPragma.hs" 1 1 1 13+                , SrcSpan "tests/examples/LineOptionsPragma.hs" 1 13 1 16+                ]+            }+          Nothing+          ""+      ]+      []+      []+  , [ Comment+        True+        (SrcSpan "tests/examples/LineOptionsPragma.hs" 2 1 2 48)+        "# LINE 49 \"src/Language/C/Parser/Lexer.x\" #"+    ]+  )
+ tests/examples/LineOptionsPragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LineOptionsPragma.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# OPTIONS #-}+module Fail where
+ tests/examples/List2.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE TypeFamilyDependencies #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE GADTs #-}+-----------------------------------------------------------------------------+-- |+-- Module      :  Type.Family.List+-- Copyright   :  Copyright (C) 2015 Kyle Carter+-- License     :  BSD3+--+-- Maintainer  :  Kyle Carter <kylcarte@indiana.edu>+-- Stability   :  experimental+-- Portability :  RankNTypes+--+-- Convenient aliases and type families for working with+-- type-level lists.+----------------------------------------------------------------------------++module Type.Family.List where++type Ø    = '[]+type (:<) = '(:)+infixr 5 :<+
+ tests/examples/List2.hs.exactprinter.golden view
@@ -0,0 +1,36 @@+{-# LANGUAGE TypeFamilyDependencies #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE GADTs #-}+-----------------------------------------------------------------------------+-- |+-- Module      :  Type.Family.List+-- Copyright   :  Copyright (C) 2015 Kyle Carter+-- License     :  BSD3+--+-- Maintainer  :  Kyle Carter <kylcarte@indiana.edu>+-- Stability   :  experimental+-- Portability :  RankNTypes+--+-- Convenient aliases and type families for working with+-- type-level lists.+----------------------------------------------------------------------------++module Type.Family.List where++type Ø    = '[]+type :<   = ':+infixr 5 :<++
+ tests/examples/List2.hs.parser.golden view
@@ -0,0 +1,427 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 1 1 36 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/List2.hs" 1 1 1 1+            , SrcSpan "tests/examples/List2.hs" 2 1 2 1+            , SrcSpan "tests/examples/List2.hs" 3 1 3 1+            , SrcSpan "tests/examples/List2.hs" 4 1 4 1+            , SrcSpan "tests/examples/List2.hs" 5 1 5 1+            , SrcSpan "tests/examples/List2.hs" 6 1 6 1+            , SrcSpan "tests/examples/List2.hs" 7 1 7 1+            , SrcSpan "tests/examples/List2.hs" 8 1 8 1+            , SrcSpan "tests/examples/List2.hs" 9 1 9 1+            , SrcSpan "tests/examples/List2.hs" 10 1 10 1+            , SrcSpan "tests/examples/List2.hs" 11 1 11 1+            , SrcSpan "tests/examples/List2.hs" 12 1 12 1+            , SrcSpan "tests/examples/List2.hs" 13 1 13 1+            , SrcSpan "tests/examples/List2.hs" 14 1 14 1+            , SrcSpan "tests/examples/List2.hs" 15 1 15 1+            , SrcSpan "tests/examples/List2.hs" 30 1 30 1+            , SrcSpan "tests/examples/List2.hs" 30 1 30 1+            , SrcSpan "tests/examples/List2.hs" 32 1 32 1+            , SrcSpan "tests/examples/List2.hs" 33 1 33 1+            , SrcSpan "tests/examples/List2.hs" 34 1 34 1+            , SrcSpan "tests/examples/List2.hs" 36 1 36 1+            , SrcSpan "tests/examples/List2.hs" 36 1 36 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 30 1 30 30+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/List2.hs" 30 1 30 7+                  , SrcSpan "tests/examples/List2.hs" 30 25 30 30+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 30 8 30 24+                 , srcInfoPoints = []+                 }+               "Type.Family.List")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 1 1 1 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 1 1 1 13+                , SrcSpan "tests/examples/List2.hs" 1 37 1 40+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 1 14 1 36+                , srcInfoPoints = []+                }+              "TypeFamilyDependencies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 2 1 2 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 2 1 2 13+                , SrcSpan "tests/examples/List2.hs" 2 30 2 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 2 14 2 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 3 1 3 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 3 1 3 13+                , SrcSpan "tests/examples/List2.hs" 3 30 3 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 3 14 3 29+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 4 1 4 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 4 1 4 13+                , SrcSpan "tests/examples/List2.hs" 4 25 4 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 4 14 4 24+                , srcInfoPoints = []+                }+              "RankNTypes"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 5 1 5 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 5 1 5 13+                , SrcSpan "tests/examples/List2.hs" 5 33 5 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 5 14 5 32+                , srcInfoPoints = []+                }+              "StandaloneDeriving"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 6 1 6 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 6 1 6 13+                , SrcSpan "tests/examples/List2.hs" 6 32 6 35+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 6 14 6 31+                , srcInfoPoints = []+                }+              "FlexibleInstances"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 7 1 7 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 7 1 7 13+                , SrcSpan "tests/examples/List2.hs" 7 37 7 40+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 7 14 7 36+                , srcInfoPoints = []+                }+              "FunctionalDependencies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 8 1 8 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 8 1 8 13+                , SrcSpan "tests/examples/List2.hs" 8 35 8 38+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 8 14 8 34+                , srcInfoPoints = []+                }+              "UndecidableInstances"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 9 1 9 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 9 1 9 13+                , SrcSpan "tests/examples/List2.hs" 9 27 9 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 9 14 9 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 10 1 10 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 10 1 10 13+                , SrcSpan "tests/examples/List2.hs" 10 25 10 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 10 14 10 24+                , srcInfoPoints = []+                }+              "LambdaCase"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 11 1 11 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 11 1 11 13+                , SrcSpan "tests/examples/List2.hs" 11 28 11 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 11 14 11 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 12 1 12 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 12 1 12 13+                , SrcSpan "tests/examples/List2.hs" 12 29 12 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 12 14 12 28+                , srcInfoPoints = []+                }+              "KindSignatures"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 13 1 13 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 13 1 13 13+                , SrcSpan "tests/examples/List2.hs" 13 24 13 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 13 14 13 23+                , srcInfoPoints = []+                }+              "DataKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 14 1 14 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 14 1 14 13+                , SrcSpan "tests/examples/List2.hs" 14 24 14 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 14 14 14 23+                , srcInfoPoints = []+                }+              "PolyKinds"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 15 1 15 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 15 1 15 13+                , SrcSpan "tests/examples/List2.hs" 15 20 15 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 15 14 15 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      []+      [ TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 1 32 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 32 1 32 5+                , SrcSpan "tests/examples/List2.hs" 32 11 32 12+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 6 32 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 6 32 7+                  , srcInfoPoints = []+                  }+                "\216"))+          (TyPromoted+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 13 32 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/List2.hs" 32 13 32 14+                   , SrcSpan "tests/examples/List2.hs" 32 15 32 16+                   ]+               }+             (PromotedList+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 13 32 16+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/List2.hs" 32 13 32 14+                      , SrcSpan "tests/examples/List2.hs" 32 15 32 16+                      ]+                  }+                True+                []))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 1 33 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/List2.hs" 33 1 33 5+                , SrcSpan "tests/examples/List2.hs" 33 11 33 12+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 6 33 10+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/List2.hs" 33 6 33 7+                   , SrcSpan "tests/examples/List2.hs" 33 7 33 9+                   , SrcSpan "tests/examples/List2.hs" 33 9 33 10+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 7 33 9+                  , srcInfoPoints = []+                  }+                ":<"))+          (TyPromoted+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 13 33 17+               , srcInfoPoints = [ SrcSpan "tests/examples/List2.hs" 33 13 33 14 ]+               }+             (PromotedCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 13 33 17+                  , srcInfoPoints = [ SrcSpan "tests/examples/List2.hs" 33 13 33 14 ]+                  }+                True+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 14 33 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/List2.hs" 33 14 33 15+                         , SrcSpan "tests/examples/List2.hs" 33 15 33 16+                         , SrcSpan "tests/examples/List2.hs" 33 16 33 17+                         ]+                     }+                   (Cons+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 15 33 16+                        , srcInfoPoints = []+                        }))))+      , InfixDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 34 1 34 12+            , srcInfoPoints = [ SrcSpan "tests/examples/List2.hs" 34 8 34 9 ]+            }+          (AssocRight+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 34 1 34 7+               , srcInfoPoints = []+               })+          (Just 5)+          [ ConOp+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 34 10 34 12+                , srcInfoPoints = []+                }+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 34 10 34 12+                   , srcInfoPoints = []+                   }+                 ":<")+          ]+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/List2.hs" 16 1 16 78)+        "---------------------------------------------------------------------------"+    , Comment False (SrcSpan "tests/examples/List2.hs" 17 1 17 5) " |"+    , Comment+        False+        (SrcSpan "tests/examples/List2.hs" 18 1 18 35)+        " Module      :  Type.Family.List"+    , Comment+        False+        (SrcSpan "tests/examples/List2.hs" 19 1 19 49)+        " Copyright   :  Copyright (C) 2015 Kyle Carter"+    , Comment+        False+        (SrcSpan "tests/examples/List2.hs" 20 1 20 23)+        " License     :  BSD3"+    , Comment False (SrcSpan "tests/examples/List2.hs" 21 1 21 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/List2.hs" 22 1 22 53)+        " Maintainer  :  Kyle Carter <kylcarte@indiana.edu>"+    , Comment+        False+        (SrcSpan "tests/examples/List2.hs" 23 1 23 31)+        " Stability   :  experimental"+    , Comment+        False+        (SrcSpan "tests/examples/List2.hs" 24 1 24 29)+        " Portability :  RankNTypes"+    , Comment False (SrcSpan "tests/examples/List2.hs" 25 1 25 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/List2.hs" 26 1 26 57)+        " Convenient aliases and type families for working with"+    , Comment+        False+        (SrcSpan "tests/examples/List2.hs" 27 1 27 21)+        " type-level lists."+    , Comment+        False+        (SrcSpan "tests/examples/List2.hs" 28 1 28 77)+        "--------------------------------------------------------------------------"+    ]+  )
+ tests/examples/List2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/List2.hs.prettyprinter.golden view
@@ -0,0 +1,22 @@+{-# LANGUAGE TypeFamilyDependencies #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE GADTs #-}+module Type.Family.List where++type Ø = '[]++type (:<) = '(:)++infixr 5 :<
+ tests/examples/MagicHashN.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE MagicHash #-}+module MagicHashN where++a# = 1+b## = 2+c### = 3+main = print (a#, b##, c###)
+ tests/examples/MagicHashN.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MagicHashN.hs.parser.golden view
@@ -0,0 +1,262 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/MagicHashN.hs" 1 1 1 1+            , SrcSpan "tests/examples/MagicHashN.hs" 2 1 2 1+            , SrcSpan "tests/examples/MagicHashN.hs" 2 1 2 1+            , SrcSpan "tests/examples/MagicHashN.hs" 4 1 4 1+            , SrcSpan "tests/examples/MagicHashN.hs" 5 1 5 1+            , SrcSpan "tests/examples/MagicHashN.hs" 6 1 6 1+            , SrcSpan "tests/examples/MagicHashN.hs" 7 1 7 1+            , SrcSpan "tests/examples/MagicHashN.hs" 8 1 8 1+            , SrcSpan "tests/examples/MagicHashN.hs" 8 1 8 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 2 1 2 24+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/MagicHashN.hs" 2 1 2 7+                  , SrcSpan "tests/examples/MagicHashN.hs" 2 19 2 24+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 2 8 2 18+                 , srcInfoPoints = []+                 }+               "MagicHashN")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 1 1 1 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MagicHashN.hs" 1 1 1 13+                , SrcSpan "tests/examples/MagicHashN.hs" 1 24 1 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "MagicHash"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 1 4 7+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 1 4 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 1 4 3+                  , srcInfoPoints = []+                  }+                "a#"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 4 4 7+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MagicHashN.hs" 4 4 4 5 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 6 4 7+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 6 4 7+                     , srcInfoPoints = []+                     }+                   1+                   "1")))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 1 5 8+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 1 5 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 1 5 4+                  , srcInfoPoints = []+                  }+                "b##"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 5 5 8+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MagicHashN.hs" 5 5 5 6 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 7 5 8+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 7 5 8+                     , srcInfoPoints = []+                     }+                   2+                   "2")))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 1 6 9+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 1 6 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 1 6 5+                  , srcInfoPoints = []+                  }+                "c###"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 6 6 9+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MagicHashN.hs" 6 6 6 7 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 8 6 9+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 8 6 9+                     , srcInfoPoints = []+                     }+                   3+                   "3")))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 1 7 29+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 1 7 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 1 7 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 6 7 29+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MagicHashN.hs" 7 6 7 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 8 7 29+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 8 7 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 8 7 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 8 7 13+                           , srcInfoPoints = []+                           }+                         "print")))+                (Tuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 14 7 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/MagicHashN.hs" 7 14 7 15+                         , SrcSpan "tests/examples/MagicHashN.hs" 7 17 7 18+                         , SrcSpan "tests/examples/MagicHashN.hs" 7 22 7 23+                         , SrcSpan "tests/examples/MagicHashN.hs" 7 28 7 29+                         ]+                     }+                   Boxed+                   [ Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 15 7 17+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 15 7 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 15 7 17+                               , srcInfoPoints = []+                               }+                             "a#"))+                   , Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 19 7 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 19 7 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 19 7 22+                               , srcInfoPoints = []+                               }+                             "b##"))+                   , Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 24 7 28+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 24 7 28+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 24 7 28+                               , srcInfoPoints = []+                               }+                             "c###"))+                   ])))+          Nothing+      ]+  , []+  )
+ tests/examples/MagicHashN.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MagicHashN.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE MagicHash #-}+module MagicHashN where+a# = 1+b## = 2+c### = 3+main = print (a#, b##, c###)
+ tests/examples/MagicHashUnboxedTuples.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE MagicHash, UnboxedTuples #-}+module MagicHashUnboxedTuples where++f (#x, y #) = (# a#, b #) where+  a# = a#+  b = b
+ tests/examples/MagicHashUnboxedTuples.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MagicHashUnboxedTuples.hs.parser.golden view
@@ -0,0 +1,286 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 1 1 1+            , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 1 2 1+            , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 1 2 1+            , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 1 4 1+            , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 7 1 7 1+            , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 7 1 7 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 1 2 36+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 1 2 7+                  , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 31 2 36+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 8 2 30+                 , srcInfoPoints = []+                 }+               "MagicHashUnboxedTuples")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 1 1 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 1 1 13+                , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 23 1 24+                , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 39 1 42+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "MagicHash"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 25 1 38+                , srcInfoPoints = []+                }+              "UnboxedTuples"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 1 6 8+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 27 4 32 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 1 6 8+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 27 4 32 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 1 4 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 3 4 12+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 3 4 5+                        , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 6 4 7+                        , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 10 4 12+                        ]+                    }+                  Unboxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 5 4 6+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 5 4 6+                           , srcInfoPoints = []+                           }+                         "x")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 8 4 9+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 8 4 9+                           , srcInfoPoints = []+                           }+                         "y")+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 13 4 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 13 4 14 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 15 4 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 15 4 17+                          , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 20 4 21+                          , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 24 4 26+                          ]+                      }+                    Unboxed+                    [ Var+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 18 4 20+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 18 4 20+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 18 4 20+                                , srcInfoPoints = []+                                }+                              "a#"))+                    , Var+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 22 4 23+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 22 4 23+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 22 4 23+                                , srcInfoPoints = []+                                }+                              "b"))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 6 8+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 5 3+                          , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 3 6 3+                          , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 7 1 7 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 5 10+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 5 5+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 5 5+                                , srcInfoPoints = []+                                }+                              "a#"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 6 5 10+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 6 5 7 ]+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 8 5 10+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 8 5 10+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/MagicHashUnboxedTuples.hs" 5 8 5 10+                                      , srcInfoPoints = []+                                      }+                                    "a#"))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 3 6 8+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 3 6 4+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 3 6 4+                                , srcInfoPoints = []+                                }+                              "b"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 5 6 8+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 5 6 6 ]+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 7 6 8+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 7 6 8+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 7 6 8+                                      , srcInfoPoints = []+                                      }+                                    "b"))))+                        Nothing+                    ]))+          ]+      ]+  , []+  )
+ tests/examples/MagicHashUnboxedTuples.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MagicHashUnboxedTuples.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE MagicHash, UnboxedTuples #-}+module MagicHashUnboxedTuples where+f (# x, y #) = (# a#, b #)+  where a# = a#+        b = b
+ tests/examples/MinimalPragma.hs view
@@ -0,0 +1,7 @@+class Eq a where+     (==) :: a -> a -> Bool+     (/=) :: a -> a -> Bool+     x == y = not (x /= y)+     x /= y = not (x == y)+     {-# MINIMAL (==) | (/=) #-}+
+ tests/examples/MinimalPragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MinimalPragma.hs.parser.golden view
@@ -0,0 +1,581 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/MinimalPragma.hs" 1 1 1 1+            , SrcSpan "tests/examples/MinimalPragma.hs" 1 1 1 1+            , SrcSpan "tests/examples/MinimalPragma.hs" 1 1 1 1+            , SrcSpan "tests/examples/MinimalPragma.hs" 8 1 8 1+            , SrcSpan "tests/examples/MinimalPragma.hs" 8 1 8 1+            ]+        }+      Nothing+      []+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 1 6 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MinimalPragma.hs" 1 1 1 6+                , SrcSpan "tests/examples/MinimalPragma.hs" 1 12 1 17+                , SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 6+                , SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 6+                , SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 6+                , SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 6+                , SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 6+                , SrcSpan "tests/examples/MinimalPragma.hs" 8 1 8 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 7 1 11+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 7 1 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 7 1 9+                     , srcInfoPoints = []+                     }+                   "Eq"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 10 1 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 10 1 11+                     , srcInfoPoints = []+                     }+                   "a")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 28+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/MinimalPragma.hs" 2 11 2 13 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 28+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MinimalPragma.hs" 2 11 2 13 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 10+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 7+                              , SrcSpan "tests/examples/MinimalPragma.hs" 2 7 2 9+                              , SrcSpan "tests/examples/MinimalPragma.hs" 2 9 2 10+                              ]+                          }+                        "=="+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 14 2 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/MinimalPragma.hs" 2 16 2 18 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 14 2 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 14 2 15+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 19 2 28+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/MinimalPragma.hs" 2 21 2 23 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 19 2 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/MinimalPragma.hs" 2 19 2 20+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 24 2 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/MinimalPragma.hs" 2 24 2 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/MinimalPragma.hs" 2 24 2 28+                                     , srcInfoPoints = []+                                     }+                                   "Bool"))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 28+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/MinimalPragma.hs" 3 11 3 13 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 28+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MinimalPragma.hs" 3 11 3 13 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 10+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 7+                              , SrcSpan "tests/examples/MinimalPragma.hs" 3 7 3 9+                              , SrcSpan "tests/examples/MinimalPragma.hs" 3 9 3 10+                              ]+                          }+                        "/="+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 14 3 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/MinimalPragma.hs" 3 16 3 18 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 14 3 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 14 3 15+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 19 3 28+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/MinimalPragma.hs" 3 21 3 23 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 19 3 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/MinimalPragma.hs" 3 19 3 20+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 24 3 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/MinimalPragma.hs" 3 24 3 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/MinimalPragma.hs" 3 24 3 28+                                     , srcInfoPoints = []+                                     }+                                   "Bool"))))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 27+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 27+                      , srcInfoPoints = []+                      }+                    [ InfixMatch+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 27+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 7+                                , srcInfoPoints = []+                                }+                              "x"))+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 8 4 10+                             , srcInfoPoints = []+                             }+                           "==")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 11 4 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 11 4 12+                                 , srcInfoPoints = []+                                 }+                               "y")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 13 4 27+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MinimalPragma.hs" 4 13 4 14 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 15 4 27+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MinimalPragma.hs" 4 15 4 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MinimalPragma.hs" 4 15 4 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/MinimalPragma.hs" 4 15 4 18+                                         , srcInfoPoints = []+                                         }+                                       "not")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MinimalPragma.hs" 4 19 4 27+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/MinimalPragma.hs" 4 19 4 20+                                       , SrcSpan "tests/examples/MinimalPragma.hs" 4 26 4 27+                                       ]+                                   }+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MinimalPragma.hs" 4 20 4 26+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/MinimalPragma.hs" 4 20 4 21+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/MinimalPragma.hs" 4 20 4 21+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/MinimalPragma.hs" 4 20 4 21+                                               , srcInfoPoints = []+                                               }+                                             "x")))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/MinimalPragma.hs" 4 22 4 24+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/MinimalPragma.hs" 4 22 4 24+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/MinimalPragma.hs" 4 22 4 24+                                               , srcInfoPoints = []+                                               }+                                             "/=")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/MinimalPragma.hs" 4 25 4 26+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/MinimalPragma.hs" 4 25 4 26+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/MinimalPragma.hs" 4 25 4 26+                                               , srcInfoPoints = []+                                               }+                                             "y")))))))+                        Nothing+                    ])+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 27+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 27+                      , srcInfoPoints = []+                      }+                    [ InfixMatch+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 27+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 7+                                , srcInfoPoints = []+                                }+                              "x"))+                        (Symbol+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 8 5 10+                             , srcInfoPoints = []+                             }+                           "/=")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 11 5 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 11 5 12+                                 , srcInfoPoints = []+                                 }+                               "y")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 13 5 27+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MinimalPragma.hs" 5 13 5 14 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 15 5 27+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MinimalPragma.hs" 5 15 5 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MinimalPragma.hs" 5 15 5 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/MinimalPragma.hs" 5 15 5 18+                                         , srcInfoPoints = []+                                         }+                                       "not")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MinimalPragma.hs" 5 19 5 27+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/MinimalPragma.hs" 5 19 5 20+                                       , SrcSpan "tests/examples/MinimalPragma.hs" 5 26 5 27+                                       ]+                                   }+                                 (InfixApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MinimalPragma.hs" 5 20 5 26+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/MinimalPragma.hs" 5 20 5 21+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/MinimalPragma.hs" 5 20 5 21+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/MinimalPragma.hs" 5 20 5 21+                                               , srcInfoPoints = []+                                               }+                                             "x")))+                                    (QVarOp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/MinimalPragma.hs" 5 22 5 24+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/MinimalPragma.hs" 5 22 5 24+                                            , srcInfoPoints = []+                                            }+                                          (Symbol+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/MinimalPragma.hs" 5 22 5 24+                                               , srcInfoPoints = []+                                               }+                                             "==")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/MinimalPragma.hs" 5 25 5 26+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/MinimalPragma.hs" 5 25 5 26+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/MinimalPragma.hs" 5 25 5 26+                                               , srcInfoPoints = []+                                               }+                                             "y")))))))+                        Nothing+                    ])+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 33+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 17+                       , SrcSpan "tests/examples/MinimalPragma.hs" 6 30 6 33+                       ]+                   }+                 (MinimalPragma+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 33+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 17+                          , SrcSpan "tests/examples/MinimalPragma.hs" 6 30 6 33+                          ]+                      }+                    (Just+                       (OrFormula+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 29+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/MinimalPragma.hs" 6 23 6 24 ]+                            }+                          [ VarFormula+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 22+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 19+                                    , SrcSpan "tests/examples/MinimalPragma.hs" 6 19 6 21+                                    , SrcSpan "tests/examples/MinimalPragma.hs" 6 21 6 22+                                    ]+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 22+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 19+                                       , SrcSpan "tests/examples/MinimalPragma.hs" 6 19 6 21+                                       , SrcSpan "tests/examples/MinimalPragma.hs" 6 21 6 22+                                       ]+                                   }+                                 "==")+                          , VarFormula+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 25 6 29+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/MinimalPragma.hs" 6 25 6 26+                                    , SrcSpan "tests/examples/MinimalPragma.hs" 6 26 6 28+                                    , SrcSpan "tests/examples/MinimalPragma.hs" 6 28 6 29+                                    ]+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MinimalPragma.hs" 6 25 6 29+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/MinimalPragma.hs" 6 25 6 26+                                       , SrcSpan "tests/examples/MinimalPragma.hs" 6 26 6 28+                                       , SrcSpan "tests/examples/MinimalPragma.hs" 6 28 6 29+                                       ]+                                   }+                                 "/=")+                          ])))+             ])+      ]+  , []+  )
+ tests/examples/MinimalPragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MinimalPragma.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+class Eq a where+        (==) :: a -> a -> Bool+        +        (/=) :: a -> a -> Bool+        x == y = not (x /= y)+        x /= y = not (x == y)+        +        {-# MINIMAL (==) | (/=) #-}
+ tests/examples/MultiCtxt.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE RankNTypes #-}++module MultiCtxt where++multipleCtx :: Eq a => (Show a => a)+multipleCtx = undefined
+ tests/examples/MultiCtxt.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiCtxt.hs.parser.golden view
@@ -0,0 +1,231 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/MultiCtxt.hs" 1 1 1 1+            , SrcSpan "tests/examples/MultiCtxt.hs" 3 1 3 1+            , SrcSpan "tests/examples/MultiCtxt.hs" 3 1 3 1+            , SrcSpan "tests/examples/MultiCtxt.hs" 5 1 5 1+            , SrcSpan "tests/examples/MultiCtxt.hs" 6 1 6 1+            , SrcSpan "tests/examples/MultiCtxt.hs" 7 1 7 1+            , SrcSpan "tests/examples/MultiCtxt.hs" 7 1 7 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 3 1 3 23+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/MultiCtxt.hs" 3 1 3 7+                  , SrcSpan "tests/examples/MultiCtxt.hs" 3 18 3 23+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 3 8 3 17+                 , srcInfoPoints = []+                 }+               "MultiCtxt")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 1 1 1 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MultiCtxt.hs" 1 1 1 13+                , SrcSpan "tests/examples/MultiCtxt.hs" 1 25 1 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 1 14 1 24+                , srcInfoPoints = []+                }+              "RankNTypes"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 1 5 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MultiCtxt.hs" 5 13 5 15 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 1 5 12+                , srcInfoPoints = []+                }+              "multipleCtx"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 37+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18+                                    , srcInfoPoints = []+                                    }+                                  "Eq")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 24 5 37+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiCtxt.hs" 5 24 5 25+                      , SrcSpan "tests/examples/MultiCtxt.hs" 5 36 5 37+                      ]+                  }+                (TyForall+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 36+                     , srcInfoPoints = []+                     }+                   Nothing+                   (Just+                      (CxSingle+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]+                           }+                         (TypeA+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]+                              }+                            (TyApp+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]+                                 }+                               (TyCon+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29+                                          , srcInfoPoints = []+                                          }+                                        "Show")))+                               (TyVar+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31+                                       , srcInfoPoints = []+                                       }+                                     "a"))))))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 35 5 36+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 35 5 36+                           , srcInfoPoints = []+                           }+                         "a")))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 1 6 24+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 1 6 12+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 1 6 12+                  , srcInfoPoints = []+                  }+                "multipleCtx"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 13 6 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiCtxt.hs" 6 13 6 14 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 15 6 24+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 15 6 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 15 6 24+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      ]+  , []+  )
+ tests/examples/MultiCtxt.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiCtxt.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE RankNTypes #-}+module MultiCtxt where++multipleCtx :: Eq a => (Show a => a)+multipleCtx = undefined
+ tests/examples/MultiLinePragma.hs view
@@ -0,0 +1,14 @@+{-# OPTIONS_GHC+    -a+    -a+    -a+    -a+    -a+    -a+    -a+    -a+    -a+    -a+    -a #-}+main :: IO ()+main = dat
+ tests/examples/MultiLinePragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiLinePragma.hs.parser.golden view
@@ -0,0 +1,145 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/MultiLinePragma.hs" 1 1 15 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/MultiLinePragma.hs" 1 1 1 1+            , SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 1+            , SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 1+            , SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 1+            , SrcSpan "tests/examples/MultiLinePragma.hs" 14 1 14 1+            , SrcSpan "tests/examples/MultiLinePragma.hs" 15 1 15 1+            , SrcSpan "tests/examples/MultiLinePragma.hs" 15 1 15 1+            ]+        }+      Nothing+      [ OptionsPragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/MultiLinePragma.hs" 1 1 12 11+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MultiLinePragma.hs" 1 1 12 8+                , SrcSpan "tests/examples/MultiLinePragma.hs" 12 8 12 11+                ]+            }+          (Just GHC)+          "\n    -a\n    -a\n    -a\n    -a\n    -a\n    -a\n    -a\n    -a\n    -a\n    -a\n    -a "+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MultiLinePragma.hs" 13 6 13 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 5+                , srcInfoPoints = []+                }+              "main"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/MultiLinePragma.hs" 13 9 13 14+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/MultiLinePragma.hs" 13 9 13 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/MultiLinePragma.hs" 13 9 13 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/MultiLinePragma.hs" 13 9 13 11+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 13+                      , SrcSpan "tests/examples/MultiLinePragma.hs" 13 13 13 14+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 13+                         , SrcSpan "tests/examples/MultiLinePragma.hs" 13 13 13 14+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 13+                            , SrcSpan "tests/examples/MultiLinePragma.hs" 13 13 13 14+                            ]+                        }))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/MultiLinePragma.hs" 14 1 14 11+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/MultiLinePragma.hs" 14 1 14 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/MultiLinePragma.hs" 14 1 14 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/MultiLinePragma.hs" 14 6 14 11+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiLinePragma.hs" 14 6 14 7 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/MultiLinePragma.hs" 14 8 14 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/MultiLinePragma.hs" 14 8 14 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/MultiLinePragma.hs" 14 8 14 11+                        , srcInfoPoints = []+                        }+                      "dat"))))+          Nothing+      ]+  , []+  )
+ tests/examples/MultiLinePragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiLinePragma.hs.prettyprinter.golden view
@@ -0,0 +1,15 @@+{-# OPTIONS_GHC+    -a+    -a+    -a+    -a+    -a+    -a+    -a+    -a+    -a+    -a+    -a #-}++main :: IO ()+main = dat
+ tests/examples/MultiParam.hs view
@@ -0,0 +1,4 @@+module MultiParam where++foo :: MonadError e m => e -> m ()+foo = undefined
+ tests/examples/MultiParam.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiParam.hs.parser.golden view
@@ -0,0 +1,215 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/MultiParam.hs" 1 1 1 1+            , SrcSpan "tests/examples/MultiParam.hs" 1 1 1 1+            , SrcSpan "tests/examples/MultiParam.hs" 3 1 3 1+            , SrcSpan "tests/examples/MultiParam.hs" 4 1 4 1+            , SrcSpan "tests/examples/MultiParam.hs" 5 1 5 1+            , SrcSpan "tests/examples/MultiParam.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 1 1 1 24+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/MultiParam.hs" 1 1 1 7+                  , SrcSpan "tests/examples/MultiParam.hs" 1 19 1 24+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 1 8 1 18+                 , srcInfoPoints = []+                 }+               "MultiParam")+            Nothing+            Nothing))+      []+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 1 3 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MultiParam.hs" 3 5 3 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 1 3 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 35+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18+                                       , srcInfoPoints = []+                                       }+                                     "MonadError")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20+                                    , srcInfoPoints = []+                                    }+                                  "e")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22+                                 , srcInfoPoints = []+                                 }+                               "m"))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 26 3 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiParam.hs" 3 28 3 30 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 26 3 27+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 26 3 27+                        , srcInfoPoints = []+                        }+                      "e"))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 31 3 35+                     , srcInfoPoints = []+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 31 3 32+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 31 3 32+                           , srcInfoPoints = []+                           }+                         "m"))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 33 3 35+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/MultiParam.hs" 3 33 3 34+                            , SrcSpan "tests/examples/MultiParam.hs" 3 34 3 35+                            ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 33 3 35+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/MultiParam.hs" 3 33 3 34+                               , SrcSpan "tests/examples/MultiParam.hs" 3 34 3 35+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 33 3 35+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/MultiParam.hs" 3 33 3 34+                                  , SrcSpan "tests/examples/MultiParam.hs" 3 34 3 35+                                  ]+                              }))))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 1 4 16+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 1 4 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 1 4 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 5 4 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiParam.hs" 4 5 4 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 7 4 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 7 4 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 7 4 16+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      ]+  , []+  )
+ tests/examples/MultiParam.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiParam.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+module MultiParam where++foo :: MonadError e m => e -> m ()+foo = undefined
+ tests/examples/MultiWayIf.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE MultiWayIf #-}+module MultiWayIf where++foo = if | test1 -> e1+         | test2 witharg -> e2+         | otherwise -> def++bar = if { | test1 -> if { | test2 -> e1+                           | test3 -> e2 }+           | test4 -> e3+         }++-- taken from GHC's test suite+x  = 10+x1 = if | x < 10 -> "< 10" | otherwise -> ""+x2 = if | x < 10 -> "< 10"+        | otherwise -> ""+x3 = if | x < 10 -> "< 10"+        | otherwise -> ""+x4 = if | True -> "yes"+x5 = if | True -> if | False -> 1 | True -> 2++x6 = if | x < 10 -> if | True -> "yes"+                       | False -> "no"+        | otherwise -> "maybe"++x7 = (if | True -> 0)++-- issue #98+spam = if | () <- () -> ()
+ tests/examples/MultiWayIf.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiWayIf.hs.parser.golden view
@@ -0,0 +1,1685 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 1 1 31 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/MultiWayIf.hs" 1 1 1 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 2 1 2 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 2 1 2 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 4 1 4 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 8 1 8 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 14 1 14 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 15 1 15 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 16 1 16 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 18 1 18 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 30 1 30 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 31 1 31 1+            , SrcSpan "tests/examples/MultiWayIf.hs" 31 1 31 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 2 1 2 24+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/MultiWayIf.hs" 2 1 2 7+                  , SrcSpan "tests/examples/MultiWayIf.hs" 2 19 2 24+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 2 8 2 18+                 , srcInfoPoints = []+                 }+               "MultiWayIf")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 1 1 1 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/MultiWayIf.hs" 1 1 1 13+                , SrcSpan "tests/examples/MultiWayIf.hs" 1 25 1 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 1 14 1 24+                , srcInfoPoints = []+                }+              "MultiWayIf"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 1 6 28+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 1 4 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 1 4 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 5 6 28+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 4 5 4 6 ]+               }+             (MultiIf+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 7 6 28+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 4 7 4 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 4 10 4 10+                      , SrcSpan "tests/examples/MultiWayIf.hs" 5 10 5 10+                      , SrcSpan "tests/examples/MultiWayIf.hs" 6 10 6 10+                      , SrcSpan "tests/examples/MultiWayIf.hs" 8 1 8 0+                      ]+                  }+                [ GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 10 4 23+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 4 10 4 11+                          , SrcSpan "tests/examples/MultiWayIf.hs" 4 18 4 20+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 12 4 17+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 12 4 17+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 12 4 17+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 12 4 17+                                   , srcInfoPoints = []+                                   }+                                 "test1")))+                    ]+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 21 4 23+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 21 4 23+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 21 4 23+                               , srcInfoPoints = []+                               }+                             "e1")))+                , GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 10 5 31+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 5 10 5 11+                          , SrcSpan "tests/examples/MultiWayIf.hs" 5 26 5 28+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 25+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 25+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 17+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 17+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 17+                                      , srcInfoPoints = []+                                      }+                                    "test2")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 18 5 25+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 18 5 25+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 5 18 5 25+                                      , srcInfoPoints = []+                                      }+                                    "witharg"))))+                    ]+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 29 5 31+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 29 5 31+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 29 5 31+                               , srcInfoPoints = []+                               }+                             "e2")))+                , GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 10 6 28+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 6 10 6 11+                          , SrcSpan "tests/examples/MultiWayIf.hs" 6 22 6 24+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 12 6 21+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 12 6 21+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 12 6 21+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 12 6 21+                                   , srcInfoPoints = []+                                   }+                                 "otherwise")))+                    ]+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 25 6 28+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 25 6 28+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 25 6 28+                               , srcInfoPoints = []+                               }+                             "def")))+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 1 11 11+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 1 8 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 1 8 4+                  , srcInfoPoints = []+                  }+                "bar"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 5 11 11+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 8 5 8 6 ]+               }+             (MultiIf+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 7 11 11+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 8 7 8 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 8 10 8 11+                      , SrcSpan "tests/examples/MultiWayIf.hs" 11 10 11 11+                      ]+                  }+                [ GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 12 9 43+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 8 12 8 13+                          , SrcSpan "tests/examples/MultiWayIf.hs" 8 20 8 22+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 14 8 19+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 14 8 19+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 14 8 19+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 14 8 19+                                   , srcInfoPoints = []+                                   }+                                 "test1")))+                    ]+                    (MultiIf+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 23 9 43+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/MultiWayIf.hs" 8 23 8 25+                             , SrcSpan "tests/examples/MultiWayIf.hs" 8 26 8 27+                             , SrcSpan "tests/examples/MultiWayIf.hs" 9 42 9 43+                             ]+                         }+                       [ GuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 28 8 41+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MultiWayIf.hs" 8 28 8 29+                                 , SrcSpan "tests/examples/MultiWayIf.hs" 8 36 8 38+                                 ]+                             }+                           [ Qualifier+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 30 8 35+                                 , srcInfoPoints = []+                                 }+                               (Var+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 30 8 35+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/MultiWayIf.hs" 8 30 8 35+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/MultiWayIf.hs" 8 30 8 35+                                          , srcInfoPoints = []+                                          }+                                        "test2")))+                           ]+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 39 8 41+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 39 8 41+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 8 39 8 41+                                      , srcInfoPoints = []+                                      }+                                    "e1")))+                       , GuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 28 9 41+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MultiWayIf.hs" 9 28 9 29+                                 , SrcSpan "tests/examples/MultiWayIf.hs" 9 36 9 38+                                 ]+                             }+                           [ Qualifier+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 30 9 35+                                 , srcInfoPoints = []+                                 }+                               (Var+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 30 9 35+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/MultiWayIf.hs" 9 30 9 35+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/MultiWayIf.hs" 9 30 9 35+                                          , srcInfoPoints = []+                                          }+                                        "test3")))+                           ]+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 39 9 41+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 39 9 41+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 9 39 9 41+                                      , srcInfoPoints = []+                                      }+                                    "e2")))+                       ])+                , GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 12 10 25+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 10 12 10 13+                          , SrcSpan "tests/examples/MultiWayIf.hs" 10 20 10 22+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 14 10 19+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 14 10 19+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 14 10 19+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 10 14 10 19+                                   , srcInfoPoints = []+                                   }+                                 "test4")))+                    ]+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 23 10 25+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 23 10 25+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 23 10 25+                               , srcInfoPoints = []+                               }+                             "e3")))+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 1 14 8+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 1 14 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 1 14 2+                  , srcInfoPoints = []+                  }+                "x"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 4 14 8+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 14 4 14 5 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 6 14 8+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 6 14 8+                     , srcInfoPoints = []+                     }+                   10+                   "10")))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 1 15 45+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 1 15 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 1 15 3+                  , srcInfoPoints = []+                  }+                "x1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 4 15 45+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 15 4 15 5 ]+               }+             (MultiIf+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 6 15 45+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 15 6 15 8+                      , SrcSpan "tests/examples/MultiWayIf.hs" 15 9 15 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 16 1 16 0+                      ]+                  }+                [ GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 9 15 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 15 9 15 10+                          , SrcSpan "tests/examples/MultiWayIf.hs" 15 18 15 20+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 17+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 17+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 12+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 12+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 12+                                      , srcInfoPoints = []+                                      }+                                    "x")))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 13 15 14+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 15 13 15 14+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 15 13 15 14+                                      , srcInfoPoints = []+                                      }+                                    "<")))+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 15 15 17+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 15 15 15 17+                                   , srcInfoPoints = []+                                   }+                                 10+                                 "10")))+                    ]+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 21 15 27+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 21 15 27+                            , srcInfoPoints = []+                            }+                          "< 10"+                          "< 10"))+                , GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 28 15 45+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 15 28 15 29+                          , SrcSpan "tests/examples/MultiWayIf.hs" 15 40 15 42+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 30 15 39+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 30 15 39+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 30 15 39+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 15 30 15 39+                                   , srcInfoPoints = []+                                   }+                                 "otherwise")))+                    ]+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 43 15 45+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 43 15 45+                            , srcInfoPoints = []+                            }+                          ""+                          ""))+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 1 17 26+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 1 16 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 1 16 3+                  , srcInfoPoints = []+                  }+                "x2"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 4 17 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 16 4 16 5 ]+               }+             (MultiIf+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 6 17 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 16 6 16 8+                      , SrcSpan "tests/examples/MultiWayIf.hs" 16 9 16 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 17 9 17 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 18 1 18 0+                      ]+                  }+                [ GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 9 16 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 16 9 16 10+                          , SrcSpan "tests/examples/MultiWayIf.hs" 16 18 16 20+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 17+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 17+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 12+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 12+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 12+                                      , srcInfoPoints = []+                                      }+                                    "x")))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 13 16 14+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 16 13 16 14+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 16 13 16 14+                                      , srcInfoPoints = []+                                      }+                                    "<")))+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 15 16 17+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 16 15 16 17+                                   , srcInfoPoints = []+                                   }+                                 10+                                 "10")))+                    ]+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 21 16 27+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 21 16 27+                            , srcInfoPoints = []+                            }+                          "< 10"+                          "< 10"))+                , GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 9 17 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 17 9 17 10+                          , SrcSpan "tests/examples/MultiWayIf.hs" 17 21 17 23+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 11 17 20+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 11 17 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 11 17 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 17 11 17 20+                                   , srcInfoPoints = []+                                   }+                                 "otherwise")))+                    ]+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 24 17 26+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 24 17 26+                            , srcInfoPoints = []+                            }+                          ""+                          ""))+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 1 19 26+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 1 18 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 1 18 3+                  , srcInfoPoints = []+                  }+                "x3"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 4 19 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 18 4 18 5 ]+               }+             (MultiIf+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 6 19 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 18 6 18 8+                      , SrcSpan "tests/examples/MultiWayIf.hs" 18 9 18 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 19 9 19 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 0+                      ]+                  }+                [ GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 9 18 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 18 9 18 10+                          , SrcSpan "tests/examples/MultiWayIf.hs" 18 18 18 20+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 17+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 17+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 12+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 12+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 12+                                      , srcInfoPoints = []+                                      }+                                    "x")))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 13 18 14+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 18 13 18 14+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 18 13 18 14+                                      , srcInfoPoints = []+                                      }+                                    "<")))+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 15 18 17+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 18 15 18 17+                                   , srcInfoPoints = []+                                   }+                                 10+                                 "10")))+                    ]+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 21 18 27+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 21 18 27+                            , srcInfoPoints = []+                            }+                          "< 10"+                          "< 10"))+                , GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 9 19 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 19 9 19 10+                          , SrcSpan "tests/examples/MultiWayIf.hs" 19 21 19 23+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 11 19 20+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 11 19 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 11 19 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 19 11 19 20+                                   , srcInfoPoints = []+                                   }+                                 "otherwise")))+                    ]+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 24 19 26+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 24 19 26+                            , srcInfoPoints = []+                            }+                          ""+                          ""))+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 24+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 3+                  , srcInfoPoints = []+                  }+                "x4"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 4 20 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 20 4 20 5 ]+               }+             (MultiIf+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 6 20 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 20 6 20 8+                      , SrcSpan "tests/examples/MultiWayIf.hs" 20 9 20 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 0+                      ]+                  }+                [ GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 9 20 24+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 20 9 20 10+                          , SrcSpan "tests/examples/MultiWayIf.hs" 20 16 20 18+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 11 20 15+                          , srcInfoPoints = []+                          }+                        (Con+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 11 20 15+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 11 20 15+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 20 11 20 15+                                   , srcInfoPoints = []+                                   }+                                 "True")))+                    ]+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 19 20 24+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 19 20 24+                            , srcInfoPoints = []+                            }+                          "yes"+                          "yes"))+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 46+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 3+                  , srcInfoPoints = []+                  }+                "x5"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 4 21 46+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 21 4 21 5 ]+               }+             (MultiIf+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 6 21 46+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 21 6 21 8+                      , SrcSpan "tests/examples/MultiWayIf.hs" 21 9 21 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 0+                      ]+                  }+                [ GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 9 21 46+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 21 9 21 10+                          , SrcSpan "tests/examples/MultiWayIf.hs" 21 16 21 18+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 11 21 15+                          , srcInfoPoints = []+                          }+                        (Con+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 11 21 15+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 11 21 15+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 21 11 21 15+                                   , srcInfoPoints = []+                                   }+                                 "True")))+                    ]+                    (MultiIf+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 19 21 46+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/MultiWayIf.hs" 21 19 21 21+                             , SrcSpan "tests/examples/MultiWayIf.hs" 21 22 21 22+                             , SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 0+                             ]+                         }+                       [ GuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 22 21 34+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MultiWayIf.hs" 21 22 21 23+                                 , SrcSpan "tests/examples/MultiWayIf.hs" 21 30 21 32+                                 ]+                             }+                           [ Qualifier+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 24 21 29+                                 , srcInfoPoints = []+                                 }+                               (Con+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/MultiWayIf.hs" 21 24 21 29+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/MultiWayIf.hs" 21 24 21 29+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/MultiWayIf.hs" 21 24 21 29+                                          , srcInfoPoints = []+                                          }+                                        "False")))+                           ]+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 33 21 34+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 21 33 21 34+                                   , srcInfoPoints = []+                                   }+                                 1+                                 "1"))+                       , GuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 35 21 46+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MultiWayIf.hs" 21 35 21 36+                                 , SrcSpan "tests/examples/MultiWayIf.hs" 21 42 21 44+                                 ]+                             }+                           [ Qualifier+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 37 21 41+                                 , srcInfoPoints = []+                                 }+                               (Con+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/MultiWayIf.hs" 21 37 21 41+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/MultiWayIf.hs" 21 37 21 41+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/MultiWayIf.hs" 21 37 21 41+                                          , srcInfoPoints = []+                                          }+                                        "True")))+                           ]+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 45 21 46+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 21 45 21 46+                                   , srcInfoPoints = []+                                   }+                                 2+                                 "2"))+                       ])+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 1 25 31+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 3+                  , srcInfoPoints = []+                  }+                "x6"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 4 25 31+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 23 4 23 5 ]+               }+             (MultiIf+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 6 25 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 23 6 23 8+                      , SrcSpan "tests/examples/MultiWayIf.hs" 23 9 23 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 25 9 25 9+                      , SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 0+                      ]+                  }+                [ GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 9 24 39+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 23 9 23 10+                          , SrcSpan "tests/examples/MultiWayIf.hs" 23 18 23 20+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 17+                          , srcInfoPoints = []+                          }+                        (InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 17+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 12+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 12+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 12+                                      , srcInfoPoints = []+                                      }+                                    "x")))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 13 23 14+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 23 13 23 14+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 23 13 23 14+                                      , srcInfoPoints = []+                                      }+                                    "<")))+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 15 23 17+                                , srcInfoPoints = []+                                }+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 23 15 23 17+                                   , srcInfoPoints = []+                                   }+                                 10+                                 "10")))+                    ]+                    (MultiIf+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 21 24 39+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/MultiWayIf.hs" 23 21 23 23+                             , SrcSpan "tests/examples/MultiWayIf.hs" 23 24 23 24+                             , SrcSpan "tests/examples/MultiWayIf.hs" 24 24 24 24+                             , SrcSpan "tests/examples/MultiWayIf.hs" 25 9 25 0+                             ]+                         }+                       [ GuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 24 23 39+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MultiWayIf.hs" 23 24 23 25+                                 , SrcSpan "tests/examples/MultiWayIf.hs" 23 31 23 33+                                 ]+                             }+                           [ Qualifier+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 26 23 30+                                 , srcInfoPoints = []+                                 }+                               (Con+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/MultiWayIf.hs" 23 26 23 30+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/MultiWayIf.hs" 23 26 23 30+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/MultiWayIf.hs" 23 26 23 30+                                          , srcInfoPoints = []+                                          }+                                        "True")))+                           ]+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 34 23 39+                                , srcInfoPoints = []+                                }+                              (String+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 23 34 23 39+                                   , srcInfoPoints = []+                                   }+                                 "yes"+                                 "yes"))+                       , GuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 24 24 24 39+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MultiWayIf.hs" 24 24 24 25+                                 , SrcSpan "tests/examples/MultiWayIf.hs" 24 32 24 34+                                 ]+                             }+                           [ Qualifier+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 24 26 24 31+                                 , srcInfoPoints = []+                                 }+                               (Con+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/MultiWayIf.hs" 24 26 24 31+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/MultiWayIf.hs" 24 26 24 31+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/MultiWayIf.hs" 24 26 24 31+                                          , srcInfoPoints = []+                                          }+                                        "False")))+                           ]+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 24 35 24 39+                                , srcInfoPoints = []+                                }+                              (String+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 24 35 24 39+                                   , srcInfoPoints = []+                                   }+                                 "no"+                                 "no"))+                       ])+                , GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 9 25 31+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 25 9 25 10+                          , SrcSpan "tests/examples/MultiWayIf.hs" 25 21 25 23+                          ]+                      }+                    [ Qualifier+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 11 25 20+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 11 25 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 11 25 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 25 11 25 20+                                   , srcInfoPoints = []+                                   }+                                 "otherwise")))+                    ]+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 24 25 31+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 24 25 31+                            , srcInfoPoints = []+                            }+                          "maybe"+                          "maybe"))+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 22+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 3+                  , srcInfoPoints = []+                  }+                "x7"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 4 27 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 27 4 27 5 ]+               }+             (Paren+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 6 27 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 27 6 27 7+                      , SrcSpan "tests/examples/MultiWayIf.hs" 27 21 27 22+                      ]+                  }+                (MultiIf+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 7 27 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/MultiWayIf.hs" 27 7 27 9+                         , SrcSpan "tests/examples/MultiWayIf.hs" 27 10 27 10+                         , SrcSpan "tests/examples/MultiWayIf.hs" 27 21 27 21+                         ]+                     }+                   [ GuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 10 27 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/MultiWayIf.hs" 27 10 27 11+                             , SrcSpan "tests/examples/MultiWayIf.hs" 27 17 27 19+                             ]+                         }+                       [ Qualifier+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 12 27 16+                             , srcInfoPoints = []+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 12 27 16+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 27 12 27 16+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/MultiWayIf.hs" 27 12 27 16+                                      , srcInfoPoints = []+                                      }+                                    "True")))+                       ]+                       (Lit+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 20 27 21+                            , srcInfoPoints = []+                            }+                          (Int+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 20 27 21+                               , srcInfoPoints = []+                               }+                             0+                             "0"))+                   ])))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 1 30 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 1 30 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 1 30 5+                  , srcInfoPoints = []+                  }+                "spam"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 6 30 27+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/MultiWayIf.hs" 30 6 30 7 ]+               }+             (MultiIf+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 8 30 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/MultiWayIf.hs" 30 8 30 10+                      , SrcSpan "tests/examples/MultiWayIf.hs" 30 11 30 11+                      , SrcSpan "tests/examples/MultiWayIf.hs" 31 1 31 0+                      ]+                  }+                [ GuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 11 30 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/MultiWayIf.hs" 30 11 30 12+                          , SrcSpan "tests/examples/MultiWayIf.hs" 30 22 30 24+                          ]+                      }+                    [ Generator+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 21+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/MultiWayIf.hs" 30 16 30 18 ]+                          }+                        (PApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 15+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 14+                                 , SrcSpan "tests/examples/MultiWayIf.hs" 30 14 30 15+                                 ]+                             }+                           (Special+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 15+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 14+                                    , SrcSpan "tests/examples/MultiWayIf.hs" 30 14 30 15+                                    ]+                                }+                              (UnitCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 15+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 14+                                       , SrcSpan "tests/examples/MultiWayIf.hs" 30 14 30 15+                                       ]+                                   }))+                           [])+                        (Con+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 21+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 20+                                 , SrcSpan "tests/examples/MultiWayIf.hs" 30 20 30 21+                                 ]+                             }+                           (Special+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 21+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 20+                                    , SrcSpan "tests/examples/MultiWayIf.hs" 30 20 30 21+                                    ]+                                }+                              (UnitCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 21+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 20+                                       , SrcSpan "tests/examples/MultiWayIf.hs" 30 20 30 21+                                       ]+                                   })))+                    ]+                    (Con+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 26+                             , SrcSpan "tests/examples/MultiWayIf.hs" 30 26 30 27+                             ]+                         }+                       (Special+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 27+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 26+                                , SrcSpan "tests/examples/MultiWayIf.hs" 30 26 30 27+                                ]+                            }+                          (UnitCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 27+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 26+                                   , SrcSpan "tests/examples/MultiWayIf.hs" 30 26 30 27+                                   ]+                               })))+                ]))+          Nothing+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/MultiWayIf.hs" 13 1 13 31)+        " taken from GHC's test suite"+    , Comment+        False+        (SrcSpan "tests/examples/MultiWayIf.hs" 29 1 29 13)+        " issue #98"+    ]+  )
+ tests/examples/MultiWayIf.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiWayIf.hs.prettyprinter.golden view
@@ -0,0 +1,33 @@+{-# LANGUAGE MultiWayIf #-}+module MultiWayIf where+foo+  = if | test1 -> e1+       | test2 witharg -> e2+       | otherwise -> def+bar+  = if | test1 ->+         if | test2 -> e1+            | test3 -> e2+       | test4 -> e3+x = 10+x1+  = if | x < 10 -> "< 10"+       | otherwise -> ""+x2+  = if | x < 10 -> "< 10"+       | otherwise -> ""+x3+  = if | x < 10 -> "< 10"+       | otherwise -> ""+x4 = if | True -> "yes"+x5+  = if | True ->+         if | False -> 1+            | True -> 2+x6+  = if | x < 10 ->+         if | True -> "yes"+            | False -> "no"+       | otherwise -> "maybe"+x7 = (if | True -> 0)+spam = if | () <- () -> ()
+ tests/examples/NPlusK.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE NPlusKPatterns #-}++f (n+3) = n
+ tests/examples/NPlusK.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NPlusK.hs.parser.golden view
@@ -0,0 +1,97 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/NPlusK.hs" 1 1 1 1+            , SrcSpan "tests/examples/NPlusK.hs" 3 1 3 1+            , SrcSpan "tests/examples/NPlusK.hs" 3 1 3 1+            , SrcSpan "tests/examples/NPlusK.hs" 3 1 3 1+            , SrcSpan "tests/examples/NPlusK.hs" 4 1 4 1+            , SrcSpan "tests/examples/NPlusK.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/NPlusK.hs" 1 1 1 13+                , SrcSpan "tests/examples/NPlusK.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "NPlusKPatterns"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 1 3 12+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 1 3 12+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 1 3 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 3 3 8+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/NPlusK.hs" 3 3 3 4+                        , SrcSpan "tests/examples/NPlusK.hs" 3 7 3 8+                        ]+                    }+                  (PNPlusK+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 4 3 7+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/NPlusK.hs" 3 5 3 6+                           , SrcSpan "tests/examples/NPlusK.hs" 3 6 3 7+                           ]+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 4 3 5+                          , srcInfoPoints = []+                          }+                        "n")+                     3)+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 9 3 12+                   , srcInfoPoints = [ SrcSpan "tests/examples/NPlusK.hs" 3 9 3 10 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 11 3 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 11 3 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 11 3 12+                            , srcInfoPoints = []+                            }+                          "n"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/NPlusK.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NPlusK.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE NPlusKPatterns #-}+f (n + 3) = n
+ tests/examples/NegPrimWordLiteral.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE MagicHash #-}+dummyWord = W# (-0x8000000000000000##)
+ tests/examples/NegPrimWordLiteral.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NegPrimWordLiteral.hs" 3 1) "Parse error: negative primitive word literal: - 9223372036854775808##"
+ tests/examples/NegPrimWordLiteral.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/NegPrimWordLiteral.hs" 3 1)+  "Parse error: negative primitive word literal: - 9223372036854775808##"
+ tests/examples/NegPrimWordLiteral.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NegPrimWordLiteral.hs" 3 1) "Parse error: negative primitive word literal: - 9223372036854775808##"
+ tests/examples/NegPrimWordLiteral.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NegPrimWordLiteral.hs" 3 1) "Parse error: negative primitive word literal: - 9223372036854775808##"
+ tests/examples/NegativePatterns.hs view
@@ -0,0 +1,15 @@+f 1 = -1+f (-1) = 1+f ( - 2) = 2+f (  -  3) = 3++data Z a = Higher a a | Same a a | Lower a a++infixr 7 `Higher`+infixr 6 `Same`+infixr 5 `Lower`++g :: Z Int -> ()+g (   -1 `Higher`  x) = ()+g (  -  2 `Same`   x) = ()+g ( -    3 `Lower` x) = ()
+ tests/examples/NegativePatterns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NegativePatterns.hs.parser.golden view
@@ -0,0 +1,1052 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/NegativePatterns.hs" 1 1 16 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 2 1 2 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 3 1 3 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 4 1 4 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 6 1 6 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 8 1 8 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 9 1 9 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 10 1 10 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 12 1 12 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 13 1 13 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 14 1 14 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 15 1 15 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 16 1 16 1+            , SrcSpan "tests/examples/NegativePatterns.hs" 16 1 16 1+            ]+        }+      Nothing+      []+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/NegativePatterns.hs" 1 1 4 15+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 9+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PLit+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/NegativePatterns.hs" 1 3 1 4+                    , srcInfoPoints = []+                    }+                  (Signless+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 1 3 1 4+                       , srcInfoPoints = []+                       })+                  (Int+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 1 3 1 4+                       , srcInfoPoints = []+                       }+                     1+                     "1")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 1 5 1 9+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 1 5 1 6 ]+                   }+                 (NegApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 1 7 1 9+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/NegativePatterns.hs" 1 7 1 8 ]+                      }+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/NegativePatterns.hs" 1 8 1 9+                         , srcInfoPoints = []+                         }+                       (Int+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/NegativePatterns.hs" 1 8 1 9+                            , srcInfoPoints = []+                            }+                          1+                          "1"))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 2 1 2 11+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 2 1 2 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/NegativePatterns.hs" 2 3 2 7+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/NegativePatterns.hs" 2 3 2 4+                        , SrcSpan "tests/examples/NegativePatterns.hs" 2 6 2 7+                        ]+                    }+                  (PLit+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 2 4 2 6+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/NegativePatterns.hs" 2 4 2 5 ]+                       }+                     (Negative+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 2 4 2 5+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/NegativePatterns.hs" 2 4 2 5 ]+                          })+                     (Int+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 2 5 2 6+                          , srcInfoPoints = []+                          }+                        1+                        "1"))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 2 8 2 11+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 2 8 2 9 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 2 10 2 11+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/NegativePatterns.hs" 2 10 2 11+                         , srcInfoPoints = []+                         }+                       1+                       "1")))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 3 1 3 13+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 3 1 3 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/NegativePatterns.hs" 3 3 3 9+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/NegativePatterns.hs" 3 3 3 4+                        , SrcSpan "tests/examples/NegativePatterns.hs" 3 8 3 9+                        ]+                    }+                  (PLit+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 3 5 3 8+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/NegativePatterns.hs" 3 5 3 6 ]+                       }+                     (Negative+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 3 5 3 6+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/NegativePatterns.hs" 3 5 3 6 ]+                          })+                     (Int+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 3 7 3 8+                          , srcInfoPoints = []+                          }+                        2+                        "2"))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 3 10 3 13+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 3 10 3 11 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 3 12 3 13+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/NegativePatterns.hs" 3 12 3 13+                         , srcInfoPoints = []+                         }+                       2+                       "2")))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 4 1 4 15+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 4 1 4 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/NegativePatterns.hs" 4 3 4 11+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/NegativePatterns.hs" 4 3 4 4+                        , SrcSpan "tests/examples/NegativePatterns.hs" 4 10 4 11+                        ]+                    }+                  (PLit+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 4 6 4 10+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/NegativePatterns.hs" 4 6 4 7 ]+                       }+                     (Negative+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 4 6 4 7+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/NegativePatterns.hs" 4 6 4 7 ]+                          })+                     (Int+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 4 9 4 10+                          , srcInfoPoints = []+                          }+                        3+                        "3"))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 4 12 4 15+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 4 12 4 13 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 4 14 4 15+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/NegativePatterns.hs" 4 14 4 15+                         , srcInfoPoints = []+                         }+                       3+                       "3")))+              Nothing+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/NegativePatterns.hs" 6 1 6 45+            , srcInfoPoints =+                [ SrcSpan "tests/examples/NegativePatterns.hs" 6 10 6 11+                , SrcSpan "tests/examples/NegativePatterns.hs" 6 23 6 24+                , SrcSpan "tests/examples/NegativePatterns.hs" 6 34 6 35+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/NegativePatterns.hs" 6 1 6 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/NegativePatterns.hs" 6 6 6 9+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/NegativePatterns.hs" 6 6 6 7+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/NegativePatterns.hs" 6 6 6 7+                     , srcInfoPoints = []+                     }+                   "Z"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/NegativePatterns.hs" 6 8 6 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/NegativePatterns.hs" 6 8 6 9+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 6 12 6 22+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 6 12 6 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 6 12 6 18+                      , srcInfoPoints = []+                      }+                    "Higher")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 6 19 6 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 6 19 6 20+                          , srcInfoPoints = []+                          }+                        "a")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 6 21 6 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 6 21 6 22+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          , QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 6 25 6 33+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 6 25 6 33+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 6 25 6 29+                      , srcInfoPoints = []+                      }+                    "Same")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 6 30 6 31+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 6 30 6 31+                          , srcInfoPoints = []+                          }+                        "a")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 6 32 6 33+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 6 32 6 33+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          , QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 6 36 6 45+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 6 36 6 45+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 6 36 6 41+                      , srcInfoPoints = []+                      }+                    "Lower")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 6 42 6 43+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 6 42 6 43+                          , srcInfoPoints = []+                          }+                        "a")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 6 44 6 45+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 6 44 6 45+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , InfixDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/NegativePatterns.hs" 8 1 8 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/NegativePatterns.hs" 8 8 8 9 ]+            }+          (AssocRight+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/NegativePatterns.hs" 8 1 8 7+               , srcInfoPoints = []+               })+          (Just 7)+          [ ConOp+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 8 10 8 18+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/NegativePatterns.hs" 8 10 8 11+                    , SrcSpan "tests/examples/NegativePatterns.hs" 8 11 8 17+                    , SrcSpan "tests/examples/NegativePatterns.hs" 8 17 8 18+                    ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 8 10 8 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 8 10 8 11+                       , SrcSpan "tests/examples/NegativePatterns.hs" 8 11 8 17+                       , SrcSpan "tests/examples/NegativePatterns.hs" 8 17 8 18+                       ]+                   }+                 "Higher")+          ]+      , InfixDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/NegativePatterns.hs" 9 1 9 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/NegativePatterns.hs" 9 8 9 9 ]+            }+          (AssocRight+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/NegativePatterns.hs" 9 1 9 7+               , srcInfoPoints = []+               })+          (Just 6)+          [ ConOp+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 9 10 9 16+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/NegativePatterns.hs" 9 10 9 11+                    , SrcSpan "tests/examples/NegativePatterns.hs" 9 11 9 15+                    , SrcSpan "tests/examples/NegativePatterns.hs" 9 15 9 16+                    ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 9 10 9 16+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 9 10 9 11+                       , SrcSpan "tests/examples/NegativePatterns.hs" 9 11 9 15+                       , SrcSpan "tests/examples/NegativePatterns.hs" 9 15 9 16+                       ]+                   }+                 "Same")+          ]+      , InfixDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/NegativePatterns.hs" 10 1 10 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/NegativePatterns.hs" 10 8 10 9 ]+            }+          (AssocRight+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/NegativePatterns.hs" 10 1 10 7+               , srcInfoPoints = []+               })+          (Just 5)+          [ ConOp+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 10 10 10 17+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/NegativePatterns.hs" 10 10 10 11+                    , SrcSpan "tests/examples/NegativePatterns.hs" 10 11 10 16+                    , SrcSpan "tests/examples/NegativePatterns.hs" 10 16 10 17+                    ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 10 10 10 17+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 10 10 10 11+                       , SrcSpan "tests/examples/NegativePatterns.hs" 10 11 10 16+                       , SrcSpan "tests/examples/NegativePatterns.hs" 10 16 10 17+                       ]+                   }+                 "Lower")+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/NegativePatterns.hs" 12 1 12 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/NegativePatterns.hs" 12 3 12 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 12 1 12 2+                , srcInfoPoints = []+                }+              "g"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/NegativePatterns.hs" 12 12 12 14 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 11+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 7+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 7+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 7+                           , srcInfoPoints = []+                           }+                         "Z")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/NegativePatterns.hs" 12 8 12 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/NegativePatterns.hs" 12 8 12 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/NegativePatterns.hs" 12 8 12 11+                           , srcInfoPoints = []+                           }+                         "Int"))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 17+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 16+                      , SrcSpan "tests/examples/NegativePatterns.hs" 12 16 12 17+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 16+                         , SrcSpan "tests/examples/NegativePatterns.hs" 12 16 12 17+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 16+                            , SrcSpan "tests/examples/NegativePatterns.hs" 12 16 12 17+                            ]+                        }))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/NegativePatterns.hs" 13 1 15 27+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 13 1 13 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 13 1 13 2+                   , srcInfoPoints = []+                   }+                 "g")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/NegativePatterns.hs" 13 3 13 22+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/NegativePatterns.hs" 13 3 13 4+                        , SrcSpan "tests/examples/NegativePatterns.hs" 13 21 13 22+                        ]+                    }+                  (PInfixApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 21+                       , srcInfoPoints = []+                       }+                     (PLit+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 9+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 8 ]+                          }+                        (Negative+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 8+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 8 ]+                             })+                        (Int+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 13 8 13 9+                             , srcInfoPoints = []+                             }+                           1+                           "1"))+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 13 10 13 18+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/NegativePatterns.hs" 13 10 13 11+                              , SrcSpan "tests/examples/NegativePatterns.hs" 13 11 13 17+                              , SrcSpan "tests/examples/NegativePatterns.hs" 13 17 13 18+                              ]+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 13 11 13 17+                             , srcInfoPoints = []+                             }+                           "Higher"))+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 13 20 13 21+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 13 20 13 21+                             , srcInfoPoints = []+                             }+                           "x")))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 13 23 13 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 13 23 13 24 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 26+                          , SrcSpan "tests/examples/NegativePatterns.hs" 13 26 13 27+                          ]+                      }+                    (Special+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 26+                             , SrcSpan "tests/examples/NegativePatterns.hs" 13 26 13 27+                             ]+                         }+                       (UnitCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 27+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 26+                                , SrcSpan "tests/examples/NegativePatterns.hs" 13 26 13 27+                                ]+                            }))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 14 1 14 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 14 1 14 2+                   , srcInfoPoints = []+                   }+                 "g")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/NegativePatterns.hs" 14 3 14 22+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/NegativePatterns.hs" 14 3 14 4+                        , SrcSpan "tests/examples/NegativePatterns.hs" 14 21 14 22+                        ]+                    }+                  (PInfixApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 21+                       , srcInfoPoints = []+                       }+                     (PLit+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 10+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 7 ]+                          }+                        (Negative+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 7+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 7 ]+                             })+                        (Int+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 14 9 14 10+                             , srcInfoPoints = []+                             }+                           2+                           "2"))+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 14 11 14 17+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/NegativePatterns.hs" 14 11 14 12+                              , SrcSpan "tests/examples/NegativePatterns.hs" 14 12 14 16+                              , SrcSpan "tests/examples/NegativePatterns.hs" 14 16 14 17+                              ]+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 14 12 14 16+                             , srcInfoPoints = []+                             }+                           "Same"))+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 14 20 14 21+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 14 20 14 21+                             , srcInfoPoints = []+                             }+                           "x")))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 14 23 14 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 14 23 14 24 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 26+                          , SrcSpan "tests/examples/NegativePatterns.hs" 14 26 14 27+                          ]+                      }+                    (Special+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 26+                             , SrcSpan "tests/examples/NegativePatterns.hs" 14 26 14 27+                             ]+                         }+                       (UnitCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 27+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 26+                                , SrcSpan "tests/examples/NegativePatterns.hs" 14 26 14 27+                                ]+                            }))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/NegativePatterns.hs" 15 1 15 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 15 1 15 2+                   , srcInfoPoints = []+                   }+                 "g")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/NegativePatterns.hs" 15 3 15 22+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/NegativePatterns.hs" 15 3 15 4+                        , SrcSpan "tests/examples/NegativePatterns.hs" 15 21 15 22+                        ]+                    }+                  (PInfixApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 21+                       , srcInfoPoints = []+                       }+                     (PLit+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 11+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 6 ]+                          }+                        (Negative+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 6+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 6 ]+                             })+                        (Int+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 15 10 15 11+                             , srcInfoPoints = []+                             }+                           3+                           "3"))+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 15 12 15 19+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/NegativePatterns.hs" 15 12 15 13+                              , SrcSpan "tests/examples/NegativePatterns.hs" 15 13 15 18+                              , SrcSpan "tests/examples/NegativePatterns.hs" 15 18 15 19+                              ]+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 15 13 15 18+                             , srcInfoPoints = []+                             }+                           "Lower"))+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/NegativePatterns.hs" 15 20 15 21+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/NegativePatterns.hs" 15 20 15 21+                             , srcInfoPoints = []+                             }+                           "x")))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/NegativePatterns.hs" 15 23 15 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NegativePatterns.hs" 15 23 15 24 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 26+                          , SrcSpan "tests/examples/NegativePatterns.hs" 15 26 15 27+                          ]+                      }+                    (Special+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 26+                             , SrcSpan "tests/examples/NegativePatterns.hs" 15 26 15 27+                             ]+                         }+                       (UnitCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 27+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 26+                                , SrcSpan "tests/examples/NegativePatterns.hs" 15 26 15 27+                                ]+                            }))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/NegativePatterns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NegativePatterns.hs.prettyprinter.golden view
@@ -0,0 +1,19 @@+f 1 = -1+f (-1) = 1+f (-2) = 2+f (-3) = 3++data Z a = Higher a a+         | Same a a+         | Lower a a++infixr 7 `Higher`++infixr 6 `Same`++infixr 5 `Lower`++g :: Z Int -> ()+g (-1 `Higher` x) = ()+g (-2 `Same` x) = ()+g (-3 `Lower` x) = ()
+ tests/examples/NestedAsPat.hs view
@@ -0,0 +1,3 @@+module NestedAsPat where++nestedAsPat [x@(Just _)] = undefined
+ tests/examples/NestedAsPat.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NestedAsPat.hs.parser.golden view
@@ -0,0 +1,127 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/NestedAsPat.hs" 1 1 1 1+            , SrcSpan "tests/examples/NestedAsPat.hs" 1 1 1 1+            , SrcSpan "tests/examples/NestedAsPat.hs" 3 1 3 1+            , SrcSpan "tests/examples/NestedAsPat.hs" 4 1 4 1+            , SrcSpan "tests/examples/NestedAsPat.hs" 4 1 4 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 1 1 1 25+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/NestedAsPat.hs" 1 1 1 7+                  , SrcSpan "tests/examples/NestedAsPat.hs" 1 20 1 25+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 1 8 1 19+                 , srcInfoPoints = []+                 }+               "NestedAsPat")+            Nothing+            Nothing))+      []+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 1 3 37+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 1 3 37+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 1 3 12+                   , srcInfoPoints = []+                   }+                 "nestedAsPat")+              [ PList+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 13 3 25+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/NestedAsPat.hs" 3 13 3 14+                        , SrcSpan "tests/examples/NestedAsPat.hs" 3 24 3 25+                        ]+                    }+                  [ PAsPat+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 14 3 24+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/NestedAsPat.hs" 3 15 3 16 ]+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 14 3 15+                           , srcInfoPoints = []+                           }+                         "x")+                      (PParen+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 16 3 24+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/NestedAsPat.hs" 3 16 3 17+                               , SrcSpan "tests/examples/NestedAsPat.hs" 3 23 3 24+                               ]+                           }+                         (PApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 17 3 23+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 17 3 21+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/NestedAsPat.hs" 3 17 3 21+                                    , srcInfoPoints = []+                                    }+                                  "Just"))+                            [ PWildCard+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 22 3 23+                                  , srcInfoPoints = []+                                  }+                            ]))+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 26 3 37+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/NestedAsPat.hs" 3 26 3 27 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 28 3 37+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 28 3 37+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 28 3 37+                            , srcInfoPoints = []+                            }+                          "undefined"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/NestedAsPat.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NestedAsPat.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module NestedAsPat where+nestedAsPat [x@(Just _)] = undefined
+ tests/examples/NoStartNumIdents.hs view
@@ -0,0 +1,1 @@+1a = ()
+ tests/examples/NoStartNumIdents.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
+ tests/examples/NoStartNumIdents.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1)+  "Parse error in pattern: 1"
+ tests/examples/NoStartNumIdents.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
+ tests/examples/NoStartNumIdents.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
+ tests/examples/NonDecreasing.hs view
@@ -0,0 +1,9 @@+module NonDecreasing where++-- This should not work unless NondecreasingIndentation is+-- on (which is is by default in GHC)+main = do+  print 16+  do+  print 17+  print 18
+ tests/examples/NonDecreasing.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NonDecreasing.hs" 8 3) "Parse error: Last statement in a do-block must be an expression"
+ tests/examples/NonDecreasing.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/NonDecreasing.hs" 8 3)+  "Parse error: Last statement in a do-block must be an expression"
+ tests/examples/NonDecreasing.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NonDecreasing.hs" 8 3) "Parse error: Last statement in a do-block must be an expression"
+ tests/examples/NonDecreasing.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NonDecreasing.hs" 8 3) "Parse error: Last statement in a do-block must be an expression"
+ tests/examples/Nounpack2.hs view
@@ -0,0 +1,3 @@+++data Foo = Foo {-# NOUNPACK #-} Int
+ tests/examples/Nounpack2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Nounpack2.hs.parser.golden view
@@ -0,0 +1,96 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 1+            , SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 1+            , SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 1+            , SrcSpan "tests/examples/Nounpack2.hs" 4 1 4 1+            , SrcSpan "tests/examples/Nounpack2.hs" 4 1 4 1+            ]+        }+      Nothing+      []+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Nounpack2.hs" 3 10 3 11 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 6 3 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 6 3 9+                  , srcInfoPoints = []+                  }+                "Foo"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 12 3 36+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 12 3 36+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 12 3 15+                      , srcInfoPoints = []+                      }+                    "Foo")+                 [ TyBang+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 16 3 36+                       , srcInfoPoints = []+                       }+                     (NoStrictAnnot+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+                          , srcInfoPoints = []+                          })+                     (NoUnpack+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 16 3 32+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Nounpack2.hs" 3 16 3 28+                              , SrcSpan "tests/examples/Nounpack2.hs" 3 29 3 32+                              ]+                          })+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 33 3 36+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 33 3 36+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 33 3 36+                                , srcInfoPoints = []+                                }+                              "Int")))+                 ])+          ]+          []+      ]+  , []+  )
+ tests/examples/Nounpack2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Nounpack2.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+data Foo = Foo {-# NOUNPACK #-} Int
+ tests/examples/OptionsPragma.hs view
@@ -0,0 +1,2 @@+{-# OPTIONS -fno-warn-orphans #-}+
+ tests/examples/OptionsPragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/OptionsPragma.hs.parser.golden view
@@ -0,0 +1,28 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/OptionsPragma.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/OptionsPragma.hs" 1 1 1 1+            , SrcSpan "tests/examples/OptionsPragma.hs" 3 1 3 1+            , SrcSpan "tests/examples/OptionsPragma.hs" 3 1 3 1+            , SrcSpan "tests/examples/OptionsPragma.hs" 3 1 3 1+            , SrcSpan "tests/examples/OptionsPragma.hs" 3 1 3 1+            ]+        }+      Nothing+      [ OptionsPragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/OptionsPragma.hs" 1 1 1 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/OptionsPragma.hs" 1 1 1 31+                , SrcSpan "tests/examples/OptionsPragma.hs" 1 31 1 34+                ]+            }+          Nothing+          "-fno-warn-orphans "+      ]+      []+      []+  , []+  )
+ tests/examples/OptionsPragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/OptionsPragma.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+{-# OPTIONS -fno-warn-orphans #-}
+ tests/examples/Overlapable.hs view
@@ -0,0 +1,6 @@+instance {-# OVERLAP #-} C a++instance {-# NO_OVERLAP #-} C a++instance {-# INCOHERENT #-} C a+
+ tests/examples/Overlapable.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Overlapable.hs.parser.golden view
@@ -0,0 +1,176 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Overlapable.hs" 1 1 1 1+            , SrcSpan "tests/examples/Overlapable.hs" 1 1 1 1+            , SrcSpan "tests/examples/Overlapable.hs" 1 1 1 1+            , SrcSpan "tests/examples/Overlapable.hs" 3 1 3 1+            , SrcSpan "tests/examples/Overlapable.hs" 5 1 5 1+            , SrcSpan "tests/examples/Overlapable.hs" 7 1 7 1+            , SrcSpan "tests/examples/Overlapable.hs" 7 1 7 1+            ]+        }+      Nothing+      []+      []+      [ InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapable.hs" 1 1 1 9 ]+            }+          (Just+             (Overlap+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 10 1 21+                  , srcInfoPoints = []+                  }))+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 29+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 29+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 27+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 27+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 27+                           , srcInfoPoints = []+                           }+                         "C")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 28 1 29+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 28 1 29+                        , srcInfoPoints = []+                        }+                      "a"))))+          Nothing+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 1 3 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapable.hs" 3 1 3 9 ]+            }+          (Just+             (NoOverlap+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 10 3 24+                  , srcInfoPoints = []+                  }))+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 32+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 32+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 30+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 30+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 30+                           , srcInfoPoints = []+                           }+                         "C")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 31 3 32+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 31 3 32+                        , srcInfoPoints = []+                        }+                      "a"))))+          Nothing+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 1 5 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapable.hs" 5 1 5 9 ]+            }+          (Just+             (Incoherent+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 10 5 24+                  , srcInfoPoints = []+                  }))+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 32+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 32+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 30+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 30+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 30+                           , srcInfoPoints = []+                           }+                         "C")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 31 5 32+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 31 5 32+                        , srcInfoPoints = []+                        }+                      "a"))))+          Nothing+      ]+  , []+  )
+ tests/examples/Overlapable.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Overlapable.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+instance {-# OVERLAP #-} C a++instance {-# NO_OVERLAP #-} C a++instance {-# INCOHERENT #-} C a
+ tests/examples/Overlapping.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE MultiParamTypeClasses #-}++module Overlapping where++class C a b where+  f :: a -> b -> Bool++instance C a b where+  f _ _ = False++instance {-# OVERLAPPING #-} C a a where+  f _ _ = True++instance {-# OVERLAPS #-} C a a where+  f _ _ = True++instance {-# OVERLAPPABLE #-} C a a where+  f _ _ = True++-- >>> f 'a' 'b'+-- True+--+-- >>> f 'a' "starfish"+-- False
+ tests/examples/Overlapping.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Overlapping.hs.parser.golden view
@@ -0,0 +1,730 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 1 1 26 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Overlapping.hs" 1 1 1 1+            , SrcSpan "tests/examples/Overlapping.hs" 2 1 2 1+            , SrcSpan "tests/examples/Overlapping.hs" 4 1 4 1+            , SrcSpan "tests/examples/Overlapping.hs" 4 1 4 1+            , SrcSpan "tests/examples/Overlapping.hs" 6 1 6 1+            , SrcSpan "tests/examples/Overlapping.hs" 9 1 9 1+            , SrcSpan "tests/examples/Overlapping.hs" 12 1 12 1+            , SrcSpan "tests/examples/Overlapping.hs" 15 1 15 1+            , SrcSpan "tests/examples/Overlapping.hs" 18 1 18 1+            , SrcSpan "tests/examples/Overlapping.hs" 26 1 26 1+            , SrcSpan "tests/examples/Overlapping.hs" 26 1 26 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 4 1 4 25+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/Overlapping.hs" 4 1 4 7+                  , SrcSpan "tests/examples/Overlapping.hs" 4 20 4 25+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 4 8 4 19+                 , srcInfoPoints = []+                 }+               "Overlapping")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 1 1 1 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapping.hs" 1 1 1 13+                , SrcSpan "tests/examples/Overlapping.hs" 1 36 1 39+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 1 14 1 31+                , srcInfoPoints = []+                }+              "FlexibleInstances"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 2 1 2 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapping.hs" 2 1 2 13+                , SrcSpan "tests/examples/Overlapping.hs" 2 36 2 39+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 2 14 2 35+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          ]+      ]+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 1 7 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapping.hs" 6 1 6 6+                , SrcSpan "tests/examples/Overlapping.hs" 6 13 6 18+                , SrcSpan "tests/examples/Overlapping.hs" 7 3 7 3+                , SrcSpan "tests/examples/Overlapping.hs" 9 1 9 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 7 6 12+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 7 6 10+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 7 6 8+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 7 6 8+                        , srcInfoPoints = []+                        }+                      "C"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 9 6 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 9 6 10+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 11 6 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 11 6 12+                     , srcInfoPoints = []+                     }+                   "b")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 3 7 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Overlapping.hs" 7 5 7 7 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 3 7 22+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Overlapping.hs" 7 5 7 7 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 3 7 4+                          , srcInfoPoints = []+                          }+                        "f"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 8 7 22+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Overlapping.hs" 7 10 7 12 ]+                         }+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 8 7 9+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 8 7 9+                               , srcInfoPoints = []+                               }+                             "a"))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 13 7 22+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Overlapping.hs" 7 15 7 17 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 13 7 14+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 13 7 14+                                  , srcInfoPoints = []+                                  }+                                "b"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 18 7 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 18 7 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/Overlapping.hs" 7 18 7 22+                                     , srcInfoPoints = []+                                     }+                                   "Bool"))))))+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 1 12 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapping.hs" 9 1 9 9+                , SrcSpan "tests/examples/Overlapping.hs" 9 16 9 21+                , SrcSpan "tests/examples/Overlapping.hs" 10 3 10 3+                , SrcSpan "tests/examples/Overlapping.hs" 12 1 12 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 15+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 15+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 13+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 11+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 11+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 11+                              , srcInfoPoints = []+                              }+                            "C")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 12 9 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 12 9 13+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 14 9 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 14 9 15+                        , srcInfoPoints = []+                        }+                      "b"))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 3 10 16+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 3 10 16+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 3 10 16+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 3 10 4+                             , srcInfoPoints = []+                             }+                           "f")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 5 10 6+                              , srcInfoPoints = []+                              }+                        , PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 7 10 8+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 9 10 16+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Overlapping.hs" 10 9 10 10 ]+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 11 10 16+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Overlapping.hs" 10 11 10 16+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Overlapping.hs" 10 11 10 16+                                      , srcInfoPoints = []+                                      }+                                    "False"))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 1 15 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapping.hs" 12 1 12 9+                , SrcSpan "tests/examples/Overlapping.hs" 12 36 12 41+                , SrcSpan "tests/examples/Overlapping.hs" 13 3 13 3+                , SrcSpan "tests/examples/Overlapping.hs" 15 1 15 0+                ]+            }+          (Just+             (Overlapping+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 10 12 25+                  , srcInfoPoints = []+                  }))+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 35+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 35+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 33+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 31+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 31+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 31+                              , srcInfoPoints = []+                              }+                            "C")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 32 12 33+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 32 12 33+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 34 12 35+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 34 12 35+                        , srcInfoPoints = []+                        }+                      "a"))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 3 13 15+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 3 13 15+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 3 13 15+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 3 13 4+                             , srcInfoPoints = []+                             }+                           "f")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 5 13 6+                              , srcInfoPoints = []+                              }+                        , PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 7 13 8+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 9 13 15+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Overlapping.hs" 13 9 13 10 ]+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 11 13 15+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Overlapping.hs" 13 11 13 15+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Overlapping.hs" 13 11 13 15+                                      , srcInfoPoints = []+                                      }+                                    "True"))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 1 18 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapping.hs" 15 1 15 9+                , SrcSpan "tests/examples/Overlapping.hs" 15 33 15 38+                , SrcSpan "tests/examples/Overlapping.hs" 16 3 16 3+                , SrcSpan "tests/examples/Overlapping.hs" 18 1 18 0+                ]+            }+          (Just+             (Overlaps+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 10 15 22+                  , srcInfoPoints = []+                  }))+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 32+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 32+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 30+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 28+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 28+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 28+                              , srcInfoPoints = []+                              }+                            "C")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 29 15 30+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 29 15 30+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 31 15 32+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 31 15 32+                        , srcInfoPoints = []+                        }+                      "a"))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 3 16 15+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 3 16 15+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 3 16 15+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 3 16 4+                             , srcInfoPoints = []+                             }+                           "f")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 5 16 6+                              , srcInfoPoints = []+                              }+                        , PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 7 16 8+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 9 16 15+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Overlapping.hs" 16 9 16 10 ]+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 11 16 15+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Overlapping.hs" 16 11 16 15+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Overlapping.hs" 16 11 16 15+                                      , srcInfoPoints = []+                                      }+                                    "True"))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 1 26 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Overlapping.hs" 18 1 18 9+                , SrcSpan "tests/examples/Overlapping.hs" 18 37 18 42+                , SrcSpan "tests/examples/Overlapping.hs" 19 3 19 3+                , SrcSpan "tests/examples/Overlapping.hs" 26 1 26 0+                ]+            }+          (Just+             (Overlappable+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 10 18 26+                  , srcInfoPoints = []+                  }))+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 36+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 36+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 34+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 32+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 32+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 32+                              , srcInfoPoints = []+                              }+                            "C")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 33 18 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 33 18 34+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 35 18 36+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 35 18 36+                        , srcInfoPoints = []+                        }+                      "a"))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 3 19 15+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 3 19 15+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 3 19 15+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 3 19 4+                             , srcInfoPoints = []+                             }+                           "f")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 5 19 6+                              , srcInfoPoints = []+                              }+                        , PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 7 19 8+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 9 19 15+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/Overlapping.hs" 19 9 19 10 ]+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 11 19 15+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/Overlapping.hs" 19 11 19 15+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Overlapping.hs" 19 11 19 15+                                      , srcInfoPoints = []+                                      }+                                    "True"))))+                        Nothing+                    ])+             ])+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/Overlapping.hs" 21 1 21 17)+        " >>> f 'a' 'b'"+    , Comment+        False (SrcSpan "tests/examples/Overlapping.hs" 22 1 22 8) " True"+    , Comment+        False (SrcSpan "tests/examples/Overlapping.hs" 23 1 23 3) ""+    , Comment+        False+        (SrcSpan "tests/examples/Overlapping.hs" 24 1 24 24)+        " >>> f 'a' \"starfish\""+    , Comment+        False (SrcSpan "tests/examples/Overlapping.hs" 25 1 25 9) " False"+    ]+  )
+ tests/examples/Overlapping.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Overlapping.hs.prettyprinter.golden view
@@ -0,0 +1,18 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+module Overlapping where++class C a b where+        f :: a -> b -> Bool++instance C a b where+        f _ _ = False++instance {-# OVERLAPPING #-} C a a where+        f _ _ = True++instance {-# OVERLAPS #-} C a a where+        f _ _ = True++instance {-# OVERLAPPABLE #-} C a a where+        f _ _ = True
+ tests/examples/OverloadedLabels.hs view
@@ -0,0 +1,29 @@+-- Basic tests of overloaded labels++{-# LANGUAGE OverloadedLabels+           , DataKinds+           , FlexibleContexts+           , FlexibleInstances+           , MultiParamTypeClasses+           , NoMonomorphismRestriction+  #-}++import GHC.OverloadedLabels++instance IsLabel "true" Bool where+  fromLabel _ = True++instance IsLabel "_False1'" Bool where+  fromLabel _ = False++a :: IsLabel "true" t => t+a = #true++b = #_False1'++c :: Bool+c = #true++main = do print (a :: Bool)+          print (b :: Bool)+          print c
+ tests/examples/OverloadedLabels.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/OverloadedLabels.hs.parser.golden view
@@ -0,0 +1,911 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/OverloadedLabels.hs" 3 1 30 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/OverloadedLabels.hs" 3 1 3 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 13 1 13 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 16 1 16 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 19 1 19 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 20 1 20 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 22 1 22 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 24 1 24 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 25 1 25 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 27 1 27 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 30 1 30 1+            , SrcSpan "tests/examples/OverloadedLabels.hs" 30 1 30 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/OverloadedLabels.hs" 3 1 9 6+            , srcInfoPoints =+                [ SrcSpan "tests/examples/OverloadedLabels.hs" 3 1 3 13+                , SrcSpan "tests/examples/OverloadedLabels.hs" 4 12 4 13+                , SrcSpan "tests/examples/OverloadedLabels.hs" 5 12 5 13+                , SrcSpan "tests/examples/OverloadedLabels.hs" 6 12 6 13+                , SrcSpan "tests/examples/OverloadedLabels.hs" 7 12 7 13+                , SrcSpan "tests/examples/OverloadedLabels.hs" 8 12 8 13+                , SrcSpan "tests/examples/OverloadedLabels.hs" 9 3 9 6+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/OverloadedLabels.hs" 3 14 3 30+                , srcInfoPoints = []+                }+              "OverloadedLabels"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/OverloadedLabels.hs" 4 14 4 23+                , srcInfoPoints = []+                }+              "DataKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/OverloadedLabels.hs" 5 14 5 30+                , srcInfoPoints = []+                }+              "FlexibleContexts"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/OverloadedLabels.hs" 6 14 6 31+                , srcInfoPoints = []+                }+              "FlexibleInstances"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/OverloadedLabels.hs" 7 14 7 35+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/OverloadedLabels.hs" 8 14 8 39+                , srcInfoPoints = []+                }+              "NoMonomorphismRestriction"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 28+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 11 8 11 28+                  , srcInfoPoints = []+                  }+                "GHC.OverloadedLabels"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/OverloadedLabels.hs" 13 1 16 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/OverloadedLabels.hs" 13 1 13 9+                , SrcSpan "tests/examples/OverloadedLabels.hs" 13 30 13 35+                , SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 3+                , SrcSpan "tests/examples/OverloadedLabels.hs" 16 1 16 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 29+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 29+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 24+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 17+                              , srcInfoPoints = []+                              }+                            "IsLabel")))+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/OverloadedLabels.hs" 13 18 13 24+                        , srcInfoPoints = []+                        }+                      (PromotedString+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/OverloadedLabels.hs" 13 18 13 24+                           , srcInfoPoints = []+                           }+                         "true"+                         "true")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/OverloadedLabels.hs" 13 25 13 29+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/OverloadedLabels.hs" 13 25 13 29+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/OverloadedLabels.hs" 13 25 13 29+                           , srcInfoPoints = []+                           }+                         "Bool")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 21+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 21+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 21+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 12+                             , srcInfoPoints = []+                             }+                           "fromLabel")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 14 13 14 14+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/OverloadedLabels.hs" 14 15 14 21+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/OverloadedLabels.hs" 14 15 14 16 ]+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/OverloadedLabels.hs" 14 17 14 21+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/OverloadedLabels.hs" 14 17 14 21+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/OverloadedLabels.hs" 14 17 14 21+                                      , srcInfoPoints = []+                                      }+                                    "True"))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/OverloadedLabels.hs" 16 1 19 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/OverloadedLabels.hs" 16 1 16 9+                , SrcSpan "tests/examples/OverloadedLabels.hs" 16 34 16 39+                , SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 3+                , SrcSpan "tests/examples/OverloadedLabels.hs" 19 1 19 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 33+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 33+                  , srcInfoPoints = []+                  }+                (IHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 28+                     , srcInfoPoints = []+                     }+                   (IHCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 17+                              , srcInfoPoints = []+                              }+                            "IsLabel")))+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/OverloadedLabels.hs" 16 18 16 28+                        , srcInfoPoints = []+                        }+                      (PromotedString+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/OverloadedLabels.hs" 16 18 16 28+                           , srcInfoPoints = []+                           }+                         "_False1'"+                         "_False1'")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/OverloadedLabels.hs" 16 29 16 33+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/OverloadedLabels.hs" 16 29 16 33+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/OverloadedLabels.hs" 16 29 16 33+                           , srcInfoPoints = []+                           }+                         "Bool")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 22+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 22+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 22+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 12+                             , srcInfoPoints = []+                             }+                           "fromLabel")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 17 13 17 14+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/OverloadedLabels.hs" 17 15 17 22+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/OverloadedLabels.hs" 17 15 17 16 ]+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/OverloadedLabels.hs" 17 17 17 22+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/OverloadedLabels.hs" 17 17 17 22+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/OverloadedLabels.hs" 17 17 17 22+                                      , srcInfoPoints = []+                                      }+                                    "False"))))+                        Nothing+                    ])+             ])+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/OverloadedLabels.hs" 19 1 19 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 3 19 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/OverloadedLabels.hs" 19 1 19 2+                , srcInfoPoints = []+                }+              "a"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 27+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13+                                       , srcInfoPoints = []+                                       }+                                     "IsLabel")))+                            (TyPromoted+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20+                                 , srcInfoPoints = []+                                 }+                               (PromotedString+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20+                                    , srcInfoPoints = []+                                    }+                                  "true"+                                  "true")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22+                                 , srcInfoPoints = []+                                 }+                               "t"))))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 19 26 19 27+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/OverloadedLabels.hs" 19 26 19 27+                     , srcInfoPoints = []+                     }+                   "t")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/OverloadedLabels.hs" 20 1 20 10+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 20 1 20 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 20 1 20 2+                  , srcInfoPoints = []+                  }+                "a"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 20 3 20 10+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/OverloadedLabels.hs" 20 3 20 4 ]+               }+             (OverloadedLabel+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 20 5 20 10+                  , srcInfoPoints = []+                  }+                "true"))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/OverloadedLabels.hs" 22 1 22 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 22 1 22 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 22 1 22 2+                  , srcInfoPoints = []+                  }+                "b"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 22 3 22 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/OverloadedLabels.hs" 22 3 22 4 ]+               }+             (OverloadedLabel+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 22 5 22 14+                  , srcInfoPoints = []+                  }+                "_False1'"))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/OverloadedLabels.hs" 24 1 24 10+            , srcInfoPoints =+                [ SrcSpan "tests/examples/OverloadedLabels.hs" 24 3 24 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/OverloadedLabels.hs" 24 1 24 2+                , srcInfoPoints = []+                }+              "c"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 24 6 24 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 24 6 24 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/OverloadedLabels.hs" 24 6 24 10+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/OverloadedLabels.hs" 25 1 25 10+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 25 1 25 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 25 1 25 2+                  , srcInfoPoints = []+                  }+                "c"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 25 3 25 10+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/OverloadedLabels.hs" 25 3 25 4 ]+               }+             (OverloadedLabel+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 25 5 25 10+                  , srcInfoPoints = []+                  }+                "true"))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/OverloadedLabels.hs" 27 1 29 18+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 27 1 27 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 27 1 27 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/OverloadedLabels.hs" 27 6 29 18+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/OverloadedLabels.hs" 27 6 27 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/OverloadedLabels.hs" 27 8 29 18+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/OverloadedLabels.hs" 27 8 27 10+                      , SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 11+                      , SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 11+                      , SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 11+                      , SrcSpan "tests/examples/OverloadedLabels.hs" 30 1 30 0+                      ]+                  }+                [ Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 28+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 28+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 16+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/OverloadedLabels.hs" 27 17 27 28+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/OverloadedLabels.hs" 27 17 27 18+                                , SrcSpan "tests/examples/OverloadedLabels.hs" 27 27 27 28+                                ]+                            }+                          (ExpTypeSig+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/OverloadedLabels.hs" 27 18 27 27+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/OverloadedLabels.hs" 27 20 27 22 ]+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/OverloadedLabels.hs" 27 18 27 19+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/OverloadedLabels.hs" 27 18 27 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/OverloadedLabels.hs" 27 18 27 19+                                        , srcInfoPoints = []+                                        }+                                      "a")))+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/OverloadedLabels.hs" 27 23 27 27+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/OverloadedLabels.hs" 27 23 27 27+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/OverloadedLabels.hs" 27 23 27 27+                                        , srcInfoPoints = []+                                        }+                                      "Bool"))))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 28+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 28+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 16+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/OverloadedLabels.hs" 28 17 28 28+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/OverloadedLabels.hs" 28 17 28 18+                                , SrcSpan "tests/examples/OverloadedLabels.hs" 28 27 28 28+                                ]+                            }+                          (ExpTypeSig+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/OverloadedLabels.hs" 28 18 28 27+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/OverloadedLabels.hs" 28 20 28 22 ]+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/OverloadedLabels.hs" 28 18 28 19+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/OverloadedLabels.hs" 28 18 28 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/OverloadedLabels.hs" 28 18 28 19+                                        , srcInfoPoints = []+                                        }+                                      "b")))+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/OverloadedLabels.hs" 28 23 28 27+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/OverloadedLabels.hs" 28 23 28 27+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/OverloadedLabels.hs" 28 23 28 27+                                        , srcInfoPoints = []+                                        }+                                      "Bool"))))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 18+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 18+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 16+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/OverloadedLabels.hs" 29 17 29 18+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/OverloadedLabels.hs" 29 17 29 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/OverloadedLabels.hs" 29 17 29 18+                                  , srcInfoPoints = []+                                  }+                                "c"))))+                ]))+          Nothing+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/OverloadedLabels.hs" 1 1 1 36)+        " Basic tests of overloaded labels"+    ]+  )
+ tests/examples/OverloadedLabels.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/OverloadedLabels.hs.prettyprinter.golden view
@@ -0,0 +1,21 @@+{-# LANGUAGE OverloadedLabels, DataKinds, FlexibleContexts,+  FlexibleInstances, MultiParamTypeClasses, NoMonomorphismRestriction+  #-}+import GHC.OverloadedLabels++instance IsLabel "true" Bool where+        fromLabel _ = True++instance IsLabel "_False1'" Bool where+        fromLabel _ = False++a :: IsLabel "true" t => t+a = #true+b = #_False1'++c :: Bool+c = #true+main+  = do print (a :: Bool)+       print (b :: Bool)+       print c
+ tests/examples/PackageImports.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE PackageImports #-}+module PackageImports where++import "wibble" PackageImports.Default+import "wibble" PackageImports.Builtin.All
+ tests/examples/PackageImports.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PackageImports.hs.parser.golden view
@@ -0,0 +1,100 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PackageImports.hs" 1 1 1 1+            , SrcSpan "tests/examples/PackageImports.hs" 2 1 2 1+            , SrcSpan "tests/examples/PackageImports.hs" 2 1 2 1+            , SrcSpan "tests/examples/PackageImports.hs" 4 1 4 1+            , SrcSpan "tests/examples/PackageImports.hs" 5 1 5 1+            , SrcSpan "tests/examples/PackageImports.hs" 6 1 6 1+            , SrcSpan "tests/examples/PackageImports.hs" 6 1 6 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 2 1 2 28+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/PackageImports.hs" 2 1 2 7+                  , SrcSpan "tests/examples/PackageImports.hs" 2 23 2 28+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 2 8 2 22+                 , srcInfoPoints = []+                 }+               "PackageImports")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PackageImports.hs" 1 1 1 13+                , SrcSpan "tests/examples/PackageImports.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PackageImports.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "PackageImports"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 4 1 4 39+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PackageImports.hs" 4 1 4 7+                    , SrcSpan "tests/examples/PackageImports.hs" 4 8 4 16+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PackageImports.hs" 4 17 4 39+                  , srcInfoPoints = []+                  }+                "PackageImports.Default"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Just "wibble"+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 5 1 5 43+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PackageImports.hs" 5 1 5 7+                    , SrcSpan "tests/examples/PackageImports.hs" 5 8 5 16+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PackageImports.hs" 5 17 5 43+                  , srcInfoPoints = []+                  }+                "PackageImports.Builtin.All"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Just "wibble"+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      []+  , []+  )
+ tests/examples/PackageImports.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PackageImports.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE PackageImports #-}+module PackageImports where+import "wibble" PackageImports.Default+import "wibble" PackageImports.Builtin.All
+ tests/examples/PackageImportsMissing.hs view
@@ -0,0 +1,4 @@+module PackageImportsMissing where++import "wibble" PackageImports.Default+import "wibble" PackageImports.Builtin.All
+ tests/examples/PackageImportsMissing.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/PackageImportsMissing.hs" 3 17) "PackageImports language extension is not enabled. Please add {-# LANGUAGE PackageImports #-} pragma at the top of your module."
+ tests/examples/PackageImportsMissing.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/PackageImportsMissing.hs" 3 17)+  "PackageImports language extension is not enabled. Please add {-# LANGUAGE PackageImports #-} pragma at the top of your module."
+ tests/examples/PackageImportsMissing.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/PackageImportsMissing.hs" 3 17) "PackageImports language extension is not enabled. Please add {-# LANGUAGE PackageImports #-} pragma at the top of your module."
+ tests/examples/PackageImportsMissing.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/PackageImportsMissing.hs" 3 17) "PackageImports language extension is not enabled. Please add {-# LANGUAGE PackageImports #-} pragma at the top of your module."
+ tests/examples/ParallelArrays.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE ParallelArrays #-}++dotp_double :: [:Double:] -> [:Double:] -> Double+dotp_double xs ys = sumP [:x * y | x <- xs | y <- ys:]++
+ tests/examples/ParallelArrays.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParallelArrays.hs.parser.golden view
@@ -0,0 +1,384 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ParallelArrays.hs" 1 1 1 1+            , SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 1+            , SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 1+            , SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 1+            , SrcSpan "tests/examples/ParallelArrays.hs" 4 1 4 1+            , SrcSpan "tests/examples/ParallelArrays.hs" 7 1 7 1+            , SrcSpan "tests/examples/ParallelArrays.hs" 7 1 7 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ParallelArrays.hs" 1 1 1 13+                , SrcSpan "tests/examples/ParallelArrays.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ParallelArrays.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "ParallelArrays"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 50+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ParallelArrays.hs" 3 13 3 15 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 12+                , srcInfoPoints = []+                }+              "dotp_double"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ParallelArrays.hs" 3 16 3 50+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ParallelArrays.hs" 3 27 3 29 ]+               }+             (TyParArray+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ParallelArrays.hs" 3 16 3 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ParallelArrays.hs" 3 16 3 18+                      , SrcSpan "tests/examples/ParallelArrays.hs" 3 24 3 26+                      ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ParallelArrays.hs" 3 18 3 24+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ParallelArrays.hs" 3 18 3 24+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ParallelArrays.hs" 3 18 3 24+                           , srcInfoPoints = []+                           }+                         "Double"))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ParallelArrays.hs" 3 30 3 50+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ParallelArrays.hs" 3 41 3 43 ]+                  }+                (TyParArray+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ParallelArrays.hs" 3 30 3 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ParallelArrays.hs" 3 30 3 32+                         , SrcSpan "tests/examples/ParallelArrays.hs" 3 38 3 40+                         ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ParallelArrays.hs" 3 32 3 38+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ParallelArrays.hs" 3 32 3 38+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ParallelArrays.hs" 3 32 3 38+                              , srcInfoPoints = []+                              }+                            "Double"))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ParallelArrays.hs" 3 44 3 50+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ParallelArrays.hs" 3 44 3 50+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ParallelArrays.hs" 3 44 3 50+                           , srcInfoPoints = []+                           }+                         "Double")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 4 1 4 55+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 4 1 4 55+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 4 1 4 12+                   , srcInfoPoints = []+                   }+                 "dotp_double")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ParallelArrays.hs" 4 13 4 15+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ParallelArrays.hs" 4 13 4 15+                       , srcInfoPoints = []+                       }+                     "xs")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ParallelArrays.hs" 4 16 4 18+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ParallelArrays.hs" 4 16 4 18+                       , srcInfoPoints = []+                       }+                     "ys")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ParallelArrays.hs" 4 19 4 55+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ParallelArrays.hs" 4 19 4 20 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ParallelArrays.hs" 4 21 4 55+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ParallelArrays.hs" 4 21 4 25+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ParallelArrays.hs" 4 21 4 25+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelArrays.hs" 4 21 4 25+                               , srcInfoPoints = []+                               }+                             "sumP")))+                    (ParArrayComp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ParallelArrays.hs" 4 26 4 55+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ParallelArrays.hs" 4 26 4 28+                             , SrcSpan "tests/examples/ParallelArrays.hs" 4 34 4 35+                             , SrcSpan "tests/examples/ParallelArrays.hs" 4 44 4 45+                             , SrcSpan "tests/examples/ParallelArrays.hs" 4 53 4 55+                             ]+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ParallelArrays.hs" 4 28 4 33+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelArrays.hs" 4 28 4 29+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelArrays.hs" 4 28 4 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelArrays.hs" 4 28 4 29+                                     , srcInfoPoints = []+                                     }+                                   "x")))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelArrays.hs" 4 30 4 31+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelArrays.hs" 4 30 4 31+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelArrays.hs" 4 30 4 31+                                     , srcInfoPoints = []+                                     }+                                   "*")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelArrays.hs" 4 32 4 33+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelArrays.hs" 4 32 4 33+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelArrays.hs" 4 32 4 33+                                     , srcInfoPoints = []+                                     }+                                   "y"))))+                       [ [ QualStmt+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelArrays.hs" 4 36 4 43+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/ParallelArrays.hs" 4 38 4 40 ]+                               }+                             (Generator+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelArrays.hs" 4 36 4 43+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/ParallelArrays.hs" 4 38 4 40 ]+                                  }+                                (PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelArrays.hs" 4 36 4 37+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelArrays.hs" 4 36 4 37+                                        , srcInfoPoints = []+                                        }+                                      "x"))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelArrays.hs" 4 41 4 43+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelArrays.hs" 4 41 4 43+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ParallelArrays.hs" 4 41 4 43+                                           , srcInfoPoints = []+                                           }+                                         "xs"))))+                         ]+                       , [ QualStmt+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelArrays.hs" 4 46 4 53+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/ParallelArrays.hs" 4 48 4 50 ]+                               }+                             (Generator+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelArrays.hs" 4 46 4 53+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/ParallelArrays.hs" 4 48 4 50 ]+                                  }+                                (PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelArrays.hs" 4 46 4 47+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelArrays.hs" 4 46 4 47+                                        , srcInfoPoints = []+                                        }+                                      "y"))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelArrays.hs" 4 51 4 53+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelArrays.hs" 4 51 4 53+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/ParallelArrays.hs" 4 51 4 53+                                           , srcInfoPoints = []+                                           }+                                         "ys"))))+                         ]+                       ])))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/ParallelArrays.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParallelArrays.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ParallelArrays #-}++dotp_double :: [:Double:] -> [:Double:] -> Double+dotp_double xs ys = sumP [:x * y| x <- xs| y <- ys:]
+ tests/examples/ParallelArrays2.hs view
@@ -0,0 +1,4 @@+-- Should fail without extensions.+dotp_double :: [:Double:] -> [:Double:] -> Double+dotp_double xs ys = sumP [:x * y | x <- xs | y <- ys:]+
+ tests/examples/ParallelArrays2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ParallelArrays2.hs" 2 17) "Parse error: :"
+ tests/examples/ParallelArrays2.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+  (SrcLoc "tests/examples/ParallelArrays2.hs" 2 17) "Parse error: :"
+ tests/examples/ParallelArrays2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ParallelArrays2.hs" 2 17) "Parse error: :"
+ tests/examples/ParallelArrays2.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ParallelArrays2.hs" 2 17) "Parse error: :"
+ tests/examples/ParallelListComp.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE ParallelListComp #-}++f xs ys zs = [ (x,y,z) | x <- xs | y <- ys, y > 2 | z <- zs ]
+ tests/examples/ParallelListComp.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParallelListComp.hs.parser.golden view
@@ -0,0 +1,402 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ParallelListComp.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ParallelListComp.hs" 1 1 1 1+            , SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 1+            , SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 1+            , SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 1+            , SrcSpan "tests/examples/ParallelListComp.hs" 4 1 4 1+            , SrcSpan "tests/examples/ParallelListComp.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ParallelListComp.hs" 1 1 1 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ParallelListComp.hs" 1 1 1 13+                , SrcSpan "tests/examples/ParallelListComp.hs" 1 31 1 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ParallelListComp.hs" 1 14 1 30+                , srcInfoPoints = []+                }+              "ParallelListComp"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 62+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 62+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ParallelListComp.hs" 3 3 3 5+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ParallelListComp.hs" 3 3 3 5+                       , srcInfoPoints = []+                       }+                     "xs")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ParallelListComp.hs" 3 6 3 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ParallelListComp.hs" 3 6 3 8+                       , srcInfoPoints = []+                       }+                     "ys")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ParallelListComp.hs" 3 9 3 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ParallelListComp.hs" 3 9 3 11+                       , srcInfoPoints = []+                       }+                     "zs")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ParallelListComp.hs" 3 12 3 62+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ParallelListComp.hs" 3 12 3 13 ]+                   }+                 (ParComp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ParallelListComp.hs" 3 14 3 62+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/ParallelListComp.hs" 3 14 3 15+                          , SrcSpan "tests/examples/ParallelListComp.hs" 3 24 3 25+                          , SrcSpan "tests/examples/ParallelListComp.hs" 3 34 3 35+                          , SrcSpan "tests/examples/ParallelListComp.hs" 3 43 3 44+                          , SrcSpan "tests/examples/ParallelListComp.hs" 3 51 3 52+                          , SrcSpan "tests/examples/ParallelListComp.hs" 3 61 3 62+                          ]+                      }+                    (Tuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ParallelListComp.hs" 3 16 3 23+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ParallelListComp.hs" 3 16 3 17+                             , SrcSpan "tests/examples/ParallelListComp.hs" 3 18 3 19+                             , SrcSpan "tests/examples/ParallelListComp.hs" 3 20 3 21+                             , SrcSpan "tests/examples/ParallelListComp.hs" 3 22 3 23+                             ]+                         }+                       Boxed+                       [ Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/ParallelListComp.hs" 3 17 3 18+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/ParallelListComp.hs" 3 17 3 18+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/ParallelListComp.hs" 3 17 3 18+                                   , srcInfoPoints = []+                                   }+                                 "x"))+                       , Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/ParallelListComp.hs" 3 19 3 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/ParallelListComp.hs" 3 19 3 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/ParallelListComp.hs" 3 19 3 20+                                   , srcInfoPoints = []+                                   }+                                 "y"))+                       , Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/ParallelListComp.hs" 3 21 3 22+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/ParallelListComp.hs" 3 21 3 22+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/ParallelListComp.hs" 3 21 3 22+                                   , srcInfoPoints = []+                                   }+                                 "z"))+                       ])+                    [ [ QualStmt+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ParallelListComp.hs" 3 26 3 33+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ParallelListComp.hs" 3 28 3 30 ]+                            }+                          (Generator+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelListComp.hs" 3 26 3 33+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/ParallelListComp.hs" 3 28 3 30 ]+                               }+                             (PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelListComp.hs" 3 26 3 27+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelListComp.hs" 3 26 3 27+                                     , srcInfoPoints = []+                                     }+                                   "x"))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelListComp.hs" 3 31 3 33+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelListComp.hs" 3 31 3 33+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelListComp.hs" 3 31 3 33+                                        , srcInfoPoints = []+                                        }+                                      "xs"))))+                      ]+                    , [ QualStmt+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ParallelListComp.hs" 3 36 3 43+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ParallelListComp.hs" 3 38 3 40 ]+                            }+                          (Generator+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelListComp.hs" 3 36 3 43+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/ParallelListComp.hs" 3 38 3 40 ]+                               }+                             (PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelListComp.hs" 3 36 3 37+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelListComp.hs" 3 36 3 37+                                     , srcInfoPoints = []+                                     }+                                   "y"))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelListComp.hs" 3 41 3 43+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelListComp.hs" 3 41 3 43+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelListComp.hs" 3 41 3 43+                                        , srcInfoPoints = []+                                        }+                                      "ys"))))+                      , QualStmt+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 50+                            , srcInfoPoints = []+                            }+                          (Qualifier+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 50+                               , srcInfoPoints = []+                               }+                             (InfixApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 50+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 46+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 46+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/ParallelListComp.hs" 3 45 3 46+                                           , srcInfoPoints = []+                                           }+                                         "y")))+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelListComp.hs" 3 47 3 48+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelListComp.hs" 3 47 3 48+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/ParallelListComp.hs" 3 47 3 48+                                           , srcInfoPoints = []+                                           }+                                         ">")))+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelListComp.hs" 3 49 3 50+                                     , srcInfoPoints = []+                                     }+                                   (Int+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelListComp.hs" 3 49 3 50+                                        , srcInfoPoints = []+                                        }+                                      2+                                      "2"))))+                      ]+                    , [ QualStmt+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ParallelListComp.hs" 3 53 3 60+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ParallelListComp.hs" 3 55 3 57 ]+                            }+                          (Generator+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ParallelListComp.hs" 3 53 3 60+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/ParallelListComp.hs" 3 55 3 57 ]+                               }+                             (PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelListComp.hs" 3 53 3 54+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelListComp.hs" 3 53 3 54+                                     , srcInfoPoints = []+                                     }+                                   "z"))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ParallelListComp.hs" 3 58 3 60+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ParallelListComp.hs" 3 58 3 60+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/ParallelListComp.hs" 3 58 3 60+                                        , srcInfoPoints = []+                                        }+                                      "zs"))))+                      ]+                    ]))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/ParallelListComp.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParallelListComp.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE ParallelListComp #-}+f xs ys zs = [(x, y, z)| x <- xs| y <- ys, y > 2| z <- zs]
+ tests/examples/ParenFunBind.hs view
@@ -0,0 +1,3 @@+module ParenFunBind where++(foo x) y = x + y
+ tests/examples/ParenFunBind.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParenFunBind.hs.parser.golden view
@@ -0,0 +1,137 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ParenFunBind.hs" 1 1 1 1+            , SrcSpan "tests/examples/ParenFunBind.hs" 1 1 1 1+            , SrcSpan "tests/examples/ParenFunBind.hs" 3 1 3 1+            , SrcSpan "tests/examples/ParenFunBind.hs" 4 1 4 1+            , SrcSpan "tests/examples/ParenFunBind.hs" 4 1 4 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 1 1 1 26+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/ParenFunBind.hs" 1 1 1 7+                  , SrcSpan "tests/examples/ParenFunBind.hs" 1 21 1 26+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 1 8 1 20+                 , srcInfoPoints = []+                 }+               "ParenFunBind")+            Nothing+            Nothing))+      []+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 1 3 18+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 1 3 18+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/ParenFunBind.hs" 3 1 3 2+                    , SrcSpan "tests/examples/ParenFunBind.hs" 3 7 3 8+                    ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 2 3 5+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 6 3 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 6 3 7+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 9 3 10+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 9 3 10+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 11 3 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ParenFunBind.hs" 3 11 3 12 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 13 3 18+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 13 3 14+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 13 3 14+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 13 3 14+                               , srcInfoPoints = []+                               }+                             "x")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 15 3 16+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 15 3 16+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 15 3 16+                               , srcInfoPoints = []+                               }+                             "+")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 17 3 18+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 17 3 18+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 17 3 18+                               , srcInfoPoints = []+                               }+                             "y")))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/ParenFunBind.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParenFunBind.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module ParenFunBind where+foo x y = x + y
+ tests/examples/PartialSignatures.hs view
@@ -0,0 +1,293 @@+{-# LANGUAGE GADTs, NamedWildCards, ScopedTypeVariables #-}++bar :: Int -> _ Int+bar x = Foo True () x+++addAndOr1 :: _+addAndOr1 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y+++addAndOr2 :: _ -> _+addAndOr2 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y+++addAndOr3 :: _ -> _ -> _+addAndOr3 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y+++addAndOr4 :: (_ _ _) -> (_ _ _) -> (_ _ _)+addAndOr4 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y+++addAndOr5 :: (_, _) -> (_, _) -> (_, _)+addAndOr5 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y+++addAndOr6 :: (Int, _) -> (Bool, _) -> (_ Int Bool)+addAndOr6 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y+++bar :: _ -> _+bar x = not x+++alpha :: _+alpha = 3+++bravo :: _ => _+bravo = 3+++bravo :: _ => _+bravo = 3++barry :: _a -> (_b _a, _b _)+barry x = (Left "x", Right x)++foo :: a ~ Bool => (a, _)+foo = (True, False)+++every :: _ -> _ -> Bool+every _ [] = True+every p (x:xs) = p x && every p xs++every :: (_a -> Bool) -> [_a] -> Bool+every _ [] = True+every p (x:xs) = p x && every p xs+++bar :: Bool -> Bool+bar x = (x :: _)++bar :: _a -> _a+bar True  = (False :: _a)+bar False = (True :: _a)+++arbitCs1 :: _ => a -> String+arbitCs1 x = show (succ x) ++ show (x == x)++arbitCs2 :: (Show a, _) => a -> String+arbitCs2 x = arbitCs1 x++arbitCs3 :: (Show a, Enum a, _) => a -> String+arbitCs3 x = arbitCs1 x++arbitCs4 :: (Eq a, _) => a -> String+arbitCs4 x = arbitCs1 x++arbitCs5 :: (Eq a, Enum a, Show a, _) => a -> String+arbitCs5 x = arbitCs1 x+++foo :: _ => String+foo = "x"++-- No extra constraints++++foo :: _ => a+foo = 3+++foo :: _ => a+foo = 3++fall :: forall a . _ -> a+fall v = v++bar :: _a -> _a+bar x = not x++foo :: (forall a. [a] -> [a]) -> _+foo x = (x [True, False], x ['a', 'b'])++foo :: (forall a. [a] -> [a]) -> (_, _ _)+foo x = (x [True, False], x ['a', 'b'])+++monoLoc :: forall a. a -> ((a, String), (a, _))+monoLoc x = (g True , g False)+  where+    g :: t -> (a, String)+    g _ = (x, "foo")++-- Test case for (fixed) bug that previously generated the following error message:++-- LocalDefinitionBug.hs:9:16:+--     GHC internal error: ‘a’ is not in scope during type checking, but it passed the renamer+--     tcl_env of environment: [alA :-> Type variable ‘_’ = _,+--                              alC :-> Identifier[x::a, <NotTopLevel>],+--                              alE :-> Type variable ‘t’ = t,+--                              rjF :-> Identifier[monoLoc::a+--                                                          -> ((a, String), (a, _)), <NotTopLevel>]]+--     In the type signature for ‘g’: g :: t -> (a, String)+--     In an equation for ‘monoLoc’:+--         monoLoc x+--           = (g True, g False)+--           where+--               g :: t -> (a, String)+--               g _ = (x, "foo")+++-- Fixed by using tcExtendTyVarEnv2 instead of tcExtendTyVarEnv++data NukeMonad a b c++instance Functor (NukeMonad a b) where+  fmap = undefined++instance Applicative (NukeMonad a b) where+  pure = undefined+  (<*>) = undefined++instance Monad (NukeMonad a b) where+  return = undefined+  (>>=) = undefined+++isMeltdown :: NukeMonad param1 param2 Bool+isMeltdown = undefined++unlessMeltdown :: _nm () ->  _nm ()+unlessMeltdown c = do m <- isMeltdown+                      if m then return () else c++++monoLoc :: forall a. a -> ((a, String), (a, String))+monoLoc x = (g True , g 'v')+  where+    -- g :: b -> (a, String) -- #1+    g :: b -> (a, _) -- #2+    g y = (x, "foo")++-- For #2, we should infer the same type as in #1.++foo :: (_a, b) -> (a, _b)+foo (x, y) = (x, y)+++f :: (_) => a -> a -> Bool+f x y = x == y+++foo :: _+Just foo = Just id+++foo :: Bool -> _+Just foo = Just id++bar :: Bool -> Bool+bar (x :: _) = True+++orr :: a -> a -> a+orr = undefined++g :: _+g = f `orr` True++f :: _+f = g+++test3 :: _+test3 x = const (let x :: _b+                     x = True in False) $+          const (let x :: _b+                     x = 'a' in True) $+          not x+++-- The named wildcards aren't scoped as the ScopedTypeVariables extension+-- isn't enabled, of which the behaviour is copied. Thus, the _a annotation of+-- x, which must be Bool, isn't the same as the _a in g, which is now+-- generalised over.+foo :: _a -> _+foo x = let v = not x+            g :: _a -> _a+            g x = x+        in (g 'x')++showTwo :: Show _a => _a -> String+showTwo x = show x+++bar :: _ -> Bool+bar _ = True+++data GenParser tok st a = GenParser tok st a++skipMany' :: GenParser tok st a -> GenParser tok st ()+skipMany' = undefined++skipMany :: _ -> _ ()+skipMany = skipMany'++somethingShowable :: Show _x => _x -> _+somethingShowable x = show (not x)+-- Inferred type: Bool -> String+++data I a = I a+instance Functor I where+    fmap f (I a) = I (f a)++newtype B t a = B a+instance Functor (B t) where+    fmap f (B a) = B (f a)++newtype H f = H (f ())++h1 :: _ => _+-- h :: Functor m => (a -> b) -> m a -> H m+h1 f b = (H . fmap (const ())) (fmap f b)++h2 :: _+-- h2 :: Functor m => (a -> b) -> m a -> H m+h2 f b = (H . fmap (const ())) (fmap f b)++app1 :: H (B t)+app1 = h1 (H . I) (B ())++app2 :: H (B t)+app2 = h2 (H . I) (B ())+++foo f = g+  where g r = x+          where x :: _+                x = r+++unc :: (_ -> _ -> _) -> (_, _) -> _+unc = uncurry++unc :: (_a -> _b -> _c) -> (_a, _b) -> _c+unc = uncurry+++foo :: (Show _a, _) => _a -> _+foo x = show (succ x)++bar :: _ -> _ -> _+bar x y = y x
+ tests/examples/PartialSignatures.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PartialSignatures.hs.parser.golden view
@@ -0,0 +1,16739 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/PartialSignatures.hs" 1 1 294 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PartialSignatures.hs" 1 1 1 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 4 1 4 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 7 1 7 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 8 1 8 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 13 1 13 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 14 1 14 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 19 1 19 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 20 1 20 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 25 1 25 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 26 1 26 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 31 1 31 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 32 1 32 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 37 1 37 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 38 1 38 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 43 1 43 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 44 1 44 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 47 1 47 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 48 1 48 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 51 1 51 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 52 1 52 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 55 1 55 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 56 1 56 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 58 1 58 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 59 1 59 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 61 1 61 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 62 1 62 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 65 1 65 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 66 1 66 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 67 1 67 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 69 1 69 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 70 1 70 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 71 1 71 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 74 1 74 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 75 1 75 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 77 1 77 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 78 1 78 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 79 1 79 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 82 1 82 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 83 1 83 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 85 1 85 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 86 1 86 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 88 1 88 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 89 1 89 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 91 1 91 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 92 1 92 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 94 1 94 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 95 1 95 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 98 1 98 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 99 1 99 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 105 1 105 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 106 1 106 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 109 1 109 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 110 1 110 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 112 1 112 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 113 1 113 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 115 1 115 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 116 1 116 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 118 1 118 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 119 1 119 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 121 1 121 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 122 1 122 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 125 1 125 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 126 1 126 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 151 1 151 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 153 1 153 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 156 1 156 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 160 1 160 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 165 1 165 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 166 1 166 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 168 1 168 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 169 1 169 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 174 1 174 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 175 1 175 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 183 1 183 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 184 1 184 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 187 1 187 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 188 1 188 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 191 1 191 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 195 1 195 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 198 1 198 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 199 1 199 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 202 1 202 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 203 1 203 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 205 1 205 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 206 1 206 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 208 1 208 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 209 1 209 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 212 1 212 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 213 1 213 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 224 1 224 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 225 1 225 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 230 1 230 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 231 1 231 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 234 1 234 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 235 1 235 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 238 1 238 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 240 1 240 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 241 1 241 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 243 1 243 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 244 1 244 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 246 1 246 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 247 1 247 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 251 1 251 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 252 1 252 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 255 1 255 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 256 1 256 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 259 1 259 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 261 1 261 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 263 1 263 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 265 1 265 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 267 1 267 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 269 1 269 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 270 1 270 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 272 1 272 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 273 1 273 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 276 1 276 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 283 1 283 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 285 1 285 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 286 1 286 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 289 1 289 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 290 1 290 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 292 1 292 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 293 1 293 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 294 1 294 1+            , SrcSpan "tests/examples/PartialSignatures.hs" 294 1 294 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 1 1 1 60+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 1 1 1 13+                , SrcSpan "tests/examples/PartialSignatures.hs" 1 19 1 20+                , SrcSpan "tests/examples/PartialSignatures.hs" 1 35 1 36+                , SrcSpan "tests/examples/PartialSignatures.hs" 1 57 1 60+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 1 14 1 19+                , srcInfoPoints = []+                }+              "GADTs"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 1 21 1 35+                , srcInfoPoints = []+                }+              "NamedWildCards"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 1 37 1 56+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 3 5 3 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 4+                , srcInfoPoints = []+                }+              "bar"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 3 8 3 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 3 12 3 14 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 3 8 3 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 3 8 3 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 3 8 3 11+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 3 15 3 20+                  , srcInfoPoints = []+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 3 15 3 16+                     , srcInfoPoints = []+                     }+                   Nothing)+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 3 17 3 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 3 17 3 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 3 17 3 20+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 4 1 4 22+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 4 1 4 22+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 4 1 4 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 4 5 4 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 4 5 4 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 4 7 4 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 4 7 4 8 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 22+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 20+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 17+                            , srcInfoPoints = []+                            }+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 12+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 12+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 12+                                     , srcInfoPoints = []+                                     }+                                   "Foo")))+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 4 13 4 17+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 4 13 4 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 4 13 4 17+                                     , srcInfoPoints = []+                                     }+                                   "True"))))+                       (Con+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 20+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 19+                                , SrcSpan "tests/examples/PartialSignatures.hs" 4 19 4 20+                                ]+                            }+                          (Special+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 19+                                   , SrcSpan "tests/examples/PartialSignatures.hs" 4 19 4 20+                                   ]+                               }+                             (UnitCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 20+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 19+                                      , SrcSpan "tests/examples/PartialSignatures.hs" 4 19 4 20+                                      ]+                                  }))))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 4 21 4 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 4 21 4 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 4 21 4 22+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 7 1 7 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 7 11 7 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 7 1 7 10+                , srcInfoPoints = []+                }+              "addAndOr1"+          ]+          (TyWildCard+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 7 14 7 15+               , srcInfoPoints = []+               }+             Nothing)+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 8 1 10 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 9 3 9 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 8 1 10 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PartialSignatures.hs" 9 3 9 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 8 1 8 10+                   , srcInfoPoints = []+                   }+                 "addAndOr1")+              [ PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 8 11 8 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 8 11 8 12+                        , SrcSpan "tests/examples/PartialSignatures.hs" 8 13 8 14+                        , SrcSpan "tests/examples/PartialSignatures.hs" 8 16 8 17+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 8 12 8 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 8 12 8 13+                           , srcInfoPoints = []+                           }+                         "a")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 8 15 8 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 8 15 8 16+                           , srcInfoPoints = []+                           }+                         "b")+                  ]+              , PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 8 18 8 24+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 8 18 8 19+                        , SrcSpan "tests/examples/PartialSignatures.hs" 8 20 8 21+                        , SrcSpan "tests/examples/PartialSignatures.hs" 8 23 8 24+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 8 19 8 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 8 19 8 20+                           , srcInfoPoints = []+                           }+                         "c")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 8 22 8 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 8 22 8 23+                           , srcInfoPoints = []+                           }+                         "d")+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 8 25 8 47+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 8 25 8 26 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 8 27 8 47+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 8 27 8 28+                          , SrcSpan "tests/examples/PartialSignatures.hs" 8 38 8 39+                          , SrcSpan "tests/examples/PartialSignatures.hs" 8 46 8 47+                          ]+                      }+                    Boxed+                    [ InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 8 28 8 38+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 8 28 8 29+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 8 28 8 29+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 8 28 8 29+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 8 30 8 36+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 8 30 8 31+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 8 31 8 35+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 8 35 8 36+                                 ]+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 8 30 8 36+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 8 30 8 31+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 8 31 8 35+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 8 35 8 36+                                    ]+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 8 31 8 35+                                   , srcInfoPoints = []+                                   }+                                 "plus")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 8 37 8 38+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 8 37 8 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 8 37 8 38+                                   , srcInfoPoints = []+                                   }+                                 "d")))+                    , InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 8 40 8 46+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 8 40 8 41+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 8 40 8 41+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 8 40 8 41+                                   , srcInfoPoints = []+                                   }+                                 "b")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 8 42 8 44+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 8 42 8 44+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 8 42 8 44+                                   , srcInfoPoints = []+                                   }+                                 "||")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 8 45 8 46+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 8 45 8 46+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 8 45 8 46+                                   , srcInfoPoints = []+                                   }+                                 "c")))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 9 9 10 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 9 9 9 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 13 1 13 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 9 9 9 34+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 9 14 9 16 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 9 9 9 13+                              , srcInfoPoints = []+                              }+                            "plus"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 9 17 9 34+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 9 21 9 23 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 9 17 9 20+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 9 17 9 20+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 9 17 9 20+                                      , srcInfoPoints = []+                                      }+                                    "Int")))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 9 24 9 34+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 9 28 9 30 ]+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 9 24 9 27+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 9 24 9 27+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/PartialSignatures.hs" 9 24 9 27+                                         , srcInfoPoints = []+                                         }+                                       "Int")))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 9 31 9 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 9 31 9 34+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/PartialSignatures.hs" 9 31 9 34+                                         , srcInfoPoints = []+                                         }+                                       "Int")))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 27+                          , srcInfoPoints = []+                          }+                        [ InfixMatch+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 27+                              , srcInfoPoints = []+                              }+                            (PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 10+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 10+                                    , srcInfoPoints = []+                                    }+                                  "x"))+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 10 12 10 16+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 10 11 10 12+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 10 12 10 16+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 10 16 10 17+                                     ]+                                 }+                               "plus")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 10 18 10 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 10 18 10 19+                                     , srcInfoPoints = []+                                     }+                                   "y")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 10 20 10 27+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 10 20 10 21 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 10 22 10 27+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 10 22 10 23+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 10 22 10 23+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 10 22 10 23+                                             , srcInfoPoints = []+                                             }+                                           "x")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 10 24 10 25+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 10 24 10 25+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 10 24 10 25+                                             , srcInfoPoints = []+                                             }+                                           "+")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 10 26 10 27+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 10 26 10 27+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 10 26 10 27+                                             , srcInfoPoints = []+                                             }+                                           "y")))))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 13 1 13 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 13 11 13 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 13 1 13 10+                , srcInfoPoints = []+                }+              "addAndOr2"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 13 14 13 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 13 16 13 18 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 13 14 13 15+                  , srcInfoPoints = []+                  }+                Nothing)+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 13 19 13 20+                  , srcInfoPoints = []+                  }+                Nothing))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 14 1 16 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 15 3 15 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 14 1 16 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PartialSignatures.hs" 15 3 15 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 14 1 14 10+                   , srcInfoPoints = []+                   }+                 "addAndOr2")+              [ PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 14 11 14 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 14 11 14 12+                        , SrcSpan "tests/examples/PartialSignatures.hs" 14 13 14 14+                        , SrcSpan "tests/examples/PartialSignatures.hs" 14 16 14 17+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 14 12 14 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 14 12 14 13+                           , srcInfoPoints = []+                           }+                         "a")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 14 15 14 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 14 15 14 16+                           , srcInfoPoints = []+                           }+                         "b")+                  ]+              , PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 14 18 14 24+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 14 18 14 19+                        , SrcSpan "tests/examples/PartialSignatures.hs" 14 20 14 21+                        , SrcSpan "tests/examples/PartialSignatures.hs" 14 23 14 24+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 14 19 14 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 14 19 14 20+                           , srcInfoPoints = []+                           }+                         "c")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 14 22 14 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 14 22 14 23+                           , srcInfoPoints = []+                           }+                         "d")+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 14 25 14 47+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 14 25 14 26 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 14 27 14 47+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 14 27 14 28+                          , SrcSpan "tests/examples/PartialSignatures.hs" 14 38 14 39+                          , SrcSpan "tests/examples/PartialSignatures.hs" 14 46 14 47+                          ]+                      }+                    Boxed+                    [ InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 14 28 14 38+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 14 28 14 29+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 14 28 14 29+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 14 28 14 29+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 14 30 14 36+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 14 30 14 31+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 14 31 14 35+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 14 35 14 36+                                 ]+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 14 30 14 36+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 14 30 14 31+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 14 31 14 35+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 14 35 14 36+                                    ]+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 14 31 14 35+                                   , srcInfoPoints = []+                                   }+                                 "plus")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 14 37 14 38+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 14 37 14 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 14 37 14 38+                                   , srcInfoPoints = []+                                   }+                                 "d")))+                    , InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 14 40 14 46+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 14 40 14 41+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 14 40 14 41+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 14 40 14 41+                                   , srcInfoPoints = []+                                   }+                                 "b")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 14 42 14 44+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 14 42 14 44+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 14 42 14 44+                                   , srcInfoPoints = []+                                   }+                                 "||")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 14 45 14 46+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 14 45 14 46+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 14 45 14 46+                                   , srcInfoPoints = []+                                   }+                                 "c")))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 15 9 16 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 15 9 15 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 19 1 19 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 15 9 15 34+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 15 14 15 16 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 15 9 15 13+                              , srcInfoPoints = []+                              }+                            "plus"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 15 17 15 34+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 15 21 15 23 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 15 17 15 20+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 15 17 15 20+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 15 17 15 20+                                      , srcInfoPoints = []+                                      }+                                    "Int")))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 15 24 15 34+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 15 28 15 30 ]+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 15 24 15 27+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 15 24 15 27+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 15 24 15 27+                                         , srcInfoPoints = []+                                         }+                                       "Int")))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 15 31 15 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 15 31 15 34+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 15 31 15 34+                                         , srcInfoPoints = []+                                         }+                                       "Int")))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 27+                          , srcInfoPoints = []+                          }+                        [ InfixMatch+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 27+                              , srcInfoPoints = []+                              }+                            (PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 10+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 10+                                    , srcInfoPoints = []+                                    }+                                  "x"))+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 16 12 16 16+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 16 11 16 12+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 16 12 16 16+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 16 16 16 17+                                     ]+                                 }+                               "plus")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 16 18 16 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 16 18 16 19+                                     , srcInfoPoints = []+                                     }+                                   "y")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 16 20 16 27+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 16 20 16 21 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 16 22 16 27+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 16 22 16 23+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 16 22 16 23+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 16 22 16 23+                                             , srcInfoPoints = []+                                             }+                                           "x")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 16 24 16 25+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 16 24 16 25+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 16 24 16 25+                                             , srcInfoPoints = []+                                             }+                                           "+")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 16 26 16 27+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 16 26 16 27+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 16 26 16 27+                                             , srcInfoPoints = []+                                             }+                                           "y")))))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 19 1 19 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 19 11 19 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 19 1 19 10+                , srcInfoPoints = []+                }+              "addAndOr3"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 19 14 19 25+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 19 16 19 18 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 19 14 19 15+                  , srcInfoPoints = []+                  }+                Nothing)+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 19 19 19 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 19 21 19 23 ]+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 19 19 19 20+                     , srcInfoPoints = []+                     }+                   Nothing)+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 19 24 19 25+                     , srcInfoPoints = []+                     }+                   Nothing)))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 20 1 22 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 21 3 21 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 20 1 22 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PartialSignatures.hs" 21 3 21 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 20 1 20 10+                   , srcInfoPoints = []+                   }+                 "addAndOr3")+              [ PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 20 11 20 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 20 11 20 12+                        , SrcSpan "tests/examples/PartialSignatures.hs" 20 13 20 14+                        , SrcSpan "tests/examples/PartialSignatures.hs" 20 16 20 17+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 20 12 20 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 20 12 20 13+                           , srcInfoPoints = []+                           }+                         "a")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 20 15 20 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 20 15 20 16+                           , srcInfoPoints = []+                           }+                         "b")+                  ]+              , PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 20 18 20 24+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 20 18 20 19+                        , SrcSpan "tests/examples/PartialSignatures.hs" 20 20 20 21+                        , SrcSpan "tests/examples/PartialSignatures.hs" 20 23 20 24+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 20 19 20 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 20 19 20 20+                           , srcInfoPoints = []+                           }+                         "c")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 20 22 20 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 20 22 20 23+                           , srcInfoPoints = []+                           }+                         "d")+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 20 25 20 47+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 20 25 20 26 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 20 27 20 47+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 20 27 20 28+                          , SrcSpan "tests/examples/PartialSignatures.hs" 20 38 20 39+                          , SrcSpan "tests/examples/PartialSignatures.hs" 20 46 20 47+                          ]+                      }+                    Boxed+                    [ InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 20 28 20 38+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 20 28 20 29+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 20 28 20 29+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 20 28 20 29+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 20 30 20 36+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 20 30 20 31+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 20 31 20 35+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 20 35 20 36+                                 ]+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 20 30 20 36+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 20 30 20 31+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 20 31 20 35+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 20 35 20 36+                                    ]+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 20 31 20 35+                                   , srcInfoPoints = []+                                   }+                                 "plus")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 20 37 20 38+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 20 37 20 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 20 37 20 38+                                   , srcInfoPoints = []+                                   }+                                 "d")))+                    , InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 20 40 20 46+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 20 40 20 41+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 20 40 20 41+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 20 40 20 41+                                   , srcInfoPoints = []+                                   }+                                 "b")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 20 42 20 44+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 20 42 20 44+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 20 42 20 44+                                   , srcInfoPoints = []+                                   }+                                 "||")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 20 45 20 46+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 20 45 20 46+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 20 45 20 46+                                   , srcInfoPoints = []+                                   }+                                 "c")))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 21 9 22 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 21 9 21 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 25 1 25 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 21 9 21 34+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 21 14 21 16 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 21 9 21 13+                              , srcInfoPoints = []+                              }+                            "plus"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 21 17 21 34+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 21 21 21 23 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 21 17 21 20+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 21 17 21 20+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 21 17 21 20+                                      , srcInfoPoints = []+                                      }+                                    "Int")))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 21 24 21 34+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 21 28 21 30 ]+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 21 24 21 27+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 21 24 21 27+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 21 24 21 27+                                         , srcInfoPoints = []+                                         }+                                       "Int")))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 21 31 21 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 21 31 21 34+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 21 31 21 34+                                         , srcInfoPoints = []+                                         }+                                       "Int")))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 27+                          , srcInfoPoints = []+                          }+                        [ InfixMatch+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 27+                              , srcInfoPoints = []+                              }+                            (PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 10+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 10+                                    , srcInfoPoints = []+                                    }+                                  "x"))+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 22 12 22 16+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 22 11 22 12+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 22 12 22 16+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 22 16 22 17+                                     ]+                                 }+                               "plus")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 22 18 22 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 22 18 22 19+                                     , srcInfoPoints = []+                                     }+                                   "y")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 22 20 22 27+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 22 20 22 21 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 22 22 22 27+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 22 22 22 23+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 22 22 22 23+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 22 22 22 23+                                             , srcInfoPoints = []+                                             }+                                           "x")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 22 24 22 25+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 22 24 22 25+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 22 24 22 25+                                             , srcInfoPoints = []+                                             }+                                           "+")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 22 26 22 27+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 22 26 22 27+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 22 26 22 27+                                             , srcInfoPoints = []+                                             }+                                           "y")))))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 25 1 25 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 25 11 25 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 25 1 25 10+                , srcInfoPoints = []+                }+              "addAndOr4"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 25 14 25 43+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 25 22 25 24 ]+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 25 14 25 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 25 14 25 15+                      , SrcSpan "tests/examples/PartialSignatures.hs" 25 20 25 21+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 25 15 25 20+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 25 15 25 18+                        , srcInfoPoints = []+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 25 15 25 16+                           , srcInfoPoints = []+                           }+                         Nothing)+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 25 17 25 18+                           , srcInfoPoints = []+                           }+                         Nothing))+                   (TyWildCard+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 25 19 25 20+                        , srcInfoPoints = []+                        }+                      Nothing)))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 25 25 25 43+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 25 33 25 35 ]+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 25 25 25 32+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 25 25 25 26+                         , SrcSpan "tests/examples/PartialSignatures.hs" 25 31 25 32+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 25 26 25 31+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 25 26 25 29+                           , srcInfoPoints = []+                           }+                         (TyWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 25 26 25 27+                              , srcInfoPoints = []+                              }+                            Nothing)+                         (TyWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 25 28 25 29+                              , srcInfoPoints = []+                              }+                            Nothing))+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 25 30 25 31+                           , srcInfoPoints = []+                           }+                         Nothing)))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 25 36 25 43+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 25 36 25 37+                         , SrcSpan "tests/examples/PartialSignatures.hs" 25 42 25 43+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 25 37 25 42+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 25 37 25 40+                           , srcInfoPoints = []+                           }+                         (TyWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 25 37 25 38+                              , srcInfoPoints = []+                              }+                            Nothing)+                         (TyWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 25 39 25 40+                              , srcInfoPoints = []+                              }+                            Nothing))+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 25 41 25 42+                           , srcInfoPoints = []+                           }+                         Nothing)))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 26 1 28 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 27 3 27 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 26 1 28 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PartialSignatures.hs" 27 3 27 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 26 1 26 10+                   , srcInfoPoints = []+                   }+                 "addAndOr4")+              [ PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 26 11 26 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 26 11 26 12+                        , SrcSpan "tests/examples/PartialSignatures.hs" 26 13 26 14+                        , SrcSpan "tests/examples/PartialSignatures.hs" 26 16 26 17+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 26 12 26 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 26 12 26 13+                           , srcInfoPoints = []+                           }+                         "a")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 26 15 26 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 26 15 26 16+                           , srcInfoPoints = []+                           }+                         "b")+                  ]+              , PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 26 18 26 24+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 26 18 26 19+                        , SrcSpan "tests/examples/PartialSignatures.hs" 26 20 26 21+                        , SrcSpan "tests/examples/PartialSignatures.hs" 26 23 26 24+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 26 19 26 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 26 19 26 20+                           , srcInfoPoints = []+                           }+                         "c")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 26 22 26 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 26 22 26 23+                           , srcInfoPoints = []+                           }+                         "d")+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 26 25 26 47+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 26 25 26 26 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 26 27 26 47+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 26 27 26 28+                          , SrcSpan "tests/examples/PartialSignatures.hs" 26 38 26 39+                          , SrcSpan "tests/examples/PartialSignatures.hs" 26 46 26 47+                          ]+                      }+                    Boxed+                    [ InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 26 28 26 38+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 26 28 26 29+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 26 28 26 29+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 26 28 26 29+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 26 30 26 36+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 26 30 26 31+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 26 31 26 35+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 26 35 26 36+                                 ]+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 26 30 26 36+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 26 30 26 31+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 26 31 26 35+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 26 35 26 36+                                    ]+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 26 31 26 35+                                   , srcInfoPoints = []+                                   }+                                 "plus")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 26 37 26 38+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 26 37 26 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 26 37 26 38+                                   , srcInfoPoints = []+                                   }+                                 "d")))+                    , InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 26 40 26 46+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 26 40 26 41+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 26 40 26 41+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 26 40 26 41+                                   , srcInfoPoints = []+                                   }+                                 "b")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 26 42 26 44+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 26 42 26 44+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 26 42 26 44+                                   , srcInfoPoints = []+                                   }+                                 "||")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 26 45 26 46+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 26 45 26 46+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 26 45 26 46+                                   , srcInfoPoints = []+                                   }+                                 "c")))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 27 9 28 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 27 9 27 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 31 1 31 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 27 9 27 34+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 27 14 27 16 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 27 9 27 13+                              , srcInfoPoints = []+                              }+                            "plus"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 27 17 27 34+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 27 21 27 23 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 27 17 27 20+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 27 17 27 20+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 27 17 27 20+                                      , srcInfoPoints = []+                                      }+                                    "Int")))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 27 24 27 34+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 27 28 27 30 ]+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 27 24 27 27+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 27 24 27 27+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 27 24 27 27+                                         , srcInfoPoints = []+                                         }+                                       "Int")))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 27 31 27 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 27 31 27 34+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 27 31 27 34+                                         , srcInfoPoints = []+                                         }+                                       "Int")))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 27+                          , srcInfoPoints = []+                          }+                        [ InfixMatch+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 27+                              , srcInfoPoints = []+                              }+                            (PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 10+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 10+                                    , srcInfoPoints = []+                                    }+                                  "x"))+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 28 12 28 16+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 28 11 28 12+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 28 12 28 16+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 28 16 28 17+                                     ]+                                 }+                               "plus")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 28 18 28 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 28 18 28 19+                                     , srcInfoPoints = []+                                     }+                                   "y")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 28 20 28 27+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 28 20 28 21 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 28 22 28 27+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 28 22 28 23+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 28 22 28 23+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 28 22 28 23+                                             , srcInfoPoints = []+                                             }+                                           "x")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 28 24 28 25+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 28 24 28 25+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 28 24 28 25+                                             , srcInfoPoints = []+                                             }+                                           "+")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 28 26 28 27+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 28 26 28 27+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 28 26 28 27+                                             , srcInfoPoints = []+                                             }+                                           "y")))))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 31 1 31 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 31 11 31 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 31 1 31 10+                , srcInfoPoints = []+                }+              "addAndOr5"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 31 14 31 40+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 31 21 31 23 ]+               }+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 31 14 31 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 31 14 31 15+                      , SrcSpan "tests/examples/PartialSignatures.hs" 31 16 31 17+                      , SrcSpan "tests/examples/PartialSignatures.hs" 31 19 31 20+                      ]+                  }+                Boxed+                [ TyWildCard+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 31 15 31 16+                      , srcInfoPoints = []+                      }+                    Nothing+                , TyWildCard+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 31 18 31 19+                      , srcInfoPoints = []+                      }+                    Nothing+                ])+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 31 24 31 40+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 31 31 31 33 ]+                  }+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 31 24 31 30+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 31 24 31 25+                         , SrcSpan "tests/examples/PartialSignatures.hs" 31 26 31 27+                         , SrcSpan "tests/examples/PartialSignatures.hs" 31 29 31 30+                         ]+                     }+                   Boxed+                   [ TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 31 25 31 26+                         , srcInfoPoints = []+                         }+                       Nothing+                   , TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 31 28 31 29+                         , srcInfoPoints = []+                         }+                       Nothing+                   ])+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 31 34 31 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 31 34 31 35+                         , SrcSpan "tests/examples/PartialSignatures.hs" 31 36 31 37+                         , SrcSpan "tests/examples/PartialSignatures.hs" 31 39 31 40+                         ]+                     }+                   Boxed+                   [ TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 31 35 31 36+                         , srcInfoPoints = []+                         }+                       Nothing+                   , TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 31 38 31 39+                         , srcInfoPoints = []+                         }+                       Nothing+                   ])))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 32 1 34 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 33 3 33 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 32 1 34 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PartialSignatures.hs" 33 3 33 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 32 1 32 10+                   , srcInfoPoints = []+                   }+                 "addAndOr5")+              [ PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 32 11 32 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 32 11 32 12+                        , SrcSpan "tests/examples/PartialSignatures.hs" 32 13 32 14+                        , SrcSpan "tests/examples/PartialSignatures.hs" 32 16 32 17+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 32 12 32 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 32 12 32 13+                           , srcInfoPoints = []+                           }+                         "a")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 32 15 32 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 32 15 32 16+                           , srcInfoPoints = []+                           }+                         "b")+                  ]+              , PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 32 18 32 24+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 32 18 32 19+                        , SrcSpan "tests/examples/PartialSignatures.hs" 32 20 32 21+                        , SrcSpan "tests/examples/PartialSignatures.hs" 32 23 32 24+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 32 19 32 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 32 19 32 20+                           , srcInfoPoints = []+                           }+                         "c")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 32 22 32 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 32 22 32 23+                           , srcInfoPoints = []+                           }+                         "d")+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 32 25 32 47+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 32 25 32 26 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 32 27 32 47+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 32 27 32 28+                          , SrcSpan "tests/examples/PartialSignatures.hs" 32 38 32 39+                          , SrcSpan "tests/examples/PartialSignatures.hs" 32 46 32 47+                          ]+                      }+                    Boxed+                    [ InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 32 28 32 38+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 32 28 32 29+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 32 28 32 29+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 32 28 32 29+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 32 30 32 36+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 32 30 32 31+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 32 31 32 35+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 32 35 32 36+                                 ]+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 32 30 32 36+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 32 30 32 31+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 32 31 32 35+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 32 35 32 36+                                    ]+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 32 31 32 35+                                   , srcInfoPoints = []+                                   }+                                 "plus")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 32 37 32 38+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 32 37 32 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 32 37 32 38+                                   , srcInfoPoints = []+                                   }+                                 "d")))+                    , InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 32 40 32 46+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 32 40 32 41+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 32 40 32 41+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 32 40 32 41+                                   , srcInfoPoints = []+                                   }+                                 "b")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 32 42 32 44+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 32 42 32 44+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 32 42 32 44+                                   , srcInfoPoints = []+                                   }+                                 "||")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 32 45 32 46+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 32 45 32 46+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 32 45 32 46+                                   , srcInfoPoints = []+                                   }+                                 "c")))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 33 9 34 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 33 9 33 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 37 1 37 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 33 9 33 34+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 33 14 33 16 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 33 9 33 13+                              , srcInfoPoints = []+                              }+                            "plus"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 33 17 33 34+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 33 21 33 23 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 33 17 33 20+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 33 17 33 20+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 33 17 33 20+                                      , srcInfoPoints = []+                                      }+                                    "Int")))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 33 24 33 34+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 33 28 33 30 ]+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 33 24 33 27+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 33 24 33 27+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 33 24 33 27+                                         , srcInfoPoints = []+                                         }+                                       "Int")))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 33 31 33 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 33 31 33 34+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 33 31 33 34+                                         , srcInfoPoints = []+                                         }+                                       "Int")))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 27+                          , srcInfoPoints = []+                          }+                        [ InfixMatch+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 27+                              , srcInfoPoints = []+                              }+                            (PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 10+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 10+                                    , srcInfoPoints = []+                                    }+                                  "x"))+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 34 12 34 16+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 34 11 34 12+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 34 12 34 16+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 34 16 34 17+                                     ]+                                 }+                               "plus")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 34 18 34 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 34 18 34 19+                                     , srcInfoPoints = []+                                     }+                                   "y")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 34 20 34 27+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 34 20 34 21 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 34 22 34 27+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 34 22 34 23+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 34 22 34 23+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 34 22 34 23+                                             , srcInfoPoints = []+                                             }+                                           "x")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 34 24 34 25+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 34 24 34 25+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 34 24 34 25+                                             , srcInfoPoints = []+                                             }+                                           "+")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 34 26 34 27+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 34 26 34 27+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 34 26 34 27+                                             , srcInfoPoints = []+                                             }+                                           "y")))))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 37 1 37 51+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 37 11 37 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 37 1 37 10+                , srcInfoPoints = []+                }+              "addAndOr6"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 37 14 37 51+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 37 23 37 25 ]+               }+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 37 14 37 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 37 14 37 15+                      , SrcSpan "tests/examples/PartialSignatures.hs" 37 18 37 19+                      , SrcSpan "tests/examples/PartialSignatures.hs" 37 21 37 22+                      ]+                  }+                Boxed+                [ TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 37 15 37 18+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 37 15 37 18+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 37 15 37 18+                            , srcInfoPoints = []+                            }+                          "Int"))+                , TyWildCard+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 37 20 37 21+                      , srcInfoPoints = []+                      }+                    Nothing+                ])+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 37 26 37 51+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 37 36 37 38 ]+                  }+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 37 26 37 35+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 37 26 37 27+                         , SrcSpan "tests/examples/PartialSignatures.hs" 37 31 37 32+                         , SrcSpan "tests/examples/PartialSignatures.hs" 37 34 37 35+                         ]+                     }+                   Boxed+                   [ TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 37 27 37 31+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 37 27 37 31+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 37 27 37 31+                               , srcInfoPoints = []+                               }+                             "Bool"))+                   , TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 37 33 37 34+                         , srcInfoPoints = []+                         }+                       Nothing+                   ])+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 37 39 37 51+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 37 39 37 40+                         , SrcSpan "tests/examples/PartialSignatures.hs" 37 50 37 51+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 37 40 37 50+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 37 40 37 45+                           , srcInfoPoints = []+                           }+                         (TyWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 37 40 37 41+                              , srcInfoPoints = []+                              }+                            Nothing)+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 37 42 37 45+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 37 42 37 45+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 37 42 37 45+                                    , srcInfoPoints = []+                                    }+                                  "Int"))))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 37 46 37 50+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 37 46 37 50+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 37 46 37 50+                                 , srcInfoPoints = []+                                 }+                               "Bool")))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 38 1 40 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 39 3 39 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 38 1 40 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PartialSignatures.hs" 39 3 39 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 38 1 38 10+                   , srcInfoPoints = []+                   }+                 "addAndOr6")+              [ PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 38 11 38 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 38 11 38 12+                        , SrcSpan "tests/examples/PartialSignatures.hs" 38 13 38 14+                        , SrcSpan "tests/examples/PartialSignatures.hs" 38 16 38 17+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 38 12 38 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 38 12 38 13+                           , srcInfoPoints = []+                           }+                         "a")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 38 15 38 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 38 15 38 16+                           , srcInfoPoints = []+                           }+                         "b")+                  ]+              , PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 38 18 38 24+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 38 18 38 19+                        , SrcSpan "tests/examples/PartialSignatures.hs" 38 20 38 21+                        , SrcSpan "tests/examples/PartialSignatures.hs" 38 23 38 24+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 38 19 38 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 38 19 38 20+                           , srcInfoPoints = []+                           }+                         "c")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 38 22 38 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 38 22 38 23+                           , srcInfoPoints = []+                           }+                         "d")+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 38 25 38 47+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 38 25 38 26 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 38 27 38 47+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 38 27 38 28+                          , SrcSpan "tests/examples/PartialSignatures.hs" 38 38 38 39+                          , SrcSpan "tests/examples/PartialSignatures.hs" 38 46 38 47+                          ]+                      }+                    Boxed+                    [ InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 38 28 38 38+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 38 28 38 29+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 38 28 38 29+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 38 28 38 29+                                   , srcInfoPoints = []+                                   }+                                 "a")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 38 30 38 36+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 38 30 38 31+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 38 31 38 35+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 38 35 38 36+                                 ]+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 38 30 38 36+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 38 30 38 31+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 38 31 38 35+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 38 35 38 36+                                    ]+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 38 31 38 35+                                   , srcInfoPoints = []+                                   }+                                 "plus")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 38 37 38 38+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 38 37 38 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 38 37 38 38+                                   , srcInfoPoints = []+                                   }+                                 "d")))+                    , InfixApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 38 40 38 46+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 38 40 38 41+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 38 40 38 41+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 38 40 38 41+                                   , srcInfoPoints = []+                                   }+                                 "b")))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 38 42 38 44+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 38 42 38 44+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 38 42 38 44+                                   , srcInfoPoints = []+                                   }+                                 "||")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 38 45 38 46+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 38 45 38 46+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 38 45 38 46+                                   , srcInfoPoints = []+                                   }+                                 "c")))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 39 9 40 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 39 9 39 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 43 1 43 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 39 9 39 34+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 39 14 39 16 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 39 9 39 13+                              , srcInfoPoints = []+                              }+                            "plus"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 39 17 39 34+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 39 21 39 23 ]+                             }+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 39 17 39 20+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 39 17 39 20+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 39 17 39 20+                                      , srcInfoPoints = []+                                      }+                                    "Int")))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 39 24 39 34+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 39 28 39 30 ]+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 39 24 39 27+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 39 24 39 27+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 39 24 39 27+                                         , srcInfoPoints = []+                                         }+                                       "Int")))+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 39 31 39 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PartialSignatures.hs" 39 31 39 34+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 39 31 39 34+                                         , srcInfoPoints = []+                                         }+                                       "Int")))))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 27+                          , srcInfoPoints = []+                          }+                        [ InfixMatch+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 27+                              , srcInfoPoints = []+                              }+                            (PVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 10+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 10+                                    , srcInfoPoints = []+                                    }+                                  "x"))+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 40 12 40 16+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 40 11 40 12+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 40 12 40 16+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 40 16 40 17+                                     ]+                                 }+                               "plus")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 40 18 40 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 40 18 40 19+                                     , srcInfoPoints = []+                                     }+                                   "y")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 40 20 40 27+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 40 20 40 21 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 40 22 40 27+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 40 22 40 23+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 40 22 40 23+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 40 22 40 23+                                             , srcInfoPoints = []+                                             }+                                           "x")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 40 24 40 25+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 40 24 40 25+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 40 24 40 25+                                             , srcInfoPoints = []+                                             }+                                           "+")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PartialSignatures.hs" 40 26 40 27+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 40 26 40 27+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs" 40 26 40 27+                                             , srcInfoPoints = []+                                             }+                                           "y")))))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 43 1 43 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 43 5 43 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 43 1 43 4+                , srcInfoPoints = []+                }+              "bar"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 43 8 43 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 43 10 43 12 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 43 8 43 9+                  , srcInfoPoints = []+                  }+                Nothing)+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 43 13 43 14+                  , srcInfoPoints = []+                  }+                Nothing))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 44 1 44 14+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 44 1 44 14+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 44 1 44 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 44 5 44 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 44 5 44 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 44 7 44 14+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 44 7 44 8 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 44 9 44 14+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 44 9 44 12+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 44 9 44 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 44 9 44 12+                               , srcInfoPoints = []+                               }+                             "not")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 44 13 44 14+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 44 13 44 14+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 44 13 44 14+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 47 1 47 11+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 47 7 47 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 47 1 47 6+                , srcInfoPoints = []+                }+              "alpha"+          ]+          (TyWildCard+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 47 10 47 11+               , srcInfoPoints = []+               }+             Nothing)+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 48 1 48 10+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 48 1 48 6+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 48 1 48 6+                  , srcInfoPoints = []+                  }+                "alpha"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 48 7 48 10+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 48 7 48 8 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 48 9 48 10+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 48 9 48 10+                     , srcInfoPoints = []+                     }+                   3+                   "3")))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 51 1 51 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 51 7 51 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 51 1 51 6+                , srcInfoPoints = []+                }+              "bravo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 16+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]+                           }+                         Nothing))))+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 51 15 51 16+                  , srcInfoPoints = []+                  }+                Nothing))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 52 1 52 10+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 52 1 52 6+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 52 1 52 6+                  , srcInfoPoints = []+                  }+                "bravo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 52 7 52 10+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 52 7 52 8 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 52 9 52 10+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 52 9 52 10+                     , srcInfoPoints = []+                     }+                   3+                   "3")))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 55 1 55 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 55 7 55 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 55 1 55 6+                , srcInfoPoints = []+                }+              "bravo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 16+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]+                           }+                         Nothing))))+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 55 15 55 16+                  , srcInfoPoints = []+                  }+                Nothing))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 56 1 56 10+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 56 1 56 6+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 56 1 56 6+                  , srcInfoPoints = []+                  }+                "bravo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 56 7 56 10+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 56 7 56 8 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 56 9 56 10+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 56 9 56 10+                     , srcInfoPoints = []+                     }+                   3+                   "3")))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 58 1 58 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 58 7 58 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 58 1 58 6+                , srcInfoPoints = []+                }+              "barry"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 58 10 58 29+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 58 13 58 15 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 58 10 58 12+                  , srcInfoPoints = []+                  }+                (Just+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 58 11 58 12+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 58 16 58 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 58 16 58 17+                      , SrcSpan "tests/examples/PartialSignatures.hs" 58 22 58 23+                      , SrcSpan "tests/examples/PartialSignatures.hs" 58 28 58 29+                      ]+                  }+                Boxed+                [ TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 58 17 58 22+                      , srcInfoPoints = []+                      }+                    (TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 58 17 58 19+                         , srcInfoPoints = []+                         }+                       (Just+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 58 18 58 19+                               , srcInfoPoints = []+                               }+                             "b")))+                    (TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 58 20 58 22+                         , srcInfoPoints = []+                         }+                       (Just+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 58 21 58 22+                               , srcInfoPoints = []+                               }+                             "a")))+                , TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 58 24 58 28+                      , srcInfoPoints = []+                      }+                    (TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 58 24 58 26+                         , srcInfoPoints = []+                         }+                       (Just+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 58 25 58 26+                               , srcInfoPoints = []+                               }+                             "b")))+                    (TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 58 27 58 28+                         , srcInfoPoints = []+                         }+                       Nothing)+                ]))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 59 1 59 30+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 59 1 59 30+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 59 1 59 6+                   , srcInfoPoints = []+                   }+                 "barry")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 59 7 59 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 59 7 59 8+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 59 9 59 30+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 59 9 59 10 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 59 11 59 30+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 59 11 59 12+                          , SrcSpan "tests/examples/PartialSignatures.hs" 59 20 59 21+                          , SrcSpan "tests/examples/PartialSignatures.hs" 59 29 59 30+                          ]+                      }+                    Boxed+                    [ App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 59 12 59 20+                          , srcInfoPoints = []+                          }+                        (Con+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 59 12 59 16+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 59 12 59 16+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 59 12 59 16+                                   , srcInfoPoints = []+                                   }+                                 "Left")))+                        (Lit+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 59 17 59 20+                             , srcInfoPoints = []+                             }+                           (String+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 59 17 59 20+                                , srcInfoPoints = []+                                }+                              "x"+                              "x"))+                    , App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 59 22 59 29+                          , srcInfoPoints = []+                          }+                        (Con+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 59 22 59 27+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 59 22 59 27+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 59 22 59 27+                                   , srcInfoPoints = []+                                   }+                                 "Right")))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 59 28 59 29+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 59 28 59 29+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 59 28 59 29+                                   , srcInfoPoints = []+                                   }+                                 "x")))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 61 1 61 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 61 5 61 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 61 1 61 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 26+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11+                         , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19+                         ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11+                            , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19+                            ]+                        }+                      (TyEquals+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11+                               , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19+                               ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9+                                 , srcInfoPoints = []+                                 }+                               "a"))+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16+                                    , srcInfoPoints = []+                                    }+                                  "Bool")))))))+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 61 20 61 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 61 20 61 21+                      , SrcSpan "tests/examples/PartialSignatures.hs" 61 22 61 23+                      , SrcSpan "tests/examples/PartialSignatures.hs" 61 25 61 26+                      ]+                  }+                Boxed+                [ TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 61 21 61 22+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 61 21 61 22+                         , srcInfoPoints = []+                         }+                       "a")+                , TyWildCard+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 61 24 61 25+                      , srcInfoPoints = []+                      }+                    Nothing+                ]))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 62 1 62 20+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 62 1 62 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 62 1 62 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 62 5 62 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 62 5 62 6 ]+               }+             (Tuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 62 7 62 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 62 7 62 8+                      , SrcSpan "tests/examples/PartialSignatures.hs" 62 12 62 13+                      , SrcSpan "tests/examples/PartialSignatures.hs" 62 19 62 20+                      ]+                  }+                Boxed+                [ Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 62 8 62 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 62 8 62 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 62 8 62 12+                            , srcInfoPoints = []+                            }+                          "True"))+                , Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 62 14 62 19+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 62 14 62 19+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 62 14 62 19+                            , srcInfoPoints = []+                            }+                          "False"))+                ]))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 65 1 65 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 65 7 65 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 65 1 65 6+                , srcInfoPoints = []+                }+              "every"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 65 10 65 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 65 12 65 14 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 65 10 65 11+                  , srcInfoPoints = []+                  }+                Nothing)+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 65 15 65 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 65 17 65 19 ]+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 65 15 65 16+                     , srcInfoPoints = []+                     }+                   Nothing)+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 65 20 65 24+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 65 20 65 24+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 65 20 65 24+                           , srcInfoPoints = []+                           }+                         "Bool")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 66 1 67 35+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 66 1 66 18+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 66 1 66 6+                   , srcInfoPoints = []+                   }+                 "every")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 66 7 66 8+                    , srcInfoPoints = []+                    }+              , PList+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 66 9 66 11+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 66 9 66 10+                        , SrcSpan "tests/examples/PartialSignatures.hs" 66 10 66 11+                        ]+                    }+                  []+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 66 12 66 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 66 12 66 13 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 66 14 66 18+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 66 14 66 18+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 66 14 66 18+                            , srcInfoPoints = []+                            }+                          "True"))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 67 1 67 35+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 67 1 67 6+                   , srcInfoPoints = []+                   }+                 "every")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 67 7 67 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 67 7 67 8+                       , srcInfoPoints = []+                       }+                     "p")+              , PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 67 9 67 15+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 67 9 67 10+                        , SrcSpan "tests/examples/PartialSignatures.hs" 67 14 67 15+                        ]+                    }+                  (PInfixApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 67 10 67 14+                       , srcInfoPoints = []+                       }+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 67 10 67 11+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 67 10 67 11+                             , srcInfoPoints = []+                             }+                           "x"))+                     (Special+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 67 11 67 12+                          , srcInfoPoints = []+                          }+                        (Cons+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 67 11 67 12+                             , srcInfoPoints = []+                             }))+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 67 12 67 14+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 67 12 67 14+                             , srcInfoPoints = []+                             }+                           "xs")))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 67 16 67 35+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 67 16 67 17 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 35+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 21+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 19+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 19+                                  , srcInfoPoints = []+                                  }+                                "p")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 67 20 67 21+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 67 20 67 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 67 20 67 21+                                  , srcInfoPoints = []+                                  }+                                "x"))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 67 22 67 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 67 22 67 24+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 67 22 67 24+                               , srcInfoPoints = []+                               }+                             "&&")))+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 35+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 32+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 30+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 30+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 30+                                     , srcInfoPoints = []+                                     }+                                   "every")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 67 31 67 32+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 67 31 67 32+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 67 31 67 32+                                     , srcInfoPoints = []+                                     }+                                   "p"))))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 67 33 67 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 67 33 67 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 67 33 67 35+                                  , srcInfoPoints = []+                                  }+                                "xs"))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 69 1 69 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 69 7 69 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 69 1 69 6+                , srcInfoPoints = []+                }+              "every"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 69 10 69 38+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 69 23 69 25 ]+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 69 10 69 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 69 10 69 11+                      , SrcSpan "tests/examples/PartialSignatures.hs" 69 21 69 22+                      ]+                  }+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 69 11 69 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 69 14 69 16 ]+                     }+                   (TyWildCard+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 69 11 69 13+                        , srcInfoPoints = []+                        }+                      (Just+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 69 12 69 13+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 69 17 69 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 69 17 69 21+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 69 17 69 21+                              , srcInfoPoints = []+                              }+                            "Bool")))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 69 26 69 38+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 69 31 69 33 ]+                  }+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 69 26 69 30+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 69 26 69 27+                         , SrcSpan "tests/examples/PartialSignatures.hs" 69 29 69 30+                         ]+                     }+                   (TyWildCard+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 69 27 69 29+                        , srcInfoPoints = []+                        }+                      (Just+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 69 28 69 29+                              , srcInfoPoints = []+                              }+                            "a"))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 69 34 69 38+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 69 34 69 38+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 69 34 69 38+                           , srcInfoPoints = []+                           }+                         "Bool")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 70 1 71 35+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 70 1 70 18+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 70 1 70 6+                   , srcInfoPoints = []+                   }+                 "every")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 70 7 70 8+                    , srcInfoPoints = []+                    }+              , PList+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 70 9 70 11+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 70 9 70 10+                        , SrcSpan "tests/examples/PartialSignatures.hs" 70 10 70 11+                        ]+                    }+                  []+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 70 12 70 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 70 12 70 13 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 70 14 70 18+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 70 14 70 18+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 70 14 70 18+                            , srcInfoPoints = []+                            }+                          "True"))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 71 1 71 35+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 71 1 71 6+                   , srcInfoPoints = []+                   }+                 "every")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 71 7 71 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 71 7 71 8+                       , srcInfoPoints = []+                       }+                     "p")+              , PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 71 9 71 15+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 71 9 71 10+                        , SrcSpan "tests/examples/PartialSignatures.hs" 71 14 71 15+                        ]+                    }+                  (PInfixApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 71 10 71 14+                       , srcInfoPoints = []+                       }+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 71 10 71 11+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 71 10 71 11+                             , srcInfoPoints = []+                             }+                           "x"))+                     (Special+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 71 11 71 12+                          , srcInfoPoints = []+                          }+                        (Cons+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 71 11 71 12+                             , srcInfoPoints = []+                             }))+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 71 12 71 14+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 71 12 71 14+                             , srcInfoPoints = []+                             }+                           "xs")))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 71 16 71 35+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 71 16 71 17 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 35+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 21+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 19+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 19+                                  , srcInfoPoints = []+                                  }+                                "p")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 71 20 71 21+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 71 20 71 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 71 20 71 21+                                  , srcInfoPoints = []+                                  }+                                "x"))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 71 22 71 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 71 22 71 24+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 71 22 71 24+                               , srcInfoPoints = []+                               }+                             "&&")))+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 35+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 32+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 30+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 30+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 30+                                     , srcInfoPoints = []+                                     }+                                   "every")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 71 31 71 32+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 71 31 71 32+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 71 31 71 32+                                     , srcInfoPoints = []+                                     }+                                   "p"))))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 71 33 71 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 71 33 71 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 71 33 71 35+                                  , srcInfoPoints = []+                                  }+                                "xs"))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 74 1 74 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 74 5 74 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 74 1 74 4+                , srcInfoPoints = []+                }+              "bar"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 74 8 74 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 74 13 74 15 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 74 8 74 12+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 74 8 74 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 74 8 74 12+                        , srcInfoPoints = []+                        }+                      "Bool")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 74 16 74 20+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 74 16 74 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 74 16 74 20+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 75 1 75 17+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 75 1 75 17+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 75 1 75 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 75 5 75 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 75 5 75 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 75 7 75 17+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 75 7 75 8 ]+                   }+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 75 9 75 17+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 75 9 75 10+                          , SrcSpan "tests/examples/PartialSignatures.hs" 75 16 75 17+                          ]+                      }+                    (ExpTypeSig+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 75 10 75 16+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 75 12 75 14 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 75 10 75 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 75 10 75 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 75 10 75 11+                                  , srcInfoPoints = []+                                  }+                                "x")))+                       (TyWildCard+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 75 15 75 16+                            , srcInfoPoints = []+                            }+                          Nothing))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 77 1 77 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 77 5 77 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 77 1 77 4+                , srcInfoPoints = []+                }+              "bar"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 77 8 77 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 77 11 77 13 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 77 8 77 10+                  , srcInfoPoints = []+                  }+                (Just+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 77 9 77 10+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 77 14 77 16+                  , srcInfoPoints = []+                  }+                (Just+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 77 15 77 16+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 78 1 79 25+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 78 1 78 26+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 78 1 78 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PApp+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 78 5 78 9+                    , srcInfoPoints = []+                    }+                  (UnQual+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 78 5 78 9+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 78 5 78 9+                          , srcInfoPoints = []+                          }+                        "True"))+                  []+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 78 11 78 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 78 11 78 12 ]+                   }+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 78 13 78 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 78 13 78 14+                          , SrcSpan "tests/examples/PartialSignatures.hs" 78 25 78 26+                          ]+                      }+                    (ExpTypeSig+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 78 14 78 25+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 78 20 78 22 ]+                         }+                       (Con+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 78 14 78 19+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 78 14 78 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 78 14 78 19+                                  , srcInfoPoints = []+                                  }+                                "False")))+                       (TyWildCard+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 78 23 78 25+                            , srcInfoPoints = []+                            }+                          (Just+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 78 24 78 25+                                  , srcInfoPoints = []+                                  }+                                "a"))))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 79 1 79 25+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 79 1 79 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PApp+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 79 5 79 10+                    , srcInfoPoints = []+                    }+                  (UnQual+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 79 5 79 10+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 79 5 79 10+                          , srcInfoPoints = []+                          }+                        "False"))+                  []+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 79 11 79 25+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 79 11 79 12 ]+                   }+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 79 13 79 25+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 79 13 79 14+                          , SrcSpan "tests/examples/PartialSignatures.hs" 79 24 79 25+                          ]+                      }+                    (ExpTypeSig+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 79 14 79 24+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 79 19 79 21 ]+                         }+                       (Con+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 79 14 79 18+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 79 14 79 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 79 14 79 18+                                  , srcInfoPoints = []+                                  }+                                "True")))+                       (TyWildCard+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 79 22 79 24+                            , srcInfoPoints = []+                            }+                          (Just+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 79 23 79 24+                                  , srcInfoPoints = []+                                  }+                                "a"))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 82 1 82 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 82 10 82 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 82 1 82 9+                , srcInfoPoints = []+                }+              "arbitCs1"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 29+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]+                           }+                         Nothing))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 82 18 82 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 82 20 82 22 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 82 18 82 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 82 18 82 19+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 82 23 82 29+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 82 23 82 29+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 82 23 82 29+                           , srcInfoPoints = []+                           }+                         "String")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 83 1 83 44+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 83 1 83 44+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 83 1 83 9+                   , srcInfoPoints = []+                   }+                 "arbitCs1")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 83 10 83 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 83 10 83 11+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 83 12 83 44+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 83 12 83 13 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 44+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 27+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 18+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 18+                                  , srcInfoPoints = []+                                  }+                                "show")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 83 19 83 27+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/PartialSignatures.hs" 83 19 83 20+                                , SrcSpan "tests/examples/PartialSignatures.hs" 83 26 83 27+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 83 20 83 26+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 83 20 83 24+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 83 20 83 24+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 83 20 83 24+                                        , srcInfoPoints = []+                                        }+                                      "succ")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 83 25 83 26+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 83 25 83 26+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 83 25 83 26+                                        , srcInfoPoints = []+                                        }+                                      "x"))))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 83 28 83 30+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 83 28 83 30+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 83 28 83 30+                               , srcInfoPoints = []+                               }+                             "++")))+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 83 31 83 44+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 83 31 83 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 83 31 83 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 83 31 83 35+                                  , srcInfoPoints = []+                                  }+                                "show")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 83 36 83 44+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/PartialSignatures.hs" 83 36 83 37+                                , SrcSpan "tests/examples/PartialSignatures.hs" 83 43 83 44+                                ]+                            }+                          (InfixApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 83 37 83 43+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 83 37 83 38+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 83 37 83 38+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 83 37 83 38+                                        , srcInfoPoints = []+                                        }+                                      "x")))+                             (QVarOp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 83 39 83 41+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 83 39 83 41+                                     , srcInfoPoints = []+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 83 39 83 41+                                        , srcInfoPoints = []+                                        }+                                      "==")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 83 42 83 43+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 83 42 83 43+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 83 42 83 43+                                        , srcInfoPoints = []+                                        }+                                      "x"))))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 85 1 85 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 85 10 85 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 85 1 85 9+                , srcInfoPoints = []+                }+              "arbitCs2"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 85 13 85 39+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 85 13 85 27+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 85 13 85 14+                         , SrcSpan "tests/examples/PartialSignatures.hs" 85 20 85 21+                         , SrcSpan "tests/examples/PartialSignatures.hs" 85 23 85 24+                         , SrcSpan "tests/examples/PartialSignatures.hs" 85 25 85 27+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18+                                     , srcInfoPoints = []+                                     }+                                   "Show")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 85 22 85 23+                         , srcInfoPoints = []+                         }+                       (TyWildCard+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 85 22 85 23+                            , srcInfoPoints = []+                            }+                          Nothing)+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 85 28 85 39+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 85 30 85 32 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 85 28 85 29+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 85 28 85 29+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 85 33 85 39+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 85 33 85 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 85 33 85 39+                           , srcInfoPoints = []+                           }+                         "String")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 86 1 86 24+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 86 1 86 24+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 86 1 86 9+                   , srcInfoPoints = []+                   }+                 "arbitCs2")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 86 10 86 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 86 10 86 11+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 86 12 86 24+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 86 12 86 13 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 86 14 86 24+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 86 14 86 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 86 14 86 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 86 14 86 22+                               , srcInfoPoints = []+                               }+                             "arbitCs1")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 86 23 86 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 86 23 86 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 86 23 86 24+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 88 1 88 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 88 10 88 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 88 1 88 9+                , srcInfoPoints = []+                }+              "arbitCs3"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 88 13 88 47+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 88 13 88 35+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 88 13 88 14+                         , SrcSpan "tests/examples/PartialSignatures.hs" 88 20 88 21+                         , SrcSpan "tests/examples/PartialSignatures.hs" 88 28 88 29+                         , SrcSpan "tests/examples/PartialSignatures.hs" 88 31 88 32+                         , SrcSpan "tests/examples/PartialSignatures.hs" 88 33 88 35+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18+                                     , srcInfoPoints = []+                                     }+                                   "Show")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26+                                     , srcInfoPoints = []+                                     }+                                   "Enum")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 88 30 88 31+                         , srcInfoPoints = []+                         }+                       (TyWildCard+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 88 30 88 31+                            , srcInfoPoints = []+                            }+                          Nothing)+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 88 36 88 47+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 88 38 88 40 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 88 36 88 37+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 88 36 88 37+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 88 41 88 47+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 88 41 88 47+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 88 41 88 47+                           , srcInfoPoints = []+                           }+                         "String")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 89 1 89 24+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 89 1 89 24+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 89 1 89 9+                   , srcInfoPoints = []+                   }+                 "arbitCs3")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 89 10 89 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 89 10 89 11+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 89 12 89 24+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 89 12 89 13 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 89 14 89 24+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 89 14 89 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 89 14 89 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 89 14 89 22+                               , srcInfoPoints = []+                               }+                             "arbitCs1")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 89 23 89 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 89 23 89 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 89 23 89 24+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 91 1 91 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 91 10 91 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 91 1 91 9+                , srcInfoPoints = []+                }+              "arbitCs4"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 91 13 91 37+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 91 13 91 25+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 91 13 91 14+                         , SrcSpan "tests/examples/PartialSignatures.hs" 91 18 91 19+                         , SrcSpan "tests/examples/PartialSignatures.hs" 91 21 91 22+                         , SrcSpan "tests/examples/PartialSignatures.hs" 91 23 91 25+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16+                                     , srcInfoPoints = []+                                     }+                                   "Eq")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 91 20 91 21+                         , srcInfoPoints = []+                         }+                       (TyWildCard+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 91 20 91 21+                            , srcInfoPoints = []+                            }+                          Nothing)+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 91 26 91 37+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 91 28 91 30 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 91 26 91 27+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 91 26 91 27+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 91 31 91 37+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 91 31 91 37+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 91 31 91 37+                           , srcInfoPoints = []+                           }+                         "String")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 92 1 92 24+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 92 1 92 24+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 92 1 92 9+                   , srcInfoPoints = []+                   }+                 "arbitCs4")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 92 10 92 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 92 10 92 11+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 92 12 92 24+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 92 12 92 13 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 92 14 92 24+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 92 14 92 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 92 14 92 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 92 14 92 22+                               , srcInfoPoints = []+                               }+                             "arbitCs1")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 92 23 92 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 92 23 92 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 92 23 92 24+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 94 1 94 53+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 94 10 94 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 94 1 94 9+                , srcInfoPoints = []+                }+              "arbitCs5"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 94 13 94 53+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 94 13 94 41+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 94 13 94 14+                         , SrcSpan "tests/examples/PartialSignatures.hs" 94 18 94 19+                         , SrcSpan "tests/examples/PartialSignatures.hs" 94 26 94 27+                         , SrcSpan "tests/examples/PartialSignatures.hs" 94 34 94 35+                         , SrcSpan "tests/examples/PartialSignatures.hs" 94 37 94 38+                         , SrcSpan "tests/examples/PartialSignatures.hs" 94 39 94 41+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16+                                     , srcInfoPoints = []+                                     }+                                   "Eq")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24+                                     , srcInfoPoints = []+                                     }+                                   "Enum")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32+                                     , srcInfoPoints = []+                                     }+                                   "Show")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 94 36 94 37+                         , srcInfoPoints = []+                         }+                       (TyWildCard+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 36 94 37+                            , srcInfoPoints = []+                            }+                          Nothing)+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 94 42 94 53+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 94 44 94 46 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 94 42 94 43+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 94 42 94 43+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 94 47 94 53+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 94 47 94 53+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 94 47 94 53+                           , srcInfoPoints = []+                           }+                         "String")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 95 1 95 24+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 95 1 95 24+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 95 1 95 9+                   , srcInfoPoints = []+                   }+                 "arbitCs5")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 95 10 95 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 95 10 95 11+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 95 12 95 24+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 95 12 95 13 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 95 14 95 24+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 95 14 95 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 95 14 95 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 95 14 95 22+                               , srcInfoPoints = []+                               }+                             "arbitCs1")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 95 23 95 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 95 23 95 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 95 23 95 24+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 98 1 98 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 98 5 98 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 98 1 98 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 19+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]+                           }+                         Nothing))))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 98 13 98 19+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 98 13 98 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 98 13 98 19+                        , srcInfoPoints = []+                        }+                      "String"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 99 1 99 10+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 99 1 99 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 99 1 99 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 99 5 99 10+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 99 5 99 6 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 99 7 99 10+                  , srcInfoPoints = []+                  }+                (String+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 99 7 99 10+                     , srcInfoPoints = []+                     }+                   "x"+                   "x")))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 105 1 105 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 105 5 105 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 105 1 105 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 14+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]+                           }+                         Nothing))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 105 13 105 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 105 13 105 14+                     , srcInfoPoints = []+                     }+                   "a")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 106 1 106 8+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 106 1 106 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 106 1 106 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 106 5 106 8+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 106 5 106 6 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 106 7 106 8+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 106 7 106 8+                     , srcInfoPoints = []+                     }+                   3+                   "3")))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 109 1 109 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 109 5 109 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 109 1 109 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 14+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]+                           }+                         Nothing))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 109 13 109 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 109 13 109 14+                     , srcInfoPoints = []+                     }+                   "a")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 110 1 110 8+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 110 1 110 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 110 1 110 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 110 5 110 8+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 110 5 110 6 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 110 7 110 8+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 110 7 110 8+                     , srcInfoPoints = []+                     }+                   3+                   "3")))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 112 1 112 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 112 6 112 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 112 1 112 5+                , srcInfoPoints = []+                }+              "fall"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 112 9 112 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 112 9 112 15+                   , SrcSpan "tests/examples/PartialSignatures.hs" 112 18 112 19+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 112 16 112 17+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 112 16 112 17+                         , srcInfoPoints = []+                         }+                       "a")+                ])+             Nothing+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 112 20 112 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 112 22 112 24 ]+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 112 20 112 21+                     , srcInfoPoints = []+                     }+                   Nothing)+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 112 25 112 26+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 112 25 112 26+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 113 1 113 11+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 113 1 113 11+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 113 1 113 5+                   , srcInfoPoints = []+                   }+                 "fall")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 113 6 113 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 113 6 113 7+                       , srcInfoPoints = []+                       }+                     "v")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 113 8 113 11+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 113 8 113 9 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 113 10 113 11+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 113 10 113 11+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 113 10 113 11+                            , srcInfoPoints = []+                            }+                          "v"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 115 1 115 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 115 5 115 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 115 1 115 4+                , srcInfoPoints = []+                }+              "bar"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 115 8 115 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 115 11 115 13 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 115 8 115 10+                  , srcInfoPoints = []+                  }+                (Just+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 115 9 115 10+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 115 14 115 16+                  , srcInfoPoints = []+                  }+                (Just+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 115 15 115 16+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 116 1 116 14+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 116 1 116 14+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 116 1 116 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 116 5 116 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 116 5 116 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 116 7 116 14+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 116 7 116 8 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 116 9 116 14+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 116 9 116 12+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 116 9 116 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 116 9 116 12+                               , srcInfoPoints = []+                               }+                             "not")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 116 13 116 14+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 116 13 116 14+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 116 13 116 14+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 118 1 118 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 118 5 118 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 118 1 118 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 118 8 118 35+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 118 31 118 33 ]+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 118 8 118 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 118 8 118 9+                      , SrcSpan "tests/examples/PartialSignatures.hs" 118 29 118 30+                      ]+                  }+                (TyForall+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 118 9 118 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 118 9 118 15+                         , SrcSpan "tests/examples/PartialSignatures.hs" 118 17 118 18+                         ]+                     }+                   (Just+                      [ UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 118 16 118 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 118 16 118 17+                               , srcInfoPoints = []+                               }+                             "a")+                      ])+                   Nothing+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 118 19 118 29+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 118 23 118 25 ]+                        }+                      (TyList+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 118 19 118 22+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 118 19 118 20+                               , SrcSpan "tests/examples/PartialSignatures.hs" 118 21 118 22+                               ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 118 20 118 21+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 118 20 118 21+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyList+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 118 26 118 29+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 118 26 118 27+                               , SrcSpan "tests/examples/PartialSignatures.hs" 118 28 118 29+                               ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 118 27 118 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 118 27 118 28+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 118 34 118 35+                  , srcInfoPoints = []+                  }+                Nothing))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 119 1 119 40+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 119 1 119 40+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 119 1 119 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 119 5 119 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 119 5 119 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 119 7 119 40+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 119 7 119 8 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 119 9 119 40+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 119 9 119 10+                          , SrcSpan "tests/examples/PartialSignatures.hs" 119 25 119 26+                          , SrcSpan "tests/examples/PartialSignatures.hs" 119 39 119 40+                          ]+                      }+                    Boxed+                    [ App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 119 10 119 25+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 119 10 119 11+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 119 10 119 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 119 10 119 11+                                   , srcInfoPoints = []+                                   }+                                 "x")))+                        (List+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 119 12 119 25+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 119 12 119 13+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 119 17 119 18+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 119 24 119 25+                                 ]+                             }+                           [ Con+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 119 13 119 17+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 119 13 119 17+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 119 13 119 17+                                       , srcInfoPoints = []+                                       }+                                     "True"))+                           , Con+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 119 19 119 24+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 119 19 119 24+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 119 19 119 24+                                       , srcInfoPoints = []+                                       }+                                     "False"))+                           ])+                    , App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 119 27 119 39+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 119 27 119 28+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 119 27 119 28+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 119 27 119 28+                                   , srcInfoPoints = []+                                   }+                                 "x")))+                        (List+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 119 29 119 39+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 119 29 119 30+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 119 33 119 34+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 119 38 119 39+                                 ]+                             }+                           [ Lit+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 119 30 119 33+                                 , srcInfoPoints = []+                                 }+                               (Char+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 119 30 119 33+                                    , srcInfoPoints = []+                                    }+                                  'a'+                                  "a")+                           , Lit+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 119 35 119 38+                                 , srcInfoPoints = []+                                 }+                               (Char+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 119 35 119 38+                                    , srcInfoPoints = []+                                    }+                                  'b'+                                  "b")+                           ])+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 121 1 121 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 121 5 121 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 121 1 121 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 121 8 121 42+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 121 31 121 33 ]+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 121 8 121 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 121 8 121 9+                      , SrcSpan "tests/examples/PartialSignatures.hs" 121 29 121 30+                      ]+                  }+                (TyForall+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 121 9 121 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 121 9 121 15+                         , SrcSpan "tests/examples/PartialSignatures.hs" 121 17 121 18+                         ]+                     }+                   (Just+                      [ UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 121 16 121 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 121 16 121 17+                               , srcInfoPoints = []+                               }+                             "a")+                      ])+                   Nothing+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 121 19 121 29+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 121 23 121 25 ]+                        }+                      (TyList+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 121 19 121 22+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 121 19 121 20+                               , SrcSpan "tests/examples/PartialSignatures.hs" 121 21 121 22+                               ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 121 20 121 21+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 121 20 121 21+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyList+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 121 26 121 29+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 121 26 121 27+                               , SrcSpan "tests/examples/PartialSignatures.hs" 121 28 121 29+                               ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 121 27 121 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 121 27 121 28+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 121 34 121 42+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 121 34 121 35+                      , SrcSpan "tests/examples/PartialSignatures.hs" 121 36 121 37+                      , SrcSpan "tests/examples/PartialSignatures.hs" 121 41 121 42+                      ]+                  }+                Boxed+                [ TyWildCard+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 121 35 121 36+                      , srcInfoPoints = []+                      }+                    Nothing+                , TyApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 121 38 121 41+                      , srcInfoPoints = []+                      }+                    (TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 121 38 121 39+                         , srcInfoPoints = []+                         }+                       Nothing)+                    (TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 121 40 121 41+                         , srcInfoPoints = []+                         }+                       Nothing)+                ]))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 122 1 122 40+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 122 1 122 40+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 122 1 122 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 122 5 122 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 122 5 122 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 122 7 122 40+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 122 7 122 8 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 122 9 122 40+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 122 9 122 10+                          , SrcSpan "tests/examples/PartialSignatures.hs" 122 25 122 26+                          , SrcSpan "tests/examples/PartialSignatures.hs" 122 39 122 40+                          ]+                      }+                    Boxed+                    [ App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 122 10 122 25+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 122 10 122 11+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 122 10 122 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 122 10 122 11+                                   , srcInfoPoints = []+                                   }+                                 "x")))+                        (List+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 122 12 122 25+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 122 12 122 13+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 122 17 122 18+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 122 24 122 25+                                 ]+                             }+                           [ Con+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 122 13 122 17+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 122 13 122 17+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 122 13 122 17+                                       , srcInfoPoints = []+                                       }+                                     "True"))+                           , Con+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 122 19 122 24+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 122 19 122 24+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 122 19 122 24+                                       , srcInfoPoints = []+                                       }+                                     "False"))+                           ])+                    , App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 122 27 122 39+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 122 27 122 28+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 122 27 122 28+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 122 27 122 28+                                   , srcInfoPoints = []+                                   }+                                 "x")))+                        (List+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 122 29 122 39+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 122 29 122 30+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 122 33 122 34+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 122 38 122 39+                                 ]+                             }+                           [ Lit+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 122 30 122 33+                                 , srcInfoPoints = []+                                 }+                               (Char+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 122 30 122 33+                                    , srcInfoPoints = []+                                    }+                                  'a'+                                  "a")+                           , Lit+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 122 35 122 38+                                 , srcInfoPoints = []+                                 }+                               (Char+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 122 35 122 38+                                    , srcInfoPoints = []+                                    }+                                  'b'+                                  "b")+                           ])+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 125 1 125 48+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 125 9 125 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 125 1 125 8+                , srcInfoPoints = []+                }+              "monoLoc"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 125 12 125 48+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 125 12 125 18+                   , SrcSpan "tests/examples/PartialSignatures.hs" 125 20 125 21+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 125 19 125 20+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 125 19 125 20+                         , srcInfoPoints = []+                         }+                       "a")+                ])+             Nothing+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 125 22 125 48+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 125 24 125 26 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 125 22 125 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 125 22 125 23+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 125 27 125 48+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 125 27 125 28+                         , SrcSpan "tests/examples/PartialSignatures.hs" 125 39 125 40+                         , SrcSpan "tests/examples/PartialSignatures.hs" 125 47 125 48+                         ]+                     }+                   Boxed+                   [ TyTuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 125 28 125 39+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 125 28 125 29+                             , SrcSpan "tests/examples/PartialSignatures.hs" 125 30 125 31+                             , SrcSpan "tests/examples/PartialSignatures.hs" 125 38 125 39+                             ]+                         }+                       Boxed+                       [ TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 125 29 125 30+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 125 29 125 30+                                , srcInfoPoints = []+                                }+                              "a")+                       , TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 125 32 125 38+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 125 32 125 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 125 32 125 38+                                   , srcInfoPoints = []+                                   }+                                 "String"))+                       ]+                   , TyTuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 125 41 125 47+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 125 41 125 42+                             , SrcSpan "tests/examples/PartialSignatures.hs" 125 43 125 44+                             , SrcSpan "tests/examples/PartialSignatures.hs" 125 46 125 47+                             ]+                         }+                       Boxed+                       [ TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 125 42 125 43+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 125 42 125 43+                                , srcInfoPoints = []+                                }+                              "a")+                       , TyWildCard+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 125 45 125 46+                             , srcInfoPoints = []+                             }+                           Nothing+                       ]+                   ])))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 126 1 129 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 127 3 127 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 126 1 129 21+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PartialSignatures.hs" 127 3 127 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 126 1 126 8+                   , srcInfoPoints = []+                   }+                 "monoLoc")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 126 9 126 10+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 126 9 126 10+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 126 11 126 31+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 126 11 126 12 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 126 13 126 31+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 126 13 126 14+                          , SrcSpan "tests/examples/PartialSignatures.hs" 126 21 126 22+                          , SrcSpan "tests/examples/PartialSignatures.hs" 126 30 126 31+                          ]+                      }+                    Boxed+                    [ App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 126 14 126 20+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 126 14 126 15+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 126 14 126 15+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 126 14 126 15+                                   , srcInfoPoints = []+                                   }+                                 "g")))+                        (Con+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 126 16 126 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 126 16 126 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 126 16 126 20+                                   , srcInfoPoints = []+                                   }+                                 "True")))+                    , App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 126 23 126 30+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 126 23 126 24+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 126 23 126 24+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 126 23 126 24+                                   , srcInfoPoints = []+                                   }+                                 "g")))+                        (Con+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 126 25 126 30+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 126 25 126 30+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 126 25 126 30+                                   , srcInfoPoints = []+                                   }+                                 "False")))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 128 5 129 21+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 128 5 128 5+                          , SrcSpan "tests/examples/PartialSignatures.hs" 129 5 129 5+                          , SrcSpan "tests/examples/PartialSignatures.hs" 151 1 151 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 128 5 128 26+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 128 7 128 9 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 128 5 128 6+                              , srcInfoPoints = []+                              }+                            "g"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 128 10 128 26+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 128 12 128 14 ]+                             }+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 128 10 128 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 128 10 128 11+                                   , srcInfoPoints = []+                                   }+                                 "t"))+                           (TyTuple+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 128 15 128 26+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 128 15 128 16+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 128 17 128 18+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 128 25 128 26+                                    ]+                                }+                              Boxed+                              [ TyVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 128 16 128 17+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 128 16 128 17+                                       , srcInfoPoints = []+                                       }+                                     "a")+                              , TyCon+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 128 19 128 25+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 128 19 128 25+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 128 19 128 25+                                          , srcInfoPoints = []+                                          }+                                        "String"))+                              ]))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 129 5 129 21+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 129 5 129 21+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 129 5 129 6+                                 , srcInfoPoints = []+                                 }+                               "g")+                            [ PWildCard+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 129 7 129 8+                                  , srcInfoPoints = []+                                  }+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 129 9 129 21+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 129 9 129 10 ]+                                 }+                               (Tuple+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 129 11 129 21+                                    , srcInfoPoints =+                                        [ SrcSpan+                                            "tests/examples/PartialSignatures.hs" 129 11 129 12+                                        , SrcSpan+                                            "tests/examples/PartialSignatures.hs" 129 13 129 14+                                        , SrcSpan+                                            "tests/examples/PartialSignatures.hs" 129 20 129 21+                                        ]+                                    }+                                  Boxed+                                  [ Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 129 12 129 13+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 129 12 129 13+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/PartialSignatures.hs"+                                                    129+                                                    12+                                                    129+                                                    13+                                              , srcInfoPoints = []+                                              }+                                            "x"))+                                  , Lit+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 129 15 129 20+                                        , srcInfoPoints = []+                                        }+                                      (String+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 129 15 129 20+                                           , srcInfoPoints = []+                                           }+                                         "foo"+                                         "foo")+                                  ]))+                            Nothing+                        ]+                    ]))+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 151 1 151 5+            , srcInfoPoints = []+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 151 1 151 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 21+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 19+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 17+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 15+                           , srcInfoPoints = []+                           }+                         "NukeMonad"))+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 151 16 151 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 151 16 151 17+                           , srcInfoPoints = []+                           }+                         "a")))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 151 18 151 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 151 18 151 19+                        , srcInfoPoints = []+                        }+                      "b")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 151 20 151 21+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 151 20 151 21+                     , srcInfoPoints = []+                     }+                   "c")))+          []+          []+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 153 1 156 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 153 1 153 9+                , SrcSpan "tests/examples/PartialSignatures.hs" 153 34 153 39+                , SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 3+                , SrcSpan "tests/examples/PartialSignatures.hs" 156 1 156 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 33+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 33+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 17+                           , srcInfoPoints = []+                           }+                         "Functor")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 153 18 153 33+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 153 18 153 19+                         , SrcSpan "tests/examples/PartialSignatures.hs" 153 32 153 33+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 32+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 30+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 28+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 28+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 28+                                    , srcInfoPoints = []+                                    }+                                  "NukeMonad")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 153 29 153 30+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 153 29 153 30+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 153 31 153 32+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 153 31 153 32+                              , srcInfoPoints = []+                              }+                            "b"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 19+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 19+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 7+                            , srcInfoPoints = []+                            }+                          "fmap"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 154 8 154 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 154 8 154 9 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 154 10 154 19+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 154 10 154 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 154 10 154 19+                                  , srcInfoPoints = []+                                  }+                                "undefined"))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 156 1 160 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 156 1 156 9+                , SrcSpan "tests/examples/PartialSignatures.hs" 156 38 156 43+                , SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 3+                , SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 3+                , SrcSpan "tests/examples/PartialSignatures.hs" 160 1 160 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 37+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 37+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 21+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 21+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 21+                           , srcInfoPoints = []+                           }+                         "Applicative")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 156 22 156 37+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 156 22 156 23+                         , SrcSpan "tests/examples/PartialSignatures.hs" 156 36 156 37+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 36+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 34+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 32+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 32+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 32+                                    , srcInfoPoints = []+                                    }+                                  "NukeMonad")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 156 33 156 34+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 156 33 156 34+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 156 35 156 36+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 156 35 156 36+                              , srcInfoPoints = []+                              }+                            "b"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 19+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 19+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 7+                            , srcInfoPoints = []+                            }+                          "pure"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 157 8 157 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 157 8 157 9 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 157 10 157 19+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 157 10 157 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 157 10 157 19+                                  , srcInfoPoints = []+                                  }+                                "undefined"))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 8+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 4+                             , SrcSpan "tests/examples/PartialSignatures.hs" 158 4 158 7+                             , SrcSpan "tests/examples/PartialSignatures.hs" 158 7 158 8+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 158 4 158 7+                            , srcInfoPoints = []+                            }+                          "<*>"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 158 9 158 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 158 9 158 10 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 158 11 158 20+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 158 11 158 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 158 11 158 20+                                  , srcInfoPoints = []+                                  }+                                "undefined"))))+                    Nothing)+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 160 1 165 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 160 1 160 9+                , SrcSpan "tests/examples/PartialSignatures.hs" 160 32 160 37+                , SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 3+                , SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 3+                , SrcSpan "tests/examples/PartialSignatures.hs" 165 1 165 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 31+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 31+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 15+                           , srcInfoPoints = []+                           }+                         "Monad")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 160 16 160 31+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 160 16 160 17+                         , SrcSpan "tests/examples/PartialSignatures.hs" 160 30 160 31+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 30+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 28+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 26+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 26+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 26+                                    , srcInfoPoints = []+                                    }+                                  "NukeMonad")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 160 27 160 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 160 27 160 28+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 160 29 160 30+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 160 29 160 30+                              , srcInfoPoints = []+                              }+                            "b"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 21+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 21+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 9+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 9+                            , srcInfoPoints = []+                            }+                          "return"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 161 10 161 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 161 10 161 11 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 161 12 161 21+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 161 12 161 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 161 12 161 21+                                  , srcInfoPoints = []+                                  }+                                "undefined"))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 8+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 4+                             , SrcSpan "tests/examples/PartialSignatures.hs" 162 4 162 7+                             , SrcSpan "tests/examples/PartialSignatures.hs" 162 7 162 8+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 162 4 162 7+                            , srcInfoPoints = []+                            }+                          ">>="))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 162 9 162 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 162 9 162 10 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 162 11 162 20+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 162 11 162 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 162 11 162 20+                                  , srcInfoPoints = []+                                  }+                                "undefined"))))+                    Nothing)+             ])+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 165 1 165 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 165 12 165 14 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 165 1 165 11+                , srcInfoPoints = []+                }+              "isMeltdown"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 43+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 38+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 31+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 24+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 24+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 24+                              , srcInfoPoints = []+                              }+                            "NukeMonad")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 165 25 165 31+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 165 25 165 31+                           , srcInfoPoints = []+                           }+                         "param1")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 165 32 165 38+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 165 32 165 38+                        , srcInfoPoints = []+                        }+                      "param2")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 165 39 165 43+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 165 39 165 43+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 165 39 165 43+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 166 1 166 23+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 166 1 166 11+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 166 1 166 11+                  , srcInfoPoints = []+                  }+                "isMeltdown"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 166 12 166 23+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 166 12 166 13 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 166 14 166 23+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 166 14 166 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 166 14 166 23+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 168 1 168 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 168 16 168 18 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 168 1 168 15+                , srcInfoPoints = []+                }+              "unlessMeltdown"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 168 19 168 36+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 168 26 168 28 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 168 19 168 25+                  , srcInfoPoints = []+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 168 19 168 22+                     , srcInfoPoints = []+                     }+                   (Just+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 168 20 168 22+                           , srcInfoPoints = []+                           }+                         "nm")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 25+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 24+                         , SrcSpan "tests/examples/PartialSignatures.hs" 168 24 168 25+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 24+                            , SrcSpan "tests/examples/PartialSignatures.hs" 168 24 168 25+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 25+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 24+                               , SrcSpan "tests/examples/PartialSignatures.hs" 168 24 168 25+                               ]+                           }))))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 168 30 168 36+                  , srcInfoPoints = []+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 168 30 168 33+                     , srcInfoPoints = []+                     }+                   (Just+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 168 31 168 33+                           , srcInfoPoints = []+                           }+                         "nm")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 35+                         , SrcSpan "tests/examples/PartialSignatures.hs" 168 35 168 36+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 36+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 35+                            , SrcSpan "tests/examples/PartialSignatures.hs" 168 35 168 36+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 36+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 35+                               , SrcSpan "tests/examples/PartialSignatures.hs" 168 35 168 36+                               ]+                           })))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 169 1 170 49+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 169 1 170 49+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 169 1 169 15+                   , srcInfoPoints = []+                   }+                 "unlessMeltdown")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 169 16 169 17+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 169 16 169 17+                       , srcInfoPoints = []+                       }+                     "c")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 169 18 170 49+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 169 18 169 19 ]+                   }+                 (Do+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 169 20 170 49+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 169 20 169 22+                          , SrcSpan "tests/examples/PartialSignatures.hs" 169 23 169 23+                          , SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 23+                          , SrcSpan "tests/examples/PartialSignatures.hs" 174 1 174 0+                          ]+                      }+                    [ Generator+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 169 23 169 38+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 169 25 169 27 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 169 23 169 24+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 169 23 169 24+                                , srcInfoPoints = []+                                }+                              "m"))+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 169 28 169 38+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 169 28 169 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 169 28 169 38+                                   , srcInfoPoints = []+                                   }+                                 "isMeltdown")))+                    , Qualifier+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 49+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 25+                              , SrcSpan "tests/examples/PartialSignatures.hs" 170 28 170 32+                              , SrcSpan "tests/examples/PartialSignatures.hs" 170 43 170 47+                              ]+                          }+                        (If+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 49+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 25+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 170 28 170 32+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 170 43 170 47+                                 ]+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 170 26 170 27+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 170 26 170 27+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 170 26 170 27+                                      , srcInfoPoints = []+                                      }+                                    "m")))+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 170 33 170 42+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 170 33 170 39+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 170 33 170 39+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 170 33 170 39+                                         , srcInfoPoints = []+                                         }+                                       "return")))+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 170 40 170 42+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/PartialSignatures.hs" 170 40 170 41+                                       , SrcSpan "tests/examples/PartialSignatures.hs" 170 41 170 42+                                       ]+                                   }+                                 (Special+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 170 40 170 42+                                      , srcInfoPoints =+                                          [ SrcSpan+                                              "tests/examples/PartialSignatures.hs" 170 40 170 41+                                          , SrcSpan+                                              "tests/examples/PartialSignatures.hs" 170 41 170 42+                                          ]+                                      }+                                    (UnitCon+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 170 40 170 42+                                         , srcInfoPoints =+                                             [ SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 170 40 170 41+                                             , SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 170 41 170 42+                                             ]+                                         }))))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 170 48 170 49+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 170 48 170 49+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 170 48 170 49+                                      , srcInfoPoints = []+                                      }+                                    "c"))))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 174 1 174 53+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 174 9 174 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 174 1 174 8+                , srcInfoPoints = []+                }+              "monoLoc"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 174 12 174 53+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 174 12 174 18+                   , SrcSpan "tests/examples/PartialSignatures.hs" 174 20 174 21+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 174 19 174 20+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 174 19 174 20+                         , srcInfoPoints = []+                         }+                       "a")+                ])+             Nothing+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 174 22 174 53+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 174 24 174 26 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 174 22 174 23+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 174 22 174 23+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 174 27 174 53+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 174 27 174 28+                         , SrcSpan "tests/examples/PartialSignatures.hs" 174 39 174 40+                         , SrcSpan "tests/examples/PartialSignatures.hs" 174 52 174 53+                         ]+                     }+                   Boxed+                   [ TyTuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 174 28 174 39+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 174 28 174 29+                             , SrcSpan "tests/examples/PartialSignatures.hs" 174 30 174 31+                             , SrcSpan "tests/examples/PartialSignatures.hs" 174 38 174 39+                             ]+                         }+                       Boxed+                       [ TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 174 29 174 30+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 174 29 174 30+                                , srcInfoPoints = []+                                }+                              "a")+                       , TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 174 32 174 38+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 174 32 174 38+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 174 32 174 38+                                   , srcInfoPoints = []+                                   }+                                 "String"))+                       ]+                   , TyTuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 174 41 174 52+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 174 41 174 42+                             , SrcSpan "tests/examples/PartialSignatures.hs" 174 43 174 44+                             , SrcSpan "tests/examples/PartialSignatures.hs" 174 51 174 52+                             ]+                         }+                       Boxed+                       [ TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 174 42 174 43+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 174 42 174 43+                                , srcInfoPoints = []+                                }+                              "a")+                       , TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 174 45 174 51+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 174 45 174 51+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 174 45 174 51+                                   , srcInfoPoints = []+                                   }+                                 "String"))+                       ]+                   ])))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 175 1 179 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 176 3 176 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 175 1 179 21+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PartialSignatures.hs" 176 3 176 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 175 1 175 8+                   , srcInfoPoints = []+                   }+                 "monoLoc")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 175 9 175 10+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 175 9 175 10+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 175 11 175 29+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 175 11 175 12 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 175 13 175 29+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 175 13 175 14+                          , SrcSpan "tests/examples/PartialSignatures.hs" 175 21 175 22+                          , SrcSpan "tests/examples/PartialSignatures.hs" 175 28 175 29+                          ]+                      }+                    Boxed+                    [ App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 175 14 175 20+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 175 14 175 15+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 175 14 175 15+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 175 14 175 15+                                   , srcInfoPoints = []+                                   }+                                 "g")))+                        (Con+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 175 16 175 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 175 16 175 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 175 16 175 20+                                   , srcInfoPoints = []+                                   }+                                 "True")))+                    , App+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 175 23 175 28+                          , srcInfoPoints = []+                          }+                        (Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 175 23 175 24+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 175 23 175 24+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 175 23 175 24+                                   , srcInfoPoints = []+                                   }+                                 "g")))+                        (Lit+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 175 25 175 28+                             , srcInfoPoints = []+                             }+                           (Char+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 175 25 175 28+                                , srcInfoPoints = []+                                }+                              'v'+                              "v"))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 178 5 179 21+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 178 5 178 5+                          , SrcSpan "tests/examples/PartialSignatures.hs" 179 5 179 5+                          , SrcSpan "tests/examples/PartialSignatures.hs" 183 1 183 0+                          ]+                      }+                    [ TypeSig+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 178 5 178 21+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 178 7 178 9 ]+                          }+                        [ Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 178 5 178 6+                              , srcInfoPoints = []+                              }+                            "g"+                        ]+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 178 10 178 21+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 178 12 178 14 ]+                             }+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 178 10 178 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 178 10 178 11+                                   , srcInfoPoints = []+                                   }+                                 "b"))+                           (TyTuple+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 178 15 178 21+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 178 15 178 16+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 178 17 178 18+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 178 20 178 21+                                    ]+                                }+                              Boxed+                              [ TyVar+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 178 16 178 17+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 178 16 178 17+                                       , srcInfoPoints = []+                                       }+                                     "a")+                              , TyWildCard+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 178 19 178 20+                                    , srcInfoPoints = []+                                    }+                                  Nothing+                              ]))+                    , FunBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 179 5 179 21+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 179 5 179 21+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 179 5 179 6+                                 , srcInfoPoints = []+                                 }+                               "g")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 179 7 179 8+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 179 7 179 8+                                     , srcInfoPoints = []+                                     }+                                   "y")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 179 9 179 21+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 179 9 179 10 ]+                                 }+                               (Tuple+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 179 11 179 21+                                    , srcInfoPoints =+                                        [ SrcSpan+                                            "tests/examples/PartialSignatures.hs" 179 11 179 12+                                        , SrcSpan+                                            "tests/examples/PartialSignatures.hs" 179 13 179 14+                                        , SrcSpan+                                            "tests/examples/PartialSignatures.hs" 179 20 179 21+                                        ]+                                    }+                                  Boxed+                                  [ Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 179 12 179 13+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 179 12 179 13+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/PartialSignatures.hs"+                                                    179+                                                    12+                                                    179+                                                    13+                                              , srcInfoPoints = []+                                              }+                                            "x"))+                                  , Lit+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 179 15 179 20+                                        , srcInfoPoints = []+                                        }+                                      (String+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 179 15 179 20+                                           , srcInfoPoints = []+                                           }+                                         "foo"+                                         "foo")+                                  ]))+                            Nothing+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 183 1 183 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 183 5 183 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 183 1 183 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 183 8 183 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 183 16 183 18 ]+               }+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 183 8 183 15+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 183 8 183 9+                      , SrcSpan "tests/examples/PartialSignatures.hs" 183 11 183 12+                      , SrcSpan "tests/examples/PartialSignatures.hs" 183 14 183 15+                      ]+                  }+                Boxed+                [ TyWildCard+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 183 9 183 11+                      , srcInfoPoints = []+                      }+                    (Just+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 183 10 183 11+                            , srcInfoPoints = []+                            }+                          "a"))+                , TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 183 13 183 14+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 183 13 183 14+                         , srcInfoPoints = []+                         }+                       "b")+                ])+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 183 19 183 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 183 19 183 20+                      , SrcSpan "tests/examples/PartialSignatures.hs" 183 21 183 22+                      , SrcSpan "tests/examples/PartialSignatures.hs" 183 25 183 26+                      ]+                  }+                Boxed+                [ TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 183 20 183 21+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 183 20 183 21+                         , srcInfoPoints = []+                         }+                       "a")+                , TyWildCard+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 183 23 183 25+                      , srcInfoPoints = []+                      }+                    (Just+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 183 24 183 25+                            , srcInfoPoints = []+                            }+                          "b"))+                ]))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 184 1 184 20+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 184 1 184 20+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 184 1 184 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PTuple+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 184 5 184 11+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 184 5 184 6+                        , SrcSpan "tests/examples/PartialSignatures.hs" 184 7 184 8+                        , SrcSpan "tests/examples/PartialSignatures.hs" 184 10 184 11+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 184 6 184 7+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 184 6 184 7+                           , srcInfoPoints = []+                           }+                         "x")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 184 9 184 10+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 184 9 184 10+                           , srcInfoPoints = []+                           }+                         "y")+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 184 12 184 20+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 184 12 184 13 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 184 14 184 20+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 184 14 184 15+                          , SrcSpan "tests/examples/PartialSignatures.hs" 184 16 184 17+                          , SrcSpan "tests/examples/PartialSignatures.hs" 184 19 184 20+                          ]+                      }+                    Boxed+                    [ Var+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 184 15 184 16+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 184 15 184 16+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 184 15 184 16+                                , srcInfoPoints = []+                                }+                              "x"))+                    , Var+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 184 18 184 19+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 184 18 184 19+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 184 18 184 19+                                , srcInfoPoints = []+                                }+                              "y"))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 187 1 187 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 187 3 187 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 187 1 187 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 27+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 12+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 7+                         , SrcSpan "tests/examples/PartialSignatures.hs" 187 8 187 9+                         , SrcSpan "tests/examples/PartialSignatures.hs" 187 10 187 12+                         ]+                     }+                   (ParenA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 12+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 7+                            , SrcSpan "tests/examples/PartialSignatures.hs" 187 8 187 9+                            , SrcSpan "tests/examples/PartialSignatures.hs" 187 10 187 12+                            ]+                        }+                      (TypeA+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 187 7 187 8+                           , srcInfoPoints = []+                           }+                         (TyWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 187 7 187 8+                              , srcInfoPoints = []+                              }+                            Nothing)))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 187 13 187 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 187 15 187 17 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 187 13 187 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 187 13 187 14+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 187 18 187 27+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 187 20 187 22 ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 187 18 187 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 187 18 187 19+                           , srcInfoPoints = []+                           }+                         "a"))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 187 23 187 27+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 187 23 187 27+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 187 23 187 27+                              , srcInfoPoints = []+                              }+                            "Bool"))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 188 1 188 15+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 188 1 188 15+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 188 1 188 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 188 3 188 4+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 188 3 188 4+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 188 5 188 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 188 5 188 6+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 188 7 188 15+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 188 7 188 8 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 188 9 188 15+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 188 9 188 10+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 188 9 188 10+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 188 9 188 10+                               , srcInfoPoints = []+                               }+                             "x")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 188 11 188 13+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 188 11 188 13+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 188 11 188 13+                               , srcInfoPoints = []+                               }+                             "==")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 188 14 188 15+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 188 14 188 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 188 14 188 15+                               , srcInfoPoints = []+                               }+                             "y")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 191 1 191 9+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 191 5 191 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 191 1 191 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyWildCard+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 191 8 191 9+               , srcInfoPoints = []+               }+             Nothing)+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 19+            , srcInfoPoints = []+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 9+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 5+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 5+                     , srcInfoPoints = []+                     }+                   "Just"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 192 6 192 9+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 192 6 192 9+                      , srcInfoPoints = []+                      }+                    "foo")+             ])+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 192 10 192 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 192 10 192 11 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 192 12 192 19+                  , srcInfoPoints = []+                  }+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 192 12 192 16+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 192 12 192 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 192 12 192 16+                           , srcInfoPoints = []+                           }+                         "Just")))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 192 17 192 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 192 17 192 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 192 17 192 19+                           , srcInfoPoints = []+                           }+                         "id")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 195 1 195 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 195 5 195 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 195 1 195 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 195 8 195 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 195 13 195 15 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 195 8 195 12+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 195 8 195 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 195 8 195 12+                        , srcInfoPoints = []+                        }+                      "Bool")))+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 195 16 195 17+                  , srcInfoPoints = []+                  }+                Nothing))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 19+            , srcInfoPoints = []+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 9+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 5+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 5+                     , srcInfoPoints = []+                     }+                   "Just"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 196 6 196 9+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 196 6 196 9+                      , srcInfoPoints = []+                      }+                    "foo")+             ])+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 196 10 196 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 196 10 196 11 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 196 12 196 19+                  , srcInfoPoints = []+                  }+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 196 12 196 16+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 196 12 196 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 196 12 196 16+                           , srcInfoPoints = []+                           }+                         "Just")))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 196 17 196 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 196 17 196 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 196 17 196 19+                           , srcInfoPoints = []+                           }+                         "id")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 198 1 198 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 198 5 198 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 198 1 198 4+                , srcInfoPoints = []+                }+              "bar"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 198 8 198 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 198 13 198 15 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 198 8 198 12+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 198 8 198 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 198 8 198 12+                        , srcInfoPoints = []+                        }+                      "Bool")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 198 16 198 20+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 198 16 198 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 198 16 198 20+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 199 1 199 20+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 199 1 199 20+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 199 1 199 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 199 5 199 13+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PartialSignatures.hs" 199 5 199 6+                        , SrcSpan "tests/examples/PartialSignatures.hs" 199 12 199 13+                        ]+                    }+                  (PatTypeSig+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 199 6 199 12+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/PartialSignatures.hs" 199 8 199 10 ]+                       }+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 199 6 199 7+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 199 6 199 7+                             , srcInfoPoints = []+                             }+                           "x"))+                     (TyWildCard+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 199 11 199 12+                          , srcInfoPoints = []+                          }+                        Nothing))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 199 14 199 20+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 199 14 199 15 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 199 16 199 20+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 199 16 199 20+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 199 16 199 20+                            , srcInfoPoints = []+                            }+                          "True"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 202 1 202 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 202 5 202 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 202 1 202 4+                , srcInfoPoints = []+                }+              "orr"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 202 8 202 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 202 10 202 12 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 202 8 202 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 202 8 202 9+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 202 13 202 19+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 202 15 202 17 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 202 13 202 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 202 13 202 14+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 202 18 202 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 202 18 202 19+                        , srcInfoPoints = []+                        }+                      "a"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 203 1 203 16+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 203 1 203 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 203 1 203 4+                  , srcInfoPoints = []+                  }+                "orr"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 203 5 203 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 203 5 203 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 203 7 203 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 203 7 203 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 203 7 203 16+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 205 1 205 7+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 205 3 205 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 205 1 205 2+                , srcInfoPoints = []+                }+              "g"+          ]+          (TyWildCard+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 205 6 205 7+               , srcInfoPoints = []+               }+             Nothing)+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 206 1 206 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 206 1 206 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 206 1 206 2+                  , srcInfoPoints = []+                  }+                "g"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 206 3 206 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 206 3 206 4 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 206 5 206 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 206 5 206 6+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 206 5 206 6+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 206 5 206 6+                           , srcInfoPoints = []+                           }+                         "f")))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 206 7 206 12+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 206 7 206 8+                         , SrcSpan "tests/examples/PartialSignatures.hs" 206 8 206 11+                         , SrcSpan "tests/examples/PartialSignatures.hs" 206 11 206 12+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 206 7 206 12+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 206 7 206 8+                            , SrcSpan "tests/examples/PartialSignatures.hs" 206 8 206 11+                            , SrcSpan "tests/examples/PartialSignatures.hs" 206 11 206 12+                            ]+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 206 8 206 11+                           , srcInfoPoints = []+                           }+                         "orr")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 206 13 206 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 206 13 206 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 206 13 206 17+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 208 1 208 7+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 208 3 208 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 208 1 208 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyWildCard+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 208 6 208 7+               , srcInfoPoints = []+               }+             Nothing)+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 209 1 209 6+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 209 1 209 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 209 1 209 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 209 3 209 6+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 209 3 209 4 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 209 5 209 6+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 209 5 209 6+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 209 5 209 6+                        , srcInfoPoints = []+                        }+                      "g"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 212 1 212 11+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 212 7 212 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 212 1 212 6+                , srcInfoPoints = []+                }+              "test3"+          ]+          (TyWildCard+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 212 10 212 11+               , srcInfoPoints = []+               }+             Nothing)+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 213 1 217 16+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 213 1 217 16+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 213 1 213 6+                   , srcInfoPoints = []+                   }+                 "test3")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 213 7 213 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 213 7 213 8+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 213 9 217 16+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 213 9 213 10 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 213 11 217 16+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 213 11 214 40+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 213 11 213 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 213 11 213 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 213 11 213 16+                                  , srcInfoPoints = []+                                  }+                                "const")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 213 17 214 40+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/PartialSignatures.hs" 213 17 213 18+                                , SrcSpan "tests/examples/PartialSignatures.hs" 214 39 214 40+                                ]+                            }+                          (Let+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 213 18 214 39+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/PartialSignatures.hs" 213 18 213 21+                                   , SrcSpan "tests/examples/PartialSignatures.hs" 214 31 214 33+                                   ]+                               }+                             (BDecls+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 213 22 214 30+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/PartialSignatures.hs" 213 22 213 22+                                      , SrcSpan "tests/examples/PartialSignatures.hs" 214 22 214 22+                                      , SrcSpan "tests/examples/PartialSignatures.hs" 214 31 214 31+                                      ]+                                  }+                                [ TypeSig+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 213 22 213 29+                                      , srcInfoPoints =+                                          [ SrcSpan+                                              "tests/examples/PartialSignatures.hs" 213 24 213 26+                                          ]+                                      }+                                    [ Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 213 22 213 23+                                          , srcInfoPoints = []+                                          }+                                        "x"+                                    ]+                                    (TyWildCard+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 213 27 213 29+                                         , srcInfoPoints = []+                                         }+                                       (Just+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/PartialSignatures.hs"+                                                     213+                                                     28+                                                     213+                                                     29+                                               , srcInfoPoints = []+                                               }+                                             "b")))+                                , PatBind+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 214 22 214 30+                                      , srcInfoPoints = []+                                      }+                                    (PVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 214 22 214 23+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  214+                                                  22+                                                  214+                                                  23+                                            , srcInfoPoints = []+                                            }+                                          "x"))+                                    (UnGuardedRhs+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 214 24 214 30+                                         , srcInfoPoints =+                                             [ SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 214 24 214 25+                                             ]+                                         }+                                       (Con+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  214+                                                  26+                                                  214+                                                  30+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/PartialSignatures.hs"+                                                     214+                                                     26+                                                     214+                                                     30+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/PartialSignatures.hs"+                                                        214+                                                        26+                                                        214+                                                        30+                                                  , srcInfoPoints = []+                                                  }+                                                "True"))))+                                    Nothing+                                ])+                             (Con+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 214 34 214 39+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 214 34 214 39+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 214 34 214 39+                                        , srcInfoPoints = []+                                        }+                                      "False"))))))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 214 41 214 42+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 214 41 214 42+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 214 41 214 42+                               , srcInfoPoints = []+                               }+                             "$")))+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 215 11 217 16+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 215 11 216 38+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 215 11 215 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 215 11 215 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 215 11 215 16+                                     , srcInfoPoints = []+                                     }+                                   "const")))+                          (Paren+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 215 17 216 38+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/PartialSignatures.hs" 215 17 215 18+                                   , SrcSpan "tests/examples/PartialSignatures.hs" 216 37 216 38+                                   ]+                               }+                             (Let+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 215 18 216 37+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/PartialSignatures.hs" 215 18 215 21+                                      , SrcSpan "tests/examples/PartialSignatures.hs" 216 30 216 32+                                      ]+                                  }+                                (BDecls+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 215 22 216 29+                                     , srcInfoPoints =+                                         [ SrcSpan+                                             "tests/examples/PartialSignatures.hs" 215 22 215 22+                                         , SrcSpan+                                             "tests/examples/PartialSignatures.hs" 216 22 216 22+                                         , SrcSpan+                                             "tests/examples/PartialSignatures.hs" 216 30 216 30+                                         ]+                                     }+                                   [ TypeSig+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 215 22 215 29+                                         , srcInfoPoints =+                                             [ SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 215 24 215 26+                                             ]+                                         }+                                       [ Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs"+                                                   215+                                                   22+                                                   215+                                                   23+                                             , srcInfoPoints = []+                                             }+                                           "x"+                                       ]+                                       (TyWildCard+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  215+                                                  27+                                                  215+                                                  29+                                            , srcInfoPoints = []+                                            }+                                          (Just+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/PartialSignatures.hs"+                                                        215+                                                        28+                                                        215+                                                        29+                                                  , srcInfoPoints = []+                                                  }+                                                "b")))+                                   , PatBind+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 216 22 216 29+                                         , srcInfoPoints = []+                                         }+                                       (PVar+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  216+                                                  22+                                                  216+                                                  23+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/PartialSignatures.hs"+                                                     216+                                                     22+                                                     216+                                                     23+                                               , srcInfoPoints = []+                                               }+                                             "x"))+                                       (UnGuardedRhs+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  216+                                                  24+                                                  216+                                                  29+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/PartialSignatures.hs"+                                                    216+                                                    24+                                                    216+                                                    25+                                                ]+                                            }+                                          (Lit+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/PartialSignatures.hs"+                                                     216+                                                     26+                                                     216+                                                     29+                                               , srcInfoPoints = []+                                               }+                                             (Char+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/PartialSignatures.hs"+                                                        216+                                                        26+                                                        216+                                                        29+                                                  , srcInfoPoints = []+                                                  }+                                                'a'+                                                "a")))+                                       Nothing+                                   ])+                                (Con+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 216 33 216 37+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 216 33 216 37+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 216 33 216 37+                                           , srcInfoPoints = []+                                           }+                                         "True"))))))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 216 39 216 40+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 216 39 216 40+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 216 39 216 40+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 217 11 217 16+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 217 11 217 14+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 217 11 217 14+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 217 11 217 14+                                     , srcInfoPoints = []+                                     }+                                   "not")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 217 15 217 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 217 15 217 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 217 15 217 16+                                     , srcInfoPoints = []+                                     }+                                   "x")))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 224 1 224 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 224 5 224 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 224 1 224 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 224 8 224 15+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 224 11 224 13 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 224 8 224 10+                  , srcInfoPoints = []+                  }+                (Just+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 224 9 224 10+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 224 14 224 15+                  , srcInfoPoints = []+                  }+                Nothing))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 225 1 228 19+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 225 1 228 19+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 225 1 225 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 225 5 225 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 225 5 225 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 225 7 228 19+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 225 7 225 8 ]+                   }+                 (Let+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 225 9 228 19+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 225 9 225 12+                          , SrcSpan "tests/examples/PartialSignatures.hs" 228 9 228 11+                          ]+                      }+                    (BDecls+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 225 13 227 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 225 13 225 13+                             , SrcSpan "tests/examples/PartialSignatures.hs" 226 13 226 13+                             , SrcSpan "tests/examples/PartialSignatures.hs" 227 13 227 13+                             , SrcSpan "tests/examples/PartialSignatures.hs" 228 9 228 0+                             ]+                         }+                       [ PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 225 13 225 22+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 225 13 225 14+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 225 13 225 14+                                   , srcInfoPoints = []+                                   }+                                 "v"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 225 15 225 22+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 225 15 225 16 ]+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 225 17 225 22+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 225 17 225 20+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 225 17 225 20+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  225+                                                  17+                                                  225+                                                  20+                                            , srcInfoPoints = []+                                            }+                                          "not")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 225 21 225 22+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 225 21 225 22+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  225+                                                  21+                                                  225+                                                  22+                                            , srcInfoPoints = []+                                            }+                                          "x")))))+                           Nothing+                       , TypeSig+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 226 13 226 26+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 226 15 226 17 ]+                             }+                           [ Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 226 13 226 14+                                 , srcInfoPoints = []+                                 }+                               "g"+                           ]+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 226 18 226 26+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 226 21 226 23 ]+                                }+                              (TyWildCard+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 226 18 226 20+                                   , srcInfoPoints = []+                                   }+                                 (Just+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 226 19 226 20+                                         , srcInfoPoints = []+                                         }+                                       "a")))+                              (TyWildCard+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 226 24 226 26+                                   , srcInfoPoints = []+                                   }+                                 (Just+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 226 25 226 26+                                         , srcInfoPoints = []+                                         }+                                       "a"))))+                       , FunBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 227 13 227 20+                             , srcInfoPoints = []+                             }+                           [ Match+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 227 13 227 20+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 227 13 227 14+                                    , srcInfoPoints = []+                                    }+                                  "g")+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 227 15 227 16+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 227 15 227 16+                                        , srcInfoPoints = []+                                        }+                                      "x")+                               ]+                               (UnGuardedRhs+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 227 17 227 20+                                    , srcInfoPoints =+                                        [ SrcSpan+                                            "tests/examples/PartialSignatures.hs" 227 17 227 18+                                        ]+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 227 19 227 20+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 227 19 227 20+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/PartialSignatures.hs"+                                                   227+                                                   19+                                                   227+                                                   20+                                             , srcInfoPoints = []+                                             }+                                           "x"))))+                               Nothing+                           ]+                       ])+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 228 12 228 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 228 12 228 13+                             , SrcSpan "tests/examples/PartialSignatures.hs" 228 18 228 19+                             ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 228 13 228 18+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 228 13 228 14+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 228 13 228 14+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 228 13 228 14+                                     , srcInfoPoints = []+                                     }+                                   "g")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 228 15 228 18+                               , srcInfoPoints = []+                               }+                             (Char+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 228 15 228 18+                                  , srcInfoPoints = []+                                  }+                                'x'+                                "x"))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 230 1 230 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 230 9 230 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 230 1 230 8+                , srcInfoPoints = []+                }+              "showTwo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 35+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16+                                    , srcInfoPoints = []+                                    }+                                  "Show")))+                         (TyWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 230 17 230 19+                              , srcInfoPoints = []+                              }+                            (Just+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 230 18 230 19+                                    , srcInfoPoints = []+                                    }+                                  "a")))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 230 23 230 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 230 26 230 28 ]+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 230 23 230 25+                     , srcInfoPoints = []+                     }+                   (Just+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 230 24 230 25+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 230 29 230 35+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 230 29 230 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 230 29 230 35+                           , srcInfoPoints = []+                           }+                         "String")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 231 1 231 19+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 231 1 231 19+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 231 1 231 8+                   , srcInfoPoints = []+                   }+                 "showTwo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 231 9 231 10+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 231 9 231 10+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 231 11 231 19+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 231 11 231 12 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 231 13 231 19+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 231 13 231 17+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 231 13 231 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 231 13 231 17+                               , srcInfoPoints = []+                               }+                             "show")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 231 18 231 19+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 231 18 231 19+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 231 18 231 19+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 234 1 234 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 234 5 234 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 234 1 234 4+                , srcInfoPoints = []+                }+              "bar"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 234 8 234 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 234 10 234 12 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 234 8 234 9+                  , srcInfoPoints = []+                  }+                Nothing)+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 234 13 234 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 234 13 234 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 234 13 234 17+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 235 1 235 13+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 235 1 235 13+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 235 1 235 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 235 5 235 6+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 235 7 235 13+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 235 7 235 8 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 235 9 235 13+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 235 9 235 13+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 235 9 235 13+                            , srcInfoPoints = []+                            }+                          "True"))))+              Nothing+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 238 1 238 45+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 238 25 238 26 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 238 1 238 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 24+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 22+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 19+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 15+                           , srcInfoPoints = []+                           }+                         "GenParser"))+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 238 16 238 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 238 16 238 19+                           , srcInfoPoints = []+                           }+                         "tok")))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 238 20 238 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 238 20 238 22+                        , srcInfoPoints = []+                        }+                      "st")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 238 23 238 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 238 23 238 24+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 238 27 238 45+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 238 27 238 45+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 238 27 238 36+                      , srcInfoPoints = []+                      }+                    "GenParser")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 238 37 238 40+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 238 37 238 40+                          , srcInfoPoints = []+                          }+                        "tok")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 238 41 238 43+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 238 41 238 43+                          , srcInfoPoints = []+                          }+                        "st")+                 , TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 238 44 238 45+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 238 44 238 45+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 240 1 240 55+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 240 11 240 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 240 1 240 10+                , srcInfoPoints = []+                }+              "skipMany'"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 55+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 240 33 240 35 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 32+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 30+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 27+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 23+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 23+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 23+                                 , srcInfoPoints = []+                                 }+                               "GenParser")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 240 24 240 27+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 240 24 240 27+                              , srcInfoPoints = []+                              }+                            "tok")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 240 28 240 30+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 240 28 240 30+                           , srcInfoPoints = []+                           }+                         "st")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 240 31 240 32+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 240 31 240 32+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 55+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 52+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 49+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 45+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 45+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 45+                                 , srcInfoPoints = []+                                 }+                               "GenParser")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 240 46 240 49+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 240 46 240 49+                              , srcInfoPoints = []+                              }+                            "tok")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 240 50 240 52+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 240 50 240 52+                           , srcInfoPoints = []+                           }+                         "st")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 55+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 54+                         , SrcSpan "tests/examples/PartialSignatures.hs" 240 54 240 55+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 55+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 54+                            , SrcSpan "tests/examples/PartialSignatures.hs" 240 54 240 55+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 55+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 54+                               , SrcSpan "tests/examples/PartialSignatures.hs" 240 54 240 55+                               ]+                           })))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 241 1 241 22+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 241 1 241 10+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 241 1 241 10+                  , srcInfoPoints = []+                  }+                "skipMany'"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 241 11 241 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 241 11 241 12 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 241 13 241 22+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 241 13 241 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 241 13 241 22+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 243 1 243 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 243 10 243 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 243 1 243 9+                , srcInfoPoints = []+                }+              "skipMany"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 243 13 243 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 243 15 243 17 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 243 13 243 14+                  , srcInfoPoints = []+                  }+                Nothing)+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 243 18 243 22+                  , srcInfoPoints = []+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 243 18 243 19+                     , srcInfoPoints = []+                     }+                   Nothing)+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 22+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 21+                         , SrcSpan "tests/examples/PartialSignatures.hs" 243 21 243 22+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 22+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 21+                            , SrcSpan "tests/examples/PartialSignatures.hs" 243 21 243 22+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 22+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 21+                               , SrcSpan "tests/examples/PartialSignatures.hs" 243 21 243 22+                               ]+                           })))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 244 1 244 21+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 244 1 244 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 244 1 244 9+                  , srcInfoPoints = []+                  }+                "skipMany"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 244 10 244 21+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 244 10 244 11 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 244 12 244 21+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 244 12 244 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 244 12 244 21+                        , srcInfoPoints = []+                        }+                      "skipMany'"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 246 1 246 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 246 19 246 21 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 246 1 246 18+                , srcInfoPoints = []+                }+              "somethingShowable"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 40+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26+                                    , srcInfoPoints = []+                                    }+                                  "Show")))+                         (TyWildCard+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 246 27 246 29+                              , srcInfoPoints = []+                              }+                            (Just+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 246 28 246 29+                                    , srcInfoPoints = []+                                    }+                                  "x")))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 246 33 246 40+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 246 36 246 38 ]+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 246 33 246 35+                     , srcInfoPoints = []+                     }+                   (Just+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 246 34 246 35+                           , srcInfoPoints = []+                           }+                         "x")))+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 246 39 246 40+                     , srcInfoPoints = []+                     }+                   Nothing)))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 247 1 247 35+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 247 1 247 35+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 247 1 247 18+                   , srcInfoPoints = []+                   }+                 "somethingShowable")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 247 19 247 20+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 247 19 247 20+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 247 21 247 35+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 247 21 247 22 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 247 23 247 35+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 247 23 247 27+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 247 23 247 27+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 247 23 247 27+                               , srcInfoPoints = []+                               }+                             "show")))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 247 28 247 35+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 247 28 247 29+                             , SrcSpan "tests/examples/PartialSignatures.hs" 247 34 247 35+                             ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 247 29 247 34+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 247 29 247 32+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 247 29 247 32+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 247 29 247 32+                                     , srcInfoPoints = []+                                     }+                                   "not")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 247 33 247 34+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 247 33 247 34+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 247 33 247 34+                                     , srcInfoPoints = []+                                     }+                                   "x")))))))+              Nothing+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 251 1 251 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 251 10 251 11 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 251 1 251 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 251 6 251 9+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 251 6 251 7+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 251 6 251 7+                     , srcInfoPoints = []+                     }+                   "I"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 251 8 251 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 251 8 251 9+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 251 12 251 15+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 251 12 251 15+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 251 12 251 13+                      , srcInfoPoints = []+                      }+                    "I")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 251 14 251 15+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 251 14 251 15+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 252 1 255 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 252 1 252 9+                , SrcSpan "tests/examples/PartialSignatures.hs" 252 20 252 25+                , SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 5+                , SrcSpan "tests/examples/PartialSignatures.hs" 255 1 255 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 19+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 19+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 17+                           , srcInfoPoints = []+                           }+                         "Functor")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 252 18 252 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 252 18 252 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 252 18 252 19+                           , srcInfoPoints = []+                           }+                         "I")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 27+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 27+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 27+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 9+                             , srcInfoPoints = []+                             }+                           "fmap")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 253 10 253 11+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 253 10 253 11+                                 , srcInfoPoints = []+                                 }+                               "f")+                        , PParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 253 12 253 17+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 253 12 253 13+                                  , SrcSpan "tests/examples/PartialSignatures.hs" 253 16 253 17+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 253 13 253 16+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 253 13 253 14+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 253 13 253 14+                                       , srcInfoPoints = []+                                       }+                                     "I"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 253 15 253 16+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 253 15 253 16+                                        , srcInfoPoints = []+                                        }+                                      "a")+                               ])+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 253 18 253 27+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 253 18 253 19 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 253 20 253 27+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 253 20 253 21+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 253 20 253 21+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 253 20 253 21+                                         , srcInfoPoints = []+                                         }+                                       "I")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 253 22 253 27+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/PartialSignatures.hs" 253 22 253 23+                                       , SrcSpan "tests/examples/PartialSignatures.hs" 253 26 253 27+                                       ]+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 253 23 253 26+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 253 23 253 24+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  253+                                                  23+                                                  253+                                                  24+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/PartialSignatures.hs"+                                                     253+                                                     23+                                                     253+                                                     24+                                               , srcInfoPoints = []+                                               }+                                             "f")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 253 25 253 26+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  253+                                                  25+                                                  253+                                                  26+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/PartialSignatures.hs"+                                                     253+                                                     25+                                                     253+                                                     26+                                               , srcInfoPoints = []+                                               }+                                             "a")))))))+                        Nothing+                    ])+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 255 1 255 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 255 15 255 16 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 255 1 255 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 255 9 255 14+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 255 9 255 12+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 255 9 255 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 255 9 255 10+                        , srcInfoPoints = []+                        }+                      "B"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 255 11 255 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 255 11 255 12+                        , srcInfoPoints = []+                        }+                      "t")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 255 13 255 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 255 13 255 14+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 255 17 255 20+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 255 17 255 20+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 255 17 255 18+                      , srcInfoPoints = []+                      }+                    "B")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 255 19 255 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 255 19 255 20+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 256 1 259 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 256 1 256 9+                , SrcSpan "tests/examples/PartialSignatures.hs" 256 24 256 29+                , SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 5+                , SrcSpan "tests/examples/PartialSignatures.hs" 259 1 259 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 23+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 23+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 17+                           , srcInfoPoints = []+                           }+                         "Functor")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 256 18 256 23+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 256 18 256 19+                         , SrcSpan "tests/examples/PartialSignatures.hs" 256 22 256 23+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 256 19 256 22+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 256 19 256 20+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 256 19 256 20+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 256 19 256 20+                                 , srcInfoPoints = []+                                 }+                               "B")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 256 21 256 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 256 21 256 22+                              , srcInfoPoints = []+                              }+                            "t"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 27+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 27+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 27+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 9+                             , srcInfoPoints = []+                             }+                           "fmap")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 257 10 257 11+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 257 10 257 11+                                 , srcInfoPoints = []+                                 }+                               "f")+                        , PParen+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 257 12 257 17+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 257 12 257 13+                                  , SrcSpan "tests/examples/PartialSignatures.hs" 257 16 257 17+                                  ]+                              }+                            (PApp+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 257 13 257 16+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 257 13 257 14+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 257 13 257 14+                                       , srcInfoPoints = []+                                       }+                                     "B"))+                               [ PVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 257 15 257 16+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 257 15 257 16+                                        , srcInfoPoints = []+                                        }+                                      "a")+                               ])+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 257 18 257 27+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 257 18 257 19 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 257 20 257 27+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 257 20 257 21+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 257 20 257 21+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 257 20 257 21+                                         , srcInfoPoints = []+                                         }+                                       "B")))+                              (Paren+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 257 22 257 27+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/PartialSignatures.hs" 257 22 257 23+                                       , SrcSpan "tests/examples/PartialSignatures.hs" 257 26 257 27+                                       ]+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan+                                            "tests/examples/PartialSignatures.hs" 257 23 257 26+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 257 23 257 24+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  257+                                                  23+                                                  257+                                                  24+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/PartialSignatures.hs"+                                                     257+                                                     23+                                                     257+                                                     24+                                               , srcInfoPoints = []+                                               }+                                             "f")))+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/PartialSignatures.hs" 257 25 257 26+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  257+                                                  25+                                                  257+                                                  26+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/PartialSignatures.hs"+                                                     257+                                                     25+                                                     257+                                                     26+                                               , srcInfoPoints = []+                                               }+                                             "a")))))))+                        Nothing+                    ])+             ])+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 259 1 259 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 259 13 259 14 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 259 1 259 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 259 9 259 12+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 259 9 259 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 259 9 259 10+                     , srcInfoPoints = []+                     }+                   "H"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 259 11 259 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 259 11 259 12+                     , srcInfoPoints = []+                     }+                   "f")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 259 15 259 23+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 259 15 259 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 259 15 259 16+                      , srcInfoPoints = []+                      }+                    "H")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 259 17 259 23+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/PartialSignatures.hs" 259 17 259 18+                           , SrcSpan "tests/examples/PartialSignatures.hs" 259 22 259 23+                           ]+                       }+                     (TyApp+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 259 18 259 22+                          , srcInfoPoints = []+                          }+                        (TyVar+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 259 18 259 19+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 259 18 259 19+                                , srcInfoPoints = []+                                }+                              "f"))+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 22+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 21+                                 , SrcSpan "tests/examples/PartialSignatures.hs" 259 21 259 22+                                 ]+                             }+                           (Special+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 22+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 21+                                    , SrcSpan "tests/examples/PartialSignatures.hs" 259 21 259 22+                                    ]+                                }+                              (UnitCon+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 22+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 21+                                       , SrcSpan "tests/examples/PartialSignatures.hs" 259 21 259 22+                                       ]+                                   }))))+                 ])+          ]+          []+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 261 1 261 13+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 261 4 261 6 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 261 1 261 3+                , srcInfoPoints = []+                }+              "h1"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 13+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]+                           }+                         Nothing))))+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 261 12 261 13+                  , srcInfoPoints = []+                  }+                Nothing))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 263 1 263 42+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 263 1 263 42+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 263 1 263 3+                   , srcInfoPoints = []+                   }+                 "h1")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 263 4 263 5+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 263 4 263 5+                       , srcInfoPoints = []+                       }+                     "f")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 263 6 263 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 263 6 263 7+                       , srcInfoPoints = []+                       }+                     "b")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 263 8 263 42+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 263 8 263 9 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 263 10 263 42+                      , srcInfoPoints = []+                      }+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 263 10 263 31+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 263 10 263 11+                             , SrcSpan "tests/examples/PartialSignatures.hs" 263 30 263 31+                             ]+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 263 11 263 30+                            , srcInfoPoints = []+                            }+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 263 11 263 12+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 263 11 263 12+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 263 11 263 12+                                     , srcInfoPoints = []+                                     }+                                   "H")))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 263 13 263 14+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 263 13 263 14+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 263 13 263 14+                                     , srcInfoPoints = []+                                     }+                                   ".")))+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 263 15 263 30+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 263 15 263 19+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 263 15 263 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 263 15 263 19+                                        , srcInfoPoints = []+                                        }+                                      "fmap")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 263 20 263 30+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/PartialSignatures.hs" 263 20 263 21+                                      , SrcSpan "tests/examples/PartialSignatures.hs" 263 29 263 30+                                      ]+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 263 21 263 29+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 263 21 263 26+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 263 21 263 26+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/PartialSignatures.hs"+                                                    263+                                                    21+                                                    263+                                                    26+                                              , srcInfoPoints = []+                                              }+                                            "const")))+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 263 27 263 29+                                        , srcInfoPoints =+                                            [ SrcSpan+                                                "tests/examples/PartialSignatures.hs" 263 27 263 28+                                            , SrcSpan+                                                "tests/examples/PartialSignatures.hs" 263 28 263 29+                                            ]+                                        }+                                      (Special+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 263 27 263 29+                                           , srcInfoPoints =+                                               [ SrcSpan+                                                   "tests/examples/PartialSignatures.hs"+                                                   263+                                                   27+                                                   263+                                                   28+                                               , SrcSpan+                                                   "tests/examples/PartialSignatures.hs"+                                                   263+                                                   28+                                                   263+                                                   29+                                               ]+                                           }+                                         (UnitCon+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/PartialSignatures.hs"+                                                    263+                                                    27+                                                    263+                                                    29+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/PartialSignatures.hs"+                                                      263+                                                      27+                                                      263+                                                      28+                                                  , SrcSpan+                                                      "tests/examples/PartialSignatures.hs"+                                                      263+                                                      28+                                                      263+                                                      29+                                                  ]+                                              }))))))))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 263 32 263 42+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 263 32 263 33+                             , SrcSpan "tests/examples/PartialSignatures.hs" 263 41 263 42+                             ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 263 33 263 41+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 263 33 263 39+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 263 33 263 37+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 263 33 263 37+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 263 33 263 37+                                        , srcInfoPoints = []+                                        }+                                      "fmap")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 263 38 263 39+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 263 38 263 39+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 263 38 263 39+                                        , srcInfoPoints = []+                                        }+                                      "f"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 263 40 263 41+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 263 40 263 41+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 263 40 263 41+                                     , srcInfoPoints = []+                                     }+                                   "b")))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 265 1 265 8+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 265 4 265 6 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 265 1 265 3+                , srcInfoPoints = []+                }+              "h2"+          ]+          (TyWildCard+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 265 7 265 8+               , srcInfoPoints = []+               }+             Nothing)+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 267 1 267 42+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 267 1 267 42+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 267 1 267 3+                   , srcInfoPoints = []+                   }+                 "h2")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 267 4 267 5+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 267 4 267 5+                       , srcInfoPoints = []+                       }+                     "f")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 267 6 267 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 267 6 267 7+                       , srcInfoPoints = []+                       }+                     "b")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 267 8 267 42+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 267 8 267 9 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 267 10 267 42+                      , srcInfoPoints = []+                      }+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 267 10 267 31+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 267 10 267 11+                             , SrcSpan "tests/examples/PartialSignatures.hs" 267 30 267 31+                             ]+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 267 11 267 30+                            , srcInfoPoints = []+                            }+                          (Con+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 267 11 267 12+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 267 11 267 12+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 267 11 267 12+                                     , srcInfoPoints = []+                                     }+                                   "H")))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 267 13 267 14+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 267 13 267 14+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 267 13 267 14+                                     , srcInfoPoints = []+                                     }+                                   ".")))+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 267 15 267 30+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 267 15 267 19+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 267 15 267 19+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 267 15 267 19+                                        , srcInfoPoints = []+                                        }+                                      "fmap")))+                             (Paren+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 267 20 267 30+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/PartialSignatures.hs" 267 20 267 21+                                      , SrcSpan "tests/examples/PartialSignatures.hs" 267 29 267 30+                                      ]+                                  }+                                (App+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 267 21 267 29+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 267 21 267 26+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 267 21 267 26+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/PartialSignatures.hs"+                                                    267+                                                    21+                                                    267+                                                    26+                                              , srcInfoPoints = []+                                              }+                                            "const")))+                                   (Con+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 267 27 267 29+                                        , srcInfoPoints =+                                            [ SrcSpan+                                                "tests/examples/PartialSignatures.hs" 267 27 267 28+                                            , SrcSpan+                                                "tests/examples/PartialSignatures.hs" 267 28 267 29+                                            ]+                                        }+                                      (Special+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 267 27 267 29+                                           , srcInfoPoints =+                                               [ SrcSpan+                                                   "tests/examples/PartialSignatures.hs"+                                                   267+                                                   27+                                                   267+                                                   28+                                               , SrcSpan+                                                   "tests/examples/PartialSignatures.hs"+                                                   267+                                                   28+                                                   267+                                                   29+                                               ]+                                           }+                                         (UnitCon+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/PartialSignatures.hs"+                                                    267+                                                    27+                                                    267+                                                    29+                                              , srcInfoPoints =+                                                  [ SrcSpan+                                                      "tests/examples/PartialSignatures.hs"+                                                      267+                                                      27+                                                      267+                                                      28+                                                  , SrcSpan+                                                      "tests/examples/PartialSignatures.hs"+                                                      267+                                                      28+                                                      267+                                                      29+                                                  ]+                                              }))))))))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 267 32 267 42+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 267 32 267 33+                             , SrcSpan "tests/examples/PartialSignatures.hs" 267 41 267 42+                             ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 267 33 267 41+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 267 33 267 39+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 267 33 267 37+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 267 33 267 37+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 267 33 267 37+                                        , srcInfoPoints = []+                                        }+                                      "fmap")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 267 38 267 39+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 267 38 267 39+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 267 38 267 39+                                        , srcInfoPoints = []+                                        }+                                      "f"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 267 40 267 41+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 267 40 267 41+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 267 40 267 41+                                     , srcInfoPoints = []+                                     }+                                   "b")))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 269 1 269 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 269 6 269 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 269 1 269 5+                , srcInfoPoints = []+                }+              "app1"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 269 9 269 16+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 269 9 269 10+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 269 9 269 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 269 9 269 10+                        , srcInfoPoints = []+                        }+                      "H")))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 269 11 269 16+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 269 11 269 12+                      , SrcSpan "tests/examples/PartialSignatures.hs" 269 15 269 16+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 269 12 269 15+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 269 12 269 13+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 269 12 269 13+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 269 12 269 13+                              , srcInfoPoints = []+                              }+                            "B")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 269 14 269 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 269 14 269 15+                           , srcInfoPoints = []+                           }+                         "t")))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 270 1 270 25+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 270 1 270 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 270 1 270 5+                  , srcInfoPoints = []+                  }+                "app1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 270 6 270 25+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 270 6 270 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 25+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 18+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 10+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 10+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 10+                              , srcInfoPoints = []+                              }+                            "h1")))+                   (Paren+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 270 11 270 18+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 270 11 270 12+                            , SrcSpan "tests/examples/PartialSignatures.hs" 270 17 270 18+                            ]+                        }+                      (InfixApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 270 12 270 17+                           , srcInfoPoints = []+                           }+                         (Con+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 270 12 270 13+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 270 12 270 13+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 270 12 270 13+                                    , srcInfoPoints = []+                                    }+                                  "H")))+                         (QVarOp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 270 14 270 15+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 270 14 270 15+                                 , srcInfoPoints = []+                                 }+                               (Symbol+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 270 14 270 15+                                    , srcInfoPoints = []+                                    }+                                  ".")))+                         (Con+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 270 16 270 17+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 270 16 270 17+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 270 16 270 17+                                    , srcInfoPoints = []+                                    }+                                  "I"))))))+                (Paren+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 270 19 270 25+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 270 19 270 20+                         , SrcSpan "tests/examples/PartialSignatures.hs" 270 24 270 25+                         ]+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 270 20 270 24+                        , srcInfoPoints = []+                        }+                      (Con+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 270 20 270 21+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 270 20 270 21+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 270 20 270 21+                                 , srcInfoPoints = []+                                 }+                               "B")))+                      (Con+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 24+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 23+                               , SrcSpan "tests/examples/PartialSignatures.hs" 270 23 270 24+                               ]+                           }+                         (Special+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 24+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 23+                                  , SrcSpan "tests/examples/PartialSignatures.hs" 270 23 270 24+                                  ]+                              }+                            (UnitCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 24+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 23+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 270 23 270 24+                                     ]+                                 })))))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 272 1 272 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 272 6 272 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 272 1 272 5+                , srcInfoPoints = []+                }+              "app2"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 272 9 272 16+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 272 9 272 10+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 272 9 272 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 272 9 272 10+                        , srcInfoPoints = []+                        }+                      "H")))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 272 11 272 16+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 272 11 272 12+                      , SrcSpan "tests/examples/PartialSignatures.hs" 272 15 272 16+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 272 12 272 15+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 272 12 272 13+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 272 12 272 13+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 272 12 272 13+                              , srcInfoPoints = []+                              }+                            "B")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 272 14 272 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 272 14 272 15+                           , srcInfoPoints = []+                           }+                         "t")))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 273 1 273 25+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 273 1 273 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 273 1 273 5+                  , srcInfoPoints = []+                  }+                "app2"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 273 6 273 25+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 273 6 273 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 25+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 18+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 10+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 10+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 10+                              , srcInfoPoints = []+                              }+                            "h2")))+                   (Paren+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 273 11 273 18+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 273 11 273 12+                            , SrcSpan "tests/examples/PartialSignatures.hs" 273 17 273 18+                            ]+                        }+                      (InfixApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 273 12 273 17+                           , srcInfoPoints = []+                           }+                         (Con+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 273 12 273 13+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 273 12 273 13+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 273 12 273 13+                                    , srcInfoPoints = []+                                    }+                                  "H")))+                         (QVarOp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 273 14 273 15+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 273 14 273 15+                                 , srcInfoPoints = []+                                 }+                               (Symbol+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 273 14 273 15+                                    , srcInfoPoints = []+                                    }+                                  ".")))+                         (Con+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 273 16 273 17+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 273 16 273 17+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 273 16 273 17+                                    , srcInfoPoints = []+                                    }+                                  "I"))))))+                (Paren+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 273 19 273 25+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 273 19 273 20+                         , SrcSpan "tests/examples/PartialSignatures.hs" 273 24 273 25+                         ]+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 273 20 273 24+                        , srcInfoPoints = []+                        }+                      (Con+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 273 20 273 21+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 273 20 273 21+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 273 20 273 21+                                 , srcInfoPoints = []+                                 }+                               "B")))+                      (Con+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 24+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 23+                               , SrcSpan "tests/examples/PartialSignatures.hs" 273 23 273 24+                               ]+                           }+                         (Special+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 24+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 23+                                  , SrcSpan "tests/examples/PartialSignatures.hs" 273 23 273 24+                                  ]+                              }+                            (UnitCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 24+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 23+                                     , SrcSpan "tests/examples/PartialSignatures.hs" 273 23 273 24+                                     ]+                                 })))))))+          Nothing+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 276 1 279 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 277 3 277 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 276 1 279 22+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PartialSignatures.hs" 277 3 277 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 276 1 276 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 276 5 276 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 276 5 276 6+                       , srcInfoPoints = []+                       }+                     "f")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 276 7 276 10+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 276 7 276 8 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 276 9 276 10+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 276 9 276 10+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 276 9 276 10+                            , srcInfoPoints = []+                            }+                          "g"))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 277 9 279 22+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PartialSignatures.hs" 277 9 277 9+                          , SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 0+                          ]+                      }+                    [ FunBind+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PartialSignatures.hs" 277 9 279 22+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PartialSignatures.hs" 278 11 278 16 ]+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 277 9 279 22+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 278 11 278 16 ]+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 277 9 277 10+                                 , srcInfoPoints = []+                                 }+                               "g")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 277 11 277 12+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 277 11 277 12+                                     , srcInfoPoints = []+                                     }+                                   "r")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 277 13 277 16+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/PartialSignatures.hs" 277 13 277 14 ]+                                 }+                               (Var+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 277 15 277 16+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/PartialSignatures.hs" 277 15 277 16+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/PartialSignatures.hs" 277 15 277 16+                                          , srcInfoPoints = []+                                          }+                                        "x"))))+                            (Just+                               (BDecls+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PartialSignatures.hs" 278 17 279 22+                                    , srcInfoPoints =+                                        [ SrcSpan+                                            "tests/examples/PartialSignatures.hs" 278 17 278 17+                                        , SrcSpan+                                            "tests/examples/PartialSignatures.hs" 279 17 279 17+                                        , SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 0+                                        ]+                                    }+                                  [ TypeSig+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 278 17 278 23+                                        , srcInfoPoints =+                                            [ SrcSpan+                                                "tests/examples/PartialSignatures.hs" 278 19 278 21+                                            ]+                                        }+                                      [ Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/PartialSignatures.hs"+                                                  278+                                                  17+                                                  278+                                                  18+                                            , srcInfoPoints = []+                                            }+                                          "x"+                                      ]+                                      (TyWildCard+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 278 22 278 23+                                           , srcInfoPoints = []+                                           }+                                         Nothing)+                                  , PatBind+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan+                                              "tests/examples/PartialSignatures.hs" 279 17 279 22+                                        , srcInfoPoints = []+                                        }+                                      (PVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 279 17 279 18+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/PartialSignatures.hs"+                                                    279+                                                    17+                                                    279+                                                    18+                                              , srcInfoPoints = []+                                              }+                                            "x"))+                                      (UnGuardedRhs+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/PartialSignatures.hs" 279 19 279 22+                                           , srcInfoPoints =+                                               [ SrcSpan+                                                   "tests/examples/PartialSignatures.hs"+                                                   279+                                                   19+                                                   279+                                                   20+                                               ]+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/PartialSignatures.hs"+                                                    279+                                                    21+                                                    279+                                                    22+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/PartialSignatures.hs"+                                                       279+                                                       21+                                                       279+                                                       22+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/PartialSignatures.hs"+                                                          279+                                                          21+                                                          279+                                                          22+                                                    , srcInfoPoints = []+                                                    }+                                                  "r"))))+                                      Nothing+                                  ]))+                        ]+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 282 5 282 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 4+                , srcInfoPoints = []+                }+              "unc"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 282 8 282 36+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 282 22 282 24 ]+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 282 8 282 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 282 8 282 9+                      , SrcSpan "tests/examples/PartialSignatures.hs" 282 20 282 21+                      ]+                  }+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 282 9 282 20+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 282 11 282 13 ]+                     }+                   (TyWildCard+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 282 9 282 10+                        , srcInfoPoints = []+                        }+                      Nothing)+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 282 14 282 20+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 282 16 282 18 ]+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 282 14 282 15+                           , srcInfoPoints = []+                           }+                         Nothing)+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 282 19 282 20+                           , srcInfoPoints = []+                           }+                         Nothing))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 282 25 282 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 282 32 282 34 ]+                  }+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 282 25 282 31+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 282 25 282 26+                         , SrcSpan "tests/examples/PartialSignatures.hs" 282 27 282 28+                         , SrcSpan "tests/examples/PartialSignatures.hs" 282 30 282 31+                         ]+                     }+                   Boxed+                   [ TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 282 26 282 27+                         , srcInfoPoints = []+                         }+                       Nothing+                   , TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 282 29 282 30+                         , srcInfoPoints = []+                         }+                       Nothing+                   ])+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 282 35 282 36+                     , srcInfoPoints = []+                     }+                   Nothing)))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 283 1 283 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 283 1 283 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 283 1 283 4+                  , srcInfoPoints = []+                  }+                "unc"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 283 5 283 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 283 5 283 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 283 7 283 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 283 7 283 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 283 7 283 14+                        , srcInfoPoints = []+                        }+                      "uncurry"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 285 1 285 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 285 5 285 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 285 1 285 4+                , srcInfoPoints = []+                }+              "unc"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 285 8 285 42+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 285 25 285 27 ]+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 285 8 285 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 285 8 285 9+                      , SrcSpan "tests/examples/PartialSignatures.hs" 285 23 285 24+                      ]+                  }+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 285 9 285 23+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 285 12 285 14 ]+                     }+                   (TyWildCard+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 285 9 285 11+                        , srcInfoPoints = []+                        }+                      (Just+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PartialSignatures.hs" 285 10 285 11+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 285 15 285 23+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 285 18 285 20 ]+                        }+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 285 15 285 17+                           , srcInfoPoints = []+                           }+                         (Just+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 285 16 285 17+                                 , srcInfoPoints = []+                                 }+                               "b")))+                      (TyWildCard+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 285 21 285 23+                           , srcInfoPoints = []+                           }+                         (Just+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PartialSignatures.hs" 285 22 285 23+                                 , srcInfoPoints = []+                                 }+                               "c"))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 285 28 285 42+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 285 37 285 39 ]+                  }+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 285 28 285 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 285 28 285 29+                         , SrcSpan "tests/examples/PartialSignatures.hs" 285 31 285 32+                         , SrcSpan "tests/examples/PartialSignatures.hs" 285 35 285 36+                         ]+                     }+                   Boxed+                   [ TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 285 29 285 31+                         , srcInfoPoints = []+                         }+                       (Just+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 285 30 285 31+                               , srcInfoPoints = []+                               }+                             "a"))+                   , TyWildCard+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 285 33 285 35+                         , srcInfoPoints = []+                         }+                       (Just+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 285 34 285 35+                               , srcInfoPoints = []+                               }+                             "b"))+                   ])+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 285 40 285 42+                     , srcInfoPoints = []+                     }+                   (Just+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 285 41 285 42+                           , srcInfoPoints = []+                           }+                         "c")))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 286 1 286 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 286 1 286 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 286 1 286 4+                  , srcInfoPoints = []+                  }+                "unc"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 286 5 286 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 286 5 286 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 286 7 286 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 286 7 286 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PartialSignatures.hs" 286 7 286 14+                        , srcInfoPoints = []+                        }+                      "uncurry"))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 289 1 289 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 289 5 289 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 289 1 289 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 289 8 289 31+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 289 8 289 23+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 289 8 289 9+                         , SrcSpan "tests/examples/PartialSignatures.hs" 289 16 289 17+                         , SrcSpan "tests/examples/PartialSignatures.hs" 289 19 289 20+                         , SrcSpan "tests/examples/PartialSignatures.hs" 289 21 289 23+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13+                                     , srcInfoPoints = []+                                     }+                                   "Show")))+                          (TyWildCard+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 289 14 289 16+                               , srcInfoPoints = []+                               }+                             (Just+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 289 15 289 16+                                     , srcInfoPoints = []+                                     }+                                   "a"))))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 289 18 289 19+                         , srcInfoPoints = []+                         }+                       (TyWildCard+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 289 18 289 19+                            , srcInfoPoints = []+                            }+                          Nothing)+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 289 24 289 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 289 27 289 29 ]+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 289 24 289 26+                     , srcInfoPoints = []+                     }+                   (Just+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PartialSignatures.hs" 289 25 289 26+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 289 30 289 31+                     , srcInfoPoints = []+                     }+                   Nothing)))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 290 1 290 22+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 290 1 290 22+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 290 1 290 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 290 5 290 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 290 5 290 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 290 7 290 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 290 7 290 8 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 290 9 290 22+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 290 9 290 13+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 290 9 290 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 290 9 290 13+                               , srcInfoPoints = []+                               }+                             "show")))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 290 14 290 22+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PartialSignatures.hs" 290 14 290 15+                             , SrcSpan "tests/examples/PartialSignatures.hs" 290 21 290 22+                             ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 290 15 290 21+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 290 15 290 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 290 15 290 19+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 290 15 290 19+                                     , srcInfoPoints = []+                                     }+                                   "succ")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 290 20 290 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PartialSignatures.hs" 290 20 290 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PartialSignatures.hs" 290 20 290 21+                                     , srcInfoPoints = []+                                     }+                                   "x")))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 292 1 292 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PartialSignatures.hs" 292 5 292 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 292 1 292 4+                , srcInfoPoints = []+                }+              "bar"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PartialSignatures.hs" 292 8 292 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PartialSignatures.hs" 292 10 292 12 ]+               }+             (TyWildCard+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 292 8 292 9+                  , srcInfoPoints = []+                  }+                Nothing)+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PartialSignatures.hs" 292 13 292 19+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PartialSignatures.hs" 292 15 292 17 ]+                  }+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 292 13 292 14+                     , srcInfoPoints = []+                     }+                   Nothing)+                (TyWildCard+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PartialSignatures.hs" 292 18 292 19+                     , srcInfoPoints = []+                     }+                   Nothing)))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PartialSignatures.hs" 293 1 293 14+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PartialSignatures.hs" 293 1 293 14+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 293 1 293 4+                   , srcInfoPoints = []+                   }+                 "bar")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 293 5 293 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 293 5 293 6+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PartialSignatures.hs" 293 7 293 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PartialSignatures.hs" 293 7 293 8+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PartialSignatures.hs" 293 9 293 14+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PartialSignatures.hs" 293 9 293 10 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PartialSignatures.hs" 293 11 293 14+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 293 11 293 12+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 293 11 293 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 293 11 293 12+                               , srcInfoPoints = []+                               }+                             "y")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PartialSignatures.hs" 293 13 293 14+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PartialSignatures.hs" 293 13 293 14+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PartialSignatures.hs" 293 13 293 14+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 101 1 101 24)+        " No extra constraints"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 131 1 131 84)+        " Test case for (fixed) bug that previously generated the following error message:"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 133 1 133 31)+        " LocalDefinitionBug.hs:9:16:"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 134 1 134 95)+        "     GHC internal error: \8216a\8217 is not in scope during type checking, but it passed the renamer"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 135 1 135 63)+        "     tcl_env of environment: [alA :-> Type variable \8216_\8217 = _,"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 136 1 136 73)+        "                              alC :-> Identifier[x::a, <NotTopLevel>],"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 137 1 137 63)+        "                              alE :-> Type variable \8216t\8217 = t,"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 138 1 138 62)+        "                              rjF :-> Identifier[monoLoc::a"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 139 1 139 102)+        "                                                          -> ((a, String), (a, _)), <NotTopLevel>]]"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 140 1 140 60)+        "     In the type signature for \8216g\8217: g :: t -> (a, String)"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 141 1 141 37)+        "     In an equation for \8216monoLoc\8217:"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 142 1 142 21)+        "         monoLoc x"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 143 1 143 33)+        "           = (g True, g False)"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 144 1 144 19)+        "           where"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 145 1 145 39)+        "               g :: t -> (a, String)"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 146 1 146 34)+        "               g _ = (x, \"foo\")"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 149 1 149 64)+        " Fixed by using tcExtendTyVarEnv2 instead of tcExtendTyVarEnv"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 177 5 177 35)+        " g :: b -> (a, String) -- #1"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 178 22 178 27)+        " #2"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 181 1 181 51)+        " For #2, we should infer the same type as in #1."+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 220 1 220 74)+        " The named wildcards aren't scoped as the ScopedTypeVariables extension"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 221 1 221 79)+        " isn't enabled, of which the behaviour is copied. Thus, the _a annotation of"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 222 1 222 70)+        " x, which must be Bool, isn't the same as the _a in g, which is now"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 223 1 223 21)+        " generalised over."+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 248 1 248 33)+        " Inferred type: Bool -> String"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 262 1 262 44)+        " h :: Functor m => (a -> b) -> m a -> H m"+    , Comment+        False+        (SrcSpan "tests/examples/PartialSignatures.hs" 266 1 266 45)+        " h2 :: Functor m => (a -> b) -> m a -> H m"+    ]+  )
+ tests/examples/PartialSignatures.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PartialSignatures.hs.prettyprinter.golden view
@@ -0,0 +1,236 @@+{-# LANGUAGE GADTs, NamedWildCards, ScopedTypeVariables #-}++bar :: Int -> _ Int+bar x = Foo True () x++addAndOr1 :: _+addAndOr1 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y++addAndOr2 :: _ -> _+addAndOr2 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y++addAndOr3 :: _ -> _ -> _+addAndOr3 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y++addAndOr4 :: (_ _ _) -> (_ _ _) -> (_ _ _)+addAndOr4 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y++addAndOr5 :: (_, _) -> (_, _) -> (_, _)+addAndOr5 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y++addAndOr6 :: (Int, _) -> (Bool, _) -> (_ Int Bool)+addAndOr6 (a, b) (c, d) = (a `plus` d, b || c)+  where plus :: Int -> Int -> Int+        x `plus` y = x + y++bar :: _ -> _+bar x = not x++alpha :: _+alpha = 3++bravo :: _ => _+bravo = 3++bravo :: _ => _+bravo = 3++barry :: _a -> (_b _a, _b _)+barry x = (Left "x", Right x)++foo :: a ~ Bool => (a, _)+foo = (True, False)++every :: _ -> _ -> Bool+every _ [] = True+every p (x : xs) = p x && every p xs++every :: (_a -> Bool) -> [_a] -> Bool+every _ [] = True+every p (x : xs) = p x && every p xs++bar :: Bool -> Bool+bar x = (x :: _)++bar :: _a -> _a+bar True = (False :: _a)+bar False = (True :: _a)++arbitCs1 :: _ => a -> String+arbitCs1 x = show (succ x) ++ show (x == x)++arbitCs2 :: (Show a, _) => a -> String+arbitCs2 x = arbitCs1 x++arbitCs3 :: (Show a, Enum a, _) => a -> String+arbitCs3 x = arbitCs1 x++arbitCs4 :: (Eq a, _) => a -> String+arbitCs4 x = arbitCs1 x++arbitCs5 :: (Eq a, Enum a, Show a, _) => a -> String+arbitCs5 x = arbitCs1 x++foo :: _ => String+foo = "x"++foo :: _ => a+foo = 3++foo :: _ => a+foo = 3++fall :: forall a . _ -> a+fall v = v++bar :: _a -> _a+bar x = not x++foo :: (forall a . [a] -> [a]) -> _+foo x = (x [True, False], x ['a', 'b'])++foo :: (forall a . [a] -> [a]) -> (_, _ _)+foo x = (x [True, False], x ['a', 'b'])++monoLoc :: forall a . a -> ((a, String), (a, _))+monoLoc x = (g True, g False)+  where g :: t -> (a, String)+        g _ = (x, "foo")++data NukeMonad a b c++instance Functor (NukeMonad a b) where+        fmap = undefined++instance Applicative (NukeMonad a b) where+        pure = undefined+        (<*>) = undefined++instance Monad (NukeMonad a b) where+        return = undefined+        (>>=) = undefined++isMeltdown :: NukeMonad param1 param2 Bool+isMeltdown = undefined++unlessMeltdown :: _nm () -> _nm ()+unlessMeltdown c+  = do m <- isMeltdown+       if m then return () else c++monoLoc :: forall a . a -> ((a, String), (a, String))+monoLoc x = (g True, g 'v')+  where g :: b -> (a, _)+        g y = (x, "foo")++foo :: (_a, b) -> (a, _b)+foo (x, y) = (x, y)++f :: (_) => a -> a -> Bool+f x y = x == y++foo :: _+Just foo = Just id++foo :: Bool -> _+Just foo = Just id++bar :: Bool -> Bool+bar (x :: _) = True++orr :: a -> a -> a+orr = undefined++g :: _+g = f `orr` True++f :: _+f = g++test3 :: _+test3 x+  = const+      (let x :: _b+           x = True+         in False)+      $+      const+        (let x :: _b+             x = 'a'+           in True)+        $ not x++foo :: _a -> _+foo x+  = let v = not x+        +        g :: _a -> _a+        g x = x+      in (g 'x')++showTwo :: Show _a => _a -> String+showTwo x = show x++bar :: _ -> Bool+bar _ = True++data GenParser tok st a = GenParser tok st a++skipMany' :: GenParser tok st a -> GenParser tok st ()+skipMany' = undefined++skipMany :: _ -> _ ()+skipMany = skipMany'++somethingShowable :: Show _x => _x -> _+somethingShowable x = show (not x)++data I a = I a++instance Functor I where+        fmap f (I a) = I (f a)++newtype B t a = B a++instance Functor (B t) where+        fmap f (B a) = B (f a)++newtype H f = H (f ())++h1 :: _ => _+h1 f b = (H . fmap (const ())) (fmap f b)++h2 :: _+h2 f b = (H . fmap (const ())) (fmap f b)++app1 :: H (B t)+app1 = h1 (H . I) (B ())++app2 :: H (B t)+app2 = h2 (H . I) (B ())+foo f = g+  where g r = x+          where x :: _+                x = r++unc :: (_ -> _ -> _) -> (_, _) -> _+unc = uncurry++unc :: (_a -> _b -> _c) -> (_a, _b) -> _c+unc = uncurry++foo :: (Show _a, _) => _a -> _+foo x = show (succ x)++bar :: _ -> _ -> _+bar x y = y x
+ tests/examples/PatSynFix.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE PatternSynonyms #-}+pattern A <- (True, True) where A = (not $ False && True, True)+exp = not $ False && True
+ tests/examples/PatSynFix.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatSynFix.hs.parser.golden view
@@ -0,0 +1,381 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PatSynFix.hs" 1 1 1 1+            , SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 1+            , SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 1+            , SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 1+            , SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 1+            , SrcSpan "tests/examples/PatSynFix.hs" 4 1 4 1+            , SrcSpan "tests/examples/PatSynFix.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatSynFix.hs" 1 1 1 13+                , SrcSpan "tests/examples/PatSynFix.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      ]+      []+      [ PatSyn+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 8+                , SrcSpan "tests/examples/PatSynFix.hs" 2 11 2 13+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 9 2 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 9 2 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 9 2 10+                     , srcInfoPoints = []+                     }+                   "A"))+             [])+          (PTuple+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 14 2 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatSynFix.hs" 2 14 2 15+                   , SrcSpan "tests/examples/PatSynFix.hs" 2 19 2 20+                   , SrcSpan "tests/examples/PatSynFix.hs" 2 25 2 26+                   ]+               }+             Boxed+             [ PApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 15 2 19+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 15 2 19+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 15 2 19+                         , srcInfoPoints = []+                         }+                       "True"))+                 []+             , PApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 21 2 25+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 21 2 25+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 21 2 25+                         , srcInfoPoints = []+                         }+                       "True"))+                 []+             ])+          (ExplicitBidirectional+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 27 3 0+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatSynFix.hs" 2 27 2 32+                   , SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 33+                   , SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 0+                   ]+               }+             [ PatBind+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 64+                   , srcInfoPoints = []+                   }+                 (PApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 34+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 34+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 34+                            , srcInfoPoints = []+                            }+                          "A"))+                    [])+                 (UnGuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 35 2 64+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PatSynFix.hs" 2 35 2 36 ]+                      }+                    (Tuple+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 37 2 64+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PatSynFix.hs" 2 37 2 38+                             , SrcSpan "tests/examples/PatSynFix.hs" 2 57 2 58+                             , SrcSpan "tests/examples/PatSynFix.hs" 2 63 2 64+                             ]+                         }+                       Boxed+                       [ InfixApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 38 2 57+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 38 2 41+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 38 2 41+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PatSynFix.hs" 2 38 2 41+                                      , srcInfoPoints = []+                                      }+                                    "not")))+                           (QVarOp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 42 2 43+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 42 2 43+                                   , srcInfoPoints = []+                                   }+                                 (Symbol+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PatSynFix.hs" 2 42 2 43+                                      , srcInfoPoints = []+                                      }+                                    "$")))+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 44 2 57+                                , srcInfoPoints = []+                                }+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 44 2 49+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PatSynFix.hs" 2 44 2 49+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/PatSynFix.hs" 2 44 2 49+                                         , srcInfoPoints = []+                                         }+                                       "False")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 50 2 52+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PatSynFix.hs" 2 50 2 52+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/PatSynFix.hs" 2 50 2 52+                                         , srcInfoPoints = []+                                         }+                                       "&&")))+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 53 2 57+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PatSynFix.hs" 2 53 2 57+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/PatSynFix.hs" 2 53 2 57+                                         , srcInfoPoints = []+                                         }+                                       "True"))))+                       , Con+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 59 2 63+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 59 2 63+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 59 2 63+                                   , srcInfoPoints = []+                                   }+                                 "True"))+                       ]))+                 Nothing+             ])+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 26+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 4+                  , srcInfoPoints = []+                  }+                "exp"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 5 3 26+               , srcInfoPoints = [ SrcSpan "tests/examples/PatSynFix.hs" 3 5 3 6 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 7 3 26+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 7 3 10+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 7 3 10+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 7 3 10+                           , srcInfoPoints = []+                           }+                         "not")))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 11 3 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 11 3 12+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 11 3 12+                           , srcInfoPoints = []+                           }+                         "$")))+                (InfixApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 13 3 26+                     , srcInfoPoints = []+                     }+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 13 3 18+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 13 3 18+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 13 3 18+                              , srcInfoPoints = []+                              }+                            "False")))+                   (QVarOp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 19 3 21+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 19 3 21+                           , srcInfoPoints = []+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 19 3 21+                              , srcInfoPoints = []+                              }+                            "&&")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 22 3 26+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 22 3 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 22 3 26+                              , srcInfoPoints = []+                              }+                            "True"))))))+          Nothing+      ]+  , []+  )
+ tests/examples/PatSynFix.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatSynFix.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE PatternSynonyms #-}++pattern A <- (True, True)+  where A = (not $ False && True, True)+exp = not $ False && True
+ tests/examples/PatternSplice.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE TemplateHaskell #-}+module PatternSpliceTest where++foo :: Int -> Bool+foo $( [p| 42 |] ) = True+foo _              = False
+ tests/examples/PatternSplice.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSplice.hs.parser.golden view
@@ -0,0 +1,235 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PatternSplice.hs" 1 1 1 1+            , SrcSpan "tests/examples/PatternSplice.hs" 2 1 2 1+            , SrcSpan "tests/examples/PatternSplice.hs" 2 1 2 1+            , SrcSpan "tests/examples/PatternSplice.hs" 4 1 4 1+            , SrcSpan "tests/examples/PatternSplice.hs" 5 1 5 1+            , SrcSpan "tests/examples/PatternSplice.hs" 6 1 6 1+            , SrcSpan "tests/examples/PatternSplice.hs" 7 1 7 1+            , SrcSpan "tests/examples/PatternSplice.hs" 7 1 7 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 2 1 2 31+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/PatternSplice.hs" 2 1 2 7+                  , SrcSpan "tests/examples/PatternSplice.hs" 2 26 2 31+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 2 8 2 25+                 , srcInfoPoints = []+                 }+               "PatternSpliceTest")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSplice.hs" 1 1 1 13+                , SrcSpan "tests/examples/PatternSplice.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 1 4 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSplice.hs" 4 5 4 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 1 4 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 8 4 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSplice.hs" 4 12 4 14 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 8 4 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 8 4 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 8 4 11+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 15 4 19+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 15 4 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 15 4 19+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 1 6 27+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 1 5 26+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 1 5 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PSplice+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 5 5 19+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PatternSplice.hs" 5 5 5 7+                        , SrcSpan "tests/examples/PatternSplice.hs" 5 18 5 19+                        ]+                    }+                  (ParenSplice+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 5 5 19+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/PatternSplice.hs" 5 5 5 7+                           , SrcSpan "tests/examples/PatternSplice.hs" 5 18 5 19+                           ]+                       }+                     (BracketExp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 8 5 17+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PatternSplice.hs" 5 8 5 11+                              , SrcSpan "tests/examples/PatternSplice.hs" 5 15 5 17+                              ]+                          }+                        (PatBracket+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 8 5 17+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PatternSplice.hs" 5 8 5 11+                                 , SrcSpan "tests/examples/PatternSplice.hs" 5 15 5 17+                                 ]+                             }+                           (PLit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 12 5 14+                                , srcInfoPoints = []+                                }+                              (Signless+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PatternSplice.hs" 5 12 5 14+                                   , srcInfoPoints = []+                                   })+                              (Int+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PatternSplice.hs" 5 12 5 14+                                   , srcInfoPoints = []+                                   }+                                 42+                                 "42")))))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 20 5 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSplice.hs" 5 20 5 21 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 22 5 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 22 5 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 22 5 26+                            , srcInfoPoints = []+                            }+                          "True"))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 1 6 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 1 6 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 5 6 6+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 20 6 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSplice.hs" 6 20 6 21 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 22 6 27+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 22 6 27+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 22 6 27+                            , srcInfoPoints = []+                            }+                          "False"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/PatternSplice.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSplice.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TemplateHaskell #-}+module PatternSpliceTest where++foo :: Int -> Bool+foo $( [p| 42 |] ) = True+foo _ = False
+ tests/examples/PatternSynonymImport.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE PatternSynonyms #-}++module Main (pattern Foo, pattern (:>)) where++import Foo (pattern Foo, pattern (:>))
+ tests/examples/PatternSynonymImport.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonymImport.hs.parser.golden view
@@ -0,0 +1,208 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/PatternSynonymImport.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PatternSynonymImport.hs" 1 1 1 1+            , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 1 3 1+            , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 1 3 1+            , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 1 5 1+            , SrcSpan "tests/examples/PatternSynonymImport.hs" 6 1 6 1+            , SrcSpan "tests/examples/PatternSynonymImport.hs" 6 1 6 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/PatternSynonymImport.hs" 3 1 3 46+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 1 3 7+                  , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 41 3 46+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/PatternSynonymImport.hs" 3 8 3 12+                 , srcInfoPoints = []+                 }+               "Main")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PatternSynonymImport.hs" 3 13 3 40+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 13 3 14+                        , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 25 3 26+                        , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 39 3 40+                        ]+                    }+                  [ EAbs+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonymImport.hs" 3 14 3 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 14 3 21 ]+                        }+                      (PatternNamespace+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymImport.hs" 3 14 3 21+                           , srcInfoPoints = []+                           })+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymImport.hs" 3 22 3 25+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymImport.hs" 3 22 3 25+                              , srcInfoPoints = []+                              }+                            "Foo"))+                  , EAbs+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonymImport.hs" 3 27 3 39+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 27 3 34 ]+                        }+                      (PatternNamespace+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymImport.hs" 3 27 3 34+                           , srcInfoPoints = []+                           })+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymImport.hs" 3 35 3 39+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 35 3 36+                               , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 36 3 38+                               , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 38 3 39+                               ]+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymImport.hs" 3 36 3 38+                              , srcInfoPoints = []+                              }+                            ":>"))+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonymImport.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonymImport.hs" 1 1 1 13+                , SrcSpan "tests/examples/PatternSynonymImport.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonymImport.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonymImport.hs" 5 1 5 39+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 1 5 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymImport.hs" 5 8 5 11+                  , srcInfoPoints = []+                  }+                "Foo"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymImport.hs" 5 12 5 39+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 12 5 13+                         , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 24 5 25+                         , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 38 5 39+                         ]+                     }+                   False+                   [ IAbs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonymImport.hs" 5 13 5 24+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 13 5 20+                             , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 21 5 24+                             ]+                         }+                       (PatternNamespace+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonymImport.hs" 5 13 5 20+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 13 5 20 ]+                            })+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonymImport.hs" 5 21 5 24+                            , srcInfoPoints = []+                            }+                          "Foo")+                   , IAbs+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonymImport.hs" 5 26 5 38+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 26 5 33+                             , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 34 5 38+                             ]+                         }+                       (PatternNamespace+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonymImport.hs" 5 26 5 33+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 26 5 33 ]+                            })+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonymImport.hs" 5 34 5 38+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 34 5 35+                                , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 35 5 37+                                , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 37 5 38+                                ]+                            }+                          ":>")+                   ])+          }+      ]+      []+  , []+  )
+ tests/examples/PatternSynonymImport.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonymImport.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE PatternSynonyms #-}+module Main (pattern Foo, pattern (:>)) where+import Foo (pattern Foo, pattern (:>))
+ tests/examples/PatternSynonymSignatures.hs view
@@ -0,0 +1,15 @@+{-# LANGUAGE PatternSynonyms #-}+++pattern Syn :: Typ++pattern Syn :: () => () => Typ++pattern Syn :: Show a => Show b => Typ++pattern Syn :: Show b => Typ++pattern Syn :: Show b => () => Typ++pattern Syn :: () => Show b => Typ+
+ tests/examples/PatternSynonymSignatures.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonymSignatures.hs.parser.golden view
@@ -0,0 +1,607 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 1 16 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 1 1 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 1 6 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 1 8 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 1 10 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 1 12 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 1 14 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 16 1 16 1+            , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 16 1 16 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 1 1 13+                , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      ]+      []+      [ PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 8+                , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 13 4 15+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 9 4 12+                , srcInfoPoints = []+                }+              "Syn"+          ]+          Nothing+          Nothing+          Nothing+          Nothing+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 16 4 19+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 16 4 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 16 4 19+                     , srcInfoPoints = []+                     }+                   "Typ")))+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 1 6 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 1 6 8+                , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 13 6 15+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 9 6 12+                , srcInfoPoints = []+                }+              "Syn"+          ]+          Nothing+          (Just+             (CxEmpty+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 16 6 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 16 6 17+                      , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 17 6 18+                      , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 19 6 21+                      ]+                  }))+          Nothing+          (Just+             (CxEmpty+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 22 6 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 22 6 23+                      , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 23 6 24+                      , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 25 6 27+                      ]+                  }))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 28 6 31+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 28 6 31+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 28 6 31+                     , srcInfoPoints = []+                     }+                   "Typ")))+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 1 8 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 1 8 8+                , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 13 8 15+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 9 8 12+                , srcInfoPoints = []+                }+              "Syn"+          ]+          Nothing+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]+                  }+                (TypeA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20+                                 , srcInfoPoints = []+                                 }+                               "Show")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22+                              , srcInfoPoints = []+                              }+                            "a"))))))+          Nothing+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]+                  }+                (TypeA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30+                                 , srcInfoPoints = []+                                 }+                               "Show")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32+                              , srcInfoPoints = []+                              }+                            "b"))))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 36 8 39+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 36 8 39+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 36 8 39+                     , srcInfoPoints = []+                     }+                   "Typ")))+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 1 10 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 1 10 8+                , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 13 10 15+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 9 10 12+                , srcInfoPoints = []+                }+              "Syn"+          ]+          Nothing+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25+                      ]+                  }+                (TypeA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25+                            ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25+                               ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan+                                       "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20+                                 , srcInfoPoints = []+                                 }+                               "Show")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22+                              , srcInfoPoints = []+                              }+                            "b"))))))+          Nothing+          Nothing+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 26 10 29+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 26 10 29+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 26 10 29+                     , srcInfoPoints = []+                     }+                   "Typ")))+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 1 12 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 1 12 8+                , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 13 12 15+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 9 12 12+                , srcInfoPoints = []+                }+              "Syn"+          ]+          Nothing+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25+                      ]+                  }+                (TypeA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25+                            ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25+                               ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan+                                       "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20+                                 , srcInfoPoints = []+                                 }+                               "Show")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22+                              , srcInfoPoints = []+                              }+                            "b"))))))+          Nothing+          (Just+             (CxEmpty+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 26 12 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 26 12 27+                      , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 27 12 28+                      , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 29 12 31+                      ]+                  }))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 32 12 35+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 32 12 35+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 32 12 35+                     , srcInfoPoints = []+                     }+                   "Typ")))+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 1 14 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 1 14 8+                , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 13 14 15+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 9 14 12+                , srcInfoPoints = []+                }+              "Syn"+          ]+          Nothing+          (Just+             (CxEmpty+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 16 14 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 16 14 17+                      , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 17 14 18+                      , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 19 14 21+                      ]+                  }))+          Nothing+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31+                      ]+                  }+                (TypeA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31+                            ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31+                               ]+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan+                                       "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26+                                 , srcInfoPoints = []+                                 }+                               "Show")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28+                              , srcInfoPoints = []+                              }+                            "b"))))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 32 14 35+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 32 14 35+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 32 14 35+                     , srcInfoPoints = []+                     }+                   "Typ")))+      ]+  , []+  )
+ tests/examples/PatternSynonymSignatures.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonymSignatures.hs.prettyprinter.golden view
@@ -0,0 +1,13 @@+{-# LANGUAGE PatternSynonyms #-}++pattern Syn :: Typ++pattern Syn :: () => () => Typ++pattern Syn :: Show a => Show b => Typ++pattern Syn :: Show b => Typ++pattern Syn :: Show b => () => Typ++pattern Syn :: () => Show b => Typ
+ tests/examples/PatternSynonyms.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE PatternSynonyms #-}++pattern A = Nothing++pattern B a = Just a++pattern a :+: b = (a,b)++pattern Tuple a b = (a,b)++pattern    A = Nothing++pattern B a    = Just a++pattern a :+: b =     (a,b)+
+ tests/examples/PatternSynonyms.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms.hs.parser.golden view
@@ -0,0 +1,575 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/PatternSynonyms.hs" 1 1 17 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PatternSynonyms.hs" 1 1 1 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 5 1 5 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 7 1 7 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 9 1 9 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 11 1 11 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 13 1 13 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 15 1 15 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 17 1 17 1+            , SrcSpan "tests/examples/PatternSynonyms.hs" 17 1 17 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms.hs" 1 1 1 13+                , SrcSpan "tests/examples/PatternSynonyms.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      ]+      []+      [ PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 20+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 8+                , SrcSpan "tests/examples/PatternSynonyms.hs" 3 11 3 12+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 3 9 3 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 3 9 3 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 3 9 3 10+                     , srcInfoPoints = []+                     }+                   "A"))+             [])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 3 13 3 20+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 3 13 3 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 3 13 3 20+                     , srcInfoPoints = []+                     }+                   "Nothing"))+             [])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms.hs" 5 1 5 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms.hs" 5 1 5 8+                , SrcSpan "tests/examples/PatternSynonyms.hs" 5 13 5 14+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 5 9 5 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 5 9 5 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 5 9 5 10+                     , srcInfoPoints = []+                     }+                   "B"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 5 11 5 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 5 11 5 12+                      , srcInfoPoints = []+                      }+                    "a")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 5 15 5 21+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 5 15 5 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 5 15 5 19+                     , srcInfoPoints = []+                     }+                   "Just"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 5 20 5 21+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 5 20 5 21+                      , srcInfoPoints = []+                      }+                    "a")+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms.hs" 7 1 7 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms.hs" 7 1 7 8+                , SrcSpan "tests/examples/PatternSynonyms.hs" 7 17 7 18+                ]+            }+          (PInfixApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 7 9 7 16+               , srcInfoPoints = []+               }+             (PVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 7 9 7 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 7 9 7 10+                     , srcInfoPoints = []+                     }+                   "a"))+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 7 11 7 14+                  , srcInfoPoints = []+                  }+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 7 11 7 14+                     , srcInfoPoints = []+                     }+                   ":+:"))+             (PVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 7 15 7 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 7 15 7 16+                     , srcInfoPoints = []+                     }+                   "b")))+          (PTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 7 19 7 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms.hs" 7 19 7 20+                   , SrcSpan "tests/examples/PatternSynonyms.hs" 7 21 7 22+                   , SrcSpan "tests/examples/PatternSynonyms.hs" 7 23 7 24+                   ]+               }+             Boxed+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 7 20 7 21+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 7 20 7 21+                      , srcInfoPoints = []+                      }+                    "a")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 7 22 7 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 7 22 7 23+                      , srcInfoPoints = []+                      }+                    "b")+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms.hs" 9 1 9 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms.hs" 9 1 9 8+                , SrcSpan "tests/examples/PatternSynonyms.hs" 9 19 9 20+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 9 9 9 18+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 9 9 9 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 9 9 9 14+                     , srcInfoPoints = []+                     }+                   "Tuple"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 9 15 9 16+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 9 15 9 16+                      , srcInfoPoints = []+                      }+                    "a")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 9 17 9 18+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 9 17 9 18+                      , srcInfoPoints = []+                      }+                    "b")+             ])+          (PTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 9 21 9 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms.hs" 9 21 9 22+                   , SrcSpan "tests/examples/PatternSynonyms.hs" 9 23 9 24+                   , SrcSpan "tests/examples/PatternSynonyms.hs" 9 25 9 26+                   ]+               }+             Boxed+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 9 22 9 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 9 22 9 23+                      , srcInfoPoints = []+                      }+                    "a")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 9 24 9 25+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 9 24 9 25+                      , srcInfoPoints = []+                      }+                    "b")+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms.hs" 11 1 11 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms.hs" 11 1 11 8+                , SrcSpan "tests/examples/PatternSynonyms.hs" 11 14 11 15+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 11 12 11 13+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 11 12 11 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 11 12 11 13+                     , srcInfoPoints = []+                     }+                   "A"))+             [])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 11 16 11 23+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 11 16 11 23+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 11 16 11 23+                     , srcInfoPoints = []+                     }+                   "Nothing"))+             [])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms.hs" 13 1 13 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms.hs" 13 1 13 8+                , SrcSpan "tests/examples/PatternSynonyms.hs" 13 16 13 17+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 13 9 13 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 13 9 13 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 13 9 13 10+                     , srcInfoPoints = []+                     }+                   "B"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 13 11 13 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 13 11 13 12+                      , srcInfoPoints = []+                      }+                    "a")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 13 18 13 24+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 13 18 13 22+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 13 18 13 22+                     , srcInfoPoints = []+                     }+                   "Just"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 13 23 13 24+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 13 23 13 24+                      , srcInfoPoints = []+                      }+                    "a")+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms.hs" 15 1 15 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms.hs" 15 1 15 8+                , SrcSpan "tests/examples/PatternSynonyms.hs" 15 17 15 18+                ]+            }+          (PInfixApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 15 9 15 16+               , srcInfoPoints = []+               }+             (PVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 15 9 15 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 15 9 15 10+                     , srcInfoPoints = []+                     }+                   "a"))+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 15 11 15 14+                  , srcInfoPoints = []+                  }+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 15 11 15 14+                     , srcInfoPoints = []+                     }+                   ":+:"))+             (PVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms.hs" 15 15 15 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms.hs" 15 15 15 16+                     , srcInfoPoints = []+                     }+                   "b")))+          (PTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms.hs" 15 23 15 28+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms.hs" 15 23 15 24+                   , SrcSpan "tests/examples/PatternSynonyms.hs" 15 25 15 26+                   , SrcSpan "tests/examples/PatternSynonyms.hs" 15 27 15 28+                   ]+               }+             Boxed+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 15 24 15 25+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 15 24 15 25+                      , srcInfoPoints = []+                      }+                    "a")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms.hs" 15 26 15 27+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms.hs" 15 26 15 27+                      , srcInfoPoints = []+                      }+                    "b")+             ])+          ImplicitBidirectional+      ]+  , []+  )
+ tests/examples/PatternSynonyms.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms.hs.prettyprinter.golden view
@@ -0,0 +1,15 @@+{-# LANGUAGE PatternSynonyms #-}++pattern A = Nothing++pattern B a = Just a++pattern a :+: b = (a, b)++pattern Tuple a b = (a, b)++pattern A = Nothing++pattern B a = Just a++pattern a :+: b = (a, b)
+ tests/examples/PatternSynonyms2.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE PatternSynonyms, ScopedTypeVariables, KindSignatures  #-}+module Foo (pattern Single) where++++pattern Single x <- [x]+  where Single 4 = [x]+        Single 5 = [x]++pattern Double x = [x]++++++single :: [a] -> Maybe a+single (Single x) = Just x+single _ = Nothing
+ tests/examples/PatternSynonyms2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms2.hs.parser.golden view
@@ -0,0 +1,664 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/PatternSynonyms2.hs" 1 1 19 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PatternSynonyms2.hs" 1 1 1 1+            , SrcSpan "tests/examples/PatternSynonyms2.hs" 2 1 2 1+            , SrcSpan "tests/examples/PatternSynonyms2.hs" 2 1 2 1+            , SrcSpan "tests/examples/PatternSynonyms2.hs" 6 1 6 1+            , SrcSpan "tests/examples/PatternSynonyms2.hs" 10 1 10 1+            , SrcSpan "tests/examples/PatternSynonyms2.hs" 16 1 16 1+            , SrcSpan "tests/examples/PatternSynonyms2.hs" 17 1 17 1+            , SrcSpan "tests/examples/PatternSynonyms2.hs" 18 1 18 1+            , SrcSpan "tests/examples/PatternSynonyms2.hs" 19 1 19 1+            , SrcSpan "tests/examples/PatternSynonyms2.hs" 19 1 19 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/PatternSynonyms2.hs" 2 1 2 34+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 1 2 7+                  , SrcSpan "tests/examples/PatternSynonyms2.hs" 2 29 2 34+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/PatternSynonyms2.hs" 2 8 2 11+                 , srcInfoPoints = []+                 }+               "Foo")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PatternSynonyms2.hs" 2 12 2 28+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 12 2 13+                        , SrcSpan "tests/examples/PatternSynonyms2.hs" 2 27 2 28+                        ]+                    }+                  [ EAbs+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms2.hs" 2 13 2 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 13 2 20 ]+                        }+                      (PatternNamespace+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms2.hs" 2 13 2 20+                           , srcInfoPoints = []+                           })+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms2.hs" 2 21 2 27+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms2.hs" 2 21 2 27+                              , srcInfoPoints = []+                              }+                            "Single"))+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms2.hs" 1 1 1 71+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms2.hs" 1 1 1 13+                , SrcSpan "tests/examples/PatternSynonyms2.hs" 1 29 1 30+                , SrcSpan "tests/examples/PatternSynonyms2.hs" 1 50 1 51+                , SrcSpan "tests/examples/PatternSynonyms2.hs" 1 68 1 71+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms2.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms2.hs" 1 31 1 50+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms2.hs" 1 52 1 66+                , srcInfoPoints = []+                }+              "KindSignatures"+          ]+      ]+      []+      [ PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms2.hs" 6 1 6 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 1 6 8+                , SrcSpan "tests/examples/PatternSynonyms2.hs" 6 18 6 20+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms2.hs" 6 9 6 17+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms2.hs" 6 9 6 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms2.hs" 6 9 6 15+                     , srcInfoPoints = []+                     }+                   "Single"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 6 16 6 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 6 16 6 17+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms2.hs" 6 21 6 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 21 6 22+                   , SrcSpan "tests/examples/PatternSynonyms2.hs" 6 23 6 24+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 6 22 6 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 6 22 6 23+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (ExplicitBidirectional+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms2.hs" 7 3 10 0+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 3 7 8+                   , SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 9+                   , SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 9+                   , SrcSpan "tests/examples/PatternSynonyms2.hs" 10 1 10 0+                   ]+               }+             [ PatBind+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 23+                   , srcInfoPoints = []+                   }+                 (PApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 17+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 15+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 15+                            , srcInfoPoints = []+                            }+                          "Single"))+                    [ PLit+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms2.hs" 7 16 7 17+                          , srcInfoPoints = []+                          }+                        (Signless+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms2.hs" 7 16 7 17+                             , srcInfoPoints = []+                             })+                        (Int+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms2.hs" 7 16 7 17+                             , srcInfoPoints = []+                             }+                           4+                           "4")+                    ])+                 (UnGuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 7 18 7 23+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 18 7 19 ]+                      }+                    (List+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms2.hs" 7 20 7 23+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 20 7 21+                             , SrcSpan "tests/examples/PatternSynonyms2.hs" 7 22 7 23+                             ]+                         }+                       [ Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms2.hs" 7 21 7 22+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PatternSynonyms2.hs" 7 21 7 22+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PatternSynonyms2.hs" 7 21 7 22+                                   , srcInfoPoints = []+                                   }+                                 "x"))+                       ]))+                 Nothing+             , PatBind+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 23+                   , srcInfoPoints = []+                   }+                 (PApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 17+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 15+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 15+                            , srcInfoPoints = []+                            }+                          "Single"))+                    [ PLit+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms2.hs" 8 16 8 17+                          , srcInfoPoints = []+                          }+                        (Signless+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms2.hs" 8 16 8 17+                             , srcInfoPoints = []+                             })+                        (Int+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms2.hs" 8 16 8 17+                             , srcInfoPoints = []+                             }+                           5+                           "5")+                    ])+                 (UnGuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 8 18 8 23+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 18 8 19 ]+                      }+                    (List+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms2.hs" 8 20 8 23+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 20 8 21+                             , SrcSpan "tests/examples/PatternSynonyms2.hs" 8 22 8 23+                             ]+                         }+                       [ Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms2.hs" 8 21 8 22+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PatternSynonyms2.hs" 8 21 8 22+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PatternSynonyms2.hs" 8 21 8 22+                                   , srcInfoPoints = []+                                   }+                                 "x"))+                       ]))+                 Nothing+             ])+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms2.hs" 10 1 10 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 1 10 8+                , SrcSpan "tests/examples/PatternSynonyms2.hs" 10 18 10 19+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms2.hs" 10 9 10 17+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms2.hs" 10 9 10 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms2.hs" 10 9 10 15+                     , srcInfoPoints = []+                     }+                   "Double"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 10 16 10 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 10 16 10 17+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms2.hs" 10 20 10 23+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 20 10 21+                   , SrcSpan "tests/examples/PatternSynonyms2.hs" 10 22 10 23+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 10 21 10 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 10 21 10 22+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          ImplicitBidirectional+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms2.hs" 16 1 16 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 8 16 10 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms2.hs" 16 1 16 7+                , srcInfoPoints = []+                }+              "single"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms2.hs" 16 11 16 25+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 15 16 17 ]+               }+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms2.hs" 16 11 16 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 11 16 12+                      , SrcSpan "tests/examples/PatternSynonyms2.hs" 16 13 16 14+                      ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms2.hs" 16 12 16 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms2.hs" 16 12 16 13+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms2.hs" 16 18 16 25+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms2.hs" 16 18 16 23+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms2.hs" 16 18 16 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms2.hs" 16 18 16 23+                           , srcInfoPoints = []+                           }+                         "Maybe")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms2.hs" 16 24 16 25+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms2.hs" 16 24 16 25+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms2.hs" 17 1 18 19+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms2.hs" 17 1 17 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 17 1 17 7+                   , srcInfoPoints = []+                   }+                 "single")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PatternSynonyms2.hs" 17 8 17 18+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 8 17 9+                        , SrcSpan "tests/examples/PatternSynonyms2.hs" 17 17 17 18+                        ]+                    }+                  (PApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PatternSynonyms2.hs" 17 9 17 17+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms2.hs" 17 9 17 15+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms2.hs" 17 9 17 15+                             , srcInfoPoints = []+                             }+                           "Single"))+                     [ PVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms2.hs" 17 16 17 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms2.hs" 17 16 17 17+                              , srcInfoPoints = []+                              }+                            "x")+                     ])+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 17 19 17 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 19 17 20 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 17 21 17 27+                      , srcInfoPoints = []+                      }+                    (Con+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms2.hs" 17 21 17 25+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms2.hs" 17 21 17 25+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms2.hs" 17 21 17 25+                               , srcInfoPoints = []+                               }+                             "Just")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms2.hs" 17 26 17 27+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms2.hs" 17 26 17 27+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms2.hs" 17 26 17 27+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms2.hs" 18 1 18 19+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 18 1 18 7+                   , srcInfoPoints = []+                   }+                 "single")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PatternSynonyms2.hs" 18 8 18 9+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms2.hs" 18 10 18 19+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms2.hs" 18 10 18 11 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms2.hs" 18 12 18 19+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms2.hs" 18 12 18 19+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms2.hs" 18 12 18 19+                            , srcInfoPoints = []+                            }+                          "Nothing"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/PatternSynonyms2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms2.hs.prettyprinter.golden view
@@ -0,0 +1,13 @@+{-# LANGUAGE PatternSynonyms, ScopedTypeVariables, KindSignatures+  #-}+module Foo (pattern Single) where++pattern Single x <- [x]+  where Single 4 = [x]+        Single 5 = [x]++pattern Double x = [x]++single :: [a] -> Maybe a+single (Single x) = Just x+single _ = Nothing
+ tests/examples/PatternSynonyms3.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE PatternSynonyms, BangPatterns, PolyKinds, DataKinds, GADTs,+ FlexibleContexts, ViewPatterns #-}+{-# LANGUAGE ExplicitForAll #-}++pattern Single x <- [x]+++single :: [a] -> Maybe a+single (Single x) = Just x+single _ = Nothing++pattern Single :: a -> [a]+pattern Single x = [x]+++pattern Single :: () => (Show a) => a -> [a]+pattern Single x = [x]++f :: (Show a) => [a] -> a+f (Single x) = x++pattern SinglePair :: (a, a) -> [(a, a)]+pattern SinglePair x = [x]++f :: (Show a) => [(a, a)] -> String+f (SinglePair x) = show x++pattern Q = D++pattern C :: a -> X Maybe (Maybe a)+pattern C x = Y (Just x)+++pattern Syn :: forall a b c    . () => () => Int++pattern C :: (Show (a, Bool)) => a -> X Maybe (Maybe (a, Bool))+pattern C x = Y (Just (x, True))++pattern P :: T Bool b+pattern P <- MkT True++pattern D :: a -> T (Maybe a) Bool+pattern D x = MkT (Just x)+++pattern P a b = Just (a, b)++pattern Single x = [x]++pattern a :+: b = (a, b)+++pattern P x <- MkT 42 x+++pattern P x y <- MkT x y++pattern P x <- MkT (f -> True) x++data T where+    MkT :: b -> (b -> Bool) -> T++pattern P x f <- MkT x f++pattern Single x <- [x]++pattern P <- Just True++pattern P = 42+++pattern P = ()+++pattern Single x <- [x]+
+ tests/examples/PatternSynonyms3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms3.hs.parser.golden view
@@ -0,0 +1,3805 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/PatternSynonyms3.hs" 1 1 77 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 1 1 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 3 1 3 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 8 1 8 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 9 1 9 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 10 1 10 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 12 1 12 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 13 1 13 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 1 16 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 17 1 17 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 1 19 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 20 1 20 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 1 22 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 23 1 23 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 1 25 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 26 1 26 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 28 1 28 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 30 1 30 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 31 1 31 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 1 34 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 1 36 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 1 37 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 39 1 39 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 40 1 40 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 42 1 42 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 43 1 43 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 46 1 46 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 48 1 48 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 50 1 50 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 53 1 53 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 56 1 56 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 58 1 58 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 60 1 60 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 63 1 63 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 65 1 65 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 67 1 67 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 69 1 69 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 1 72 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 75 1 75 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 77 1 77 1+            , SrcSpan "tests/examples/PatternSynonyms3.hs" 77 1 77 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 1 1 2 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 1 1 13+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 29 1 30+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 43 1 44+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 54 1 55+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 65 1 66+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 72 1 73+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 2 18 2 19+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 2 33 2 36+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 1 31 1 43+                , srcInfoPoints = []+                }+              "BangPatterns"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 1 45 1 54+                , srcInfoPoints = []+                }+              "PolyKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 1 56 1 65+                , srcInfoPoints = []+                }+              "DataKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 1 67 1 72+                , srcInfoPoints = []+                }+              "GADTs"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 2 2 2 18+                , srcInfoPoints = []+                }+              "FlexibleContexts"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 2 20 2 32+                , srcInfoPoints = []+                }+              "ViewPatterns"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 3 1 3 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 3 1 3 13+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 3 29 3 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 3 14 3 28+                , srcInfoPoints = []+                }+              "ExplicitForAll"+          ]+      ]+      []+      [ PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 18 5 20+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 5 9 5 17+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 5 9 5 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 5 9 5 15+                     , srcInfoPoints = []+                     }+                   "Single"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 5 16 5 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 5 16 5 17+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 5 21 5 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 21 5 22+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 23 5 24+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 5 22 5 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 5 22 5 23+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          Unidirectional+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 8 1 8 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 8 8 10 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 8 1 8 7+                , srcInfoPoints = []+                }+              "single"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 8 11 8 25+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 15 8 17 ]+               }+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 8 11 8 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 11 8 12+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 8 13 8 14+                      ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 8 12 8 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 8 12 8 13+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 8 18 8 25+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 8 18 8 23+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 8 18 8 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 8 18 8 23+                           , srcInfoPoints = []+                           }+                         "Maybe")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 8 24 8 25+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 8 24 8 25+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 9 1 10 19+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 9 1 9 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 9 1 9 7+                   , srcInfoPoints = []+                   }+                 "single")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PatternSynonyms3.hs" 9 8 9 18+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 8 9 9+                        , SrcSpan "tests/examples/PatternSynonyms3.hs" 9 17 9 18+                        ]+                    }+                  (PApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PatternSynonyms3.hs" 9 9 9 17+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms3.hs" 9 9 9 15+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms3.hs" 9 9 9 15+                             , srcInfoPoints = []+                             }+                           "Single"))+                     [ PVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 9 16 9 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 9 16 9 17+                              , srcInfoPoints = []+                              }+                            "x")+                     ])+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 9 19 9 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 19 9 20 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 9 21 9 27+                      , srcInfoPoints = []+                      }+                    (Con+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 9 21 9 25+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 9 21 9 25+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 9 21 9 25+                               , srcInfoPoints = []+                               }+                             "Just")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 9 26 9 27+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 9 26 9 27+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 9 26 9 27+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 10 1 10 19+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 10 1 10 7+                   , srcInfoPoints = []+                   }+                 "single")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PatternSynonyms3.hs" 10 8 10 9+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 10 10 10 19+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 10 10 10 11 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 10 12 10 19+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 10 12 10 19+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 10 12 10 19+                            , srcInfoPoints = []+                            }+                          "Nothing"))))+              Nothing+          ]+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 12 1 12 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 1 12 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 12 16 12 18+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 12 9 12 15+                , srcInfoPoints = []+                }+              "Single"+          ]+          Nothing+          Nothing+          Nothing+          Nothing+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 12 19 12 27+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 21 12 23 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 12 19 12 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 12 19 12 20+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 12 24 12 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 24 12 25+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 12 26 12 27+                      ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 12 25 12 26+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 12 25 12 26+                        , srcInfoPoints = []+                        }+                      "a"))))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 13 1 13 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 1 13 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 13 18 13 19+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 13 9 13 17+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 13 9 13 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 13 9 13 15+                     , srcInfoPoints = []+                     }+                   "Single"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 13 16 13 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 13 16 13 17+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 13 20 13 23+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 20 13 21+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 13 22 13 23+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 13 21 13 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 13 21 13 22+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          ImplicitBidirectional+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 16 1 16 45+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 1 16 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 16 16 18+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 16 9 16 15+                , srcInfoPoints = []+                }+              "Single"+          ]+          Nothing+          (Just+             (CxEmpty+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 16 19 16 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 19 16 20+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 20 16 21+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 22 16 24+                      ]+                  }))+          Nothing+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 16 25 16 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 25 16 26+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 32 16 33+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 34 16 36+                      ]+                  }+                (ParenA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 16 25 16 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 25 16 26+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 32 16 33+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 34 16 36+                         ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30+                                    , srcInfoPoints = []+                                    }+                                  "Show")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32+                                 , srcInfoPoints = []+                                 }+                               "a")))))))+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 16 37 16 45+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 39 16 41 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 16 37 16 38+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 16 37 16 38+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 16 42 16 45+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 42 16 43+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 44 16 45+                      ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 16 43 16 44+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 16 43 16 44+                        , srcInfoPoints = []+                        }+                      "a"))))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 17 1 17 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 1 17 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 17 18 17 19+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 17 9 17 17+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 17 9 17 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 17 9 17 15+                     , srcInfoPoints = []+                     }+                   "Single"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 17 16 17 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 17 16 17 17+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 17 20 17 23+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 20 17 21+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 17 22 17 23+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 17 21 17 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 17 21 17 22+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          ImplicitBidirectional+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 19 1 19 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 3 19 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 19 1 19 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 26+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 7+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 13 19 14+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 15 19 17+                         ]+                     }+                   (ParenA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 7+                            , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 13 19 14+                            , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 15 19 17+                            ]+                        }+                      (TypeA+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13+                           , srcInfoPoints = []+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11+                                       , srcInfoPoints = []+                                       }+                                     "Show")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13+                                    , srcInfoPoints = []+                                    }+                                  "a")))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 19 18 19 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 22 19 24 ]+                  }+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 19 18 19 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 18 19 19+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 20 19 21+                         ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 19 19 19 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 19 19 19 20+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 19 25 19 26+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 19 25 19 26+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 20 1 20 17+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 20 1 20 17+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 20 1 20 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PatternSynonyms3.hs" 20 3 20 13+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 3 20 4+                        , SrcSpan "tests/examples/PatternSynonyms3.hs" 20 12 20 13+                        ]+                    }+                  (PApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PatternSynonyms3.hs" 20 4 20 12+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms3.hs" 20 4 20 10+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms3.hs" 20 4 20 10+                             , srcInfoPoints = []+                             }+                           "Single"))+                     [ PVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 20 11 20 12+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 20 11 20 12+                              , srcInfoPoints = []+                              }+                            "x")+                     ])+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 20 14 20 17+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 14 20 15 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 20 16 20 17+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 20 16 20 17+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 20 16 20 17+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 22 1 22 41+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 1 22 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 20 22 22+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 22 9 22 19+                , srcInfoPoints = []+                }+              "SinglePair"+          ]+          Nothing+          Nothing+          Nothing+          Nothing+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 22 23 22 41+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 30 22 32 ]+               }+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 22 23 22 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 23 22 24+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 25 22 26+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 28 22 29+                      ]+                  }+                Boxed+                [ TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 22 24 22 25+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 22 24 22 25+                         , srcInfoPoints = []+                         }+                       "a")+                , TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 22 27 22 28+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 22 27 22 28+                         , srcInfoPoints = []+                         }+                       "a")+                ])+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 22 33 22 41+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 33 22 34+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 40 22 41+                      ]+                  }+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 22 34 22 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 34 22 35+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 36 22 37+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 39 22 40+                         ]+                     }+                   Boxed+                   [ TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 22 35 22 36+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 22 35 22 36+                            , srcInfoPoints = []+                            }+                          "a")+                   , TyVar+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 22 38 22 39+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 22 38 22 39+                            , srcInfoPoints = []+                            }+                          "a")+                   ])))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 23 1 23 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 1 23 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 23 22 23 23+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 23 9 23 21+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 23 9 23 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 23 9 23 19+                     , srcInfoPoints = []+                     }+                   "SinglePair"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 23 20 23 21+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 23 20 23 21+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 23 24 23 27+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 24 23 25+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 23 26 23 27+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 23 25 23 26+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 23 25 23 26+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          ImplicitBidirectional+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 25 1 25 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 3 25 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 25 1 25 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 36+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 7+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 13 25 14+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 15 25 17+                         ]+                     }+                   (ParenA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 7+                            , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 13 25 14+                            , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 15 25 17+                            ]+                        }+                      (TypeA+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13+                           , srcInfoPoints = []+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11+                                       , srcInfoPoints = []+                                       }+                                     "Show")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13+                                    , srcInfoPoints = []+                                    }+                                  "a")))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 25 18 25 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 27 25 29 ]+                  }+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 25 18 25 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 18 25 19+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 25 25 26+                         ]+                     }+                   (TyTuple+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 25 19 25 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 19 25 20+                            , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 21 25 22+                            , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 24 25 25+                            ]+                        }+                      Boxed+                      [ TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 25 20 25 21+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 25 20 25 21+                               , srcInfoPoints = []+                               }+                             "a")+                      , TyVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 25 23 25 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 25 23 25 24+                               , srcInfoPoints = []+                               }+                             "a")+                      ]))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 25 30 25 36+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 25 30 25 36+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 25 30 25 36+                           , srcInfoPoints = []+                           }+                         "String")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 26 1 26 26+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 26 1 26 26+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 26 1 26 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/PatternSynonyms3.hs" 26 3 26 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 3 26 4+                        , SrcSpan "tests/examples/PatternSynonyms3.hs" 26 16 26 17+                        ]+                    }+                  (PApp+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PatternSynonyms3.hs" 26 4 26 16+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms3.hs" 26 4 26 14+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms3.hs" 26 4 26 14+                             , srcInfoPoints = []+                             }+                           "SinglePair"))+                     [ PVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 26 15 26 16+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 26 15 26 16+                              , srcInfoPoints = []+                              }+                            "x")+                     ])+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 26 18 26 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 18 26 19 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 26 20 26 26+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 26 20 26 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 26 20 26 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 26 20 26 24+                               , srcInfoPoints = []+                               }+                             "show")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 26 25 26 26+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 26 25 26 26+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 26 25 26 26+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 28 1 28 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 28 1 28 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 28 11 28 12+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 28 9 28 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 28 9 28 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 28 9 28 10+                     , srcInfoPoints = []+                     }+                   "Q"))+             [])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 28 13 28 14+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 28 13 28 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 28 13 28 14+                     , srcInfoPoints = []+                     }+                   "D"))+             [])+          ImplicitBidirectional+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 30 1 30 36+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 1 30 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 30 11 30 13+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 30 9 30 10+                , srcInfoPoints = []+                }+              "C"+          ]+          Nothing+          Nothing+          Nothing+          Nothing+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 30 14 30 36+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 16 30 18 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 30 14 30 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 30 14 30 15+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 36+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 26+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 20+                              , srcInfoPoints = []+                              }+                            "X")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 30 21 30 26+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 30 21 30 26+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 30 21 30 26+                              , srcInfoPoints = []+                              }+                            "Maybe"))))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 30 27 30 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 27 30 28+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 30 35 30 36+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 30 28 30 35+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 30 28 30 33+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 30 28 30 33+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 30 28 30 33+                                 , srcInfoPoints = []+                                 }+                               "Maybe")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 30 34 30 35+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 30 34 30 35+                              , srcInfoPoints = []+                              }+                            "a"))))))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 31 1 31 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 1 31 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 31 13 31 14+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 31 9 31 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 31 9 31 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 31 9 31 10+                     , srcInfoPoints = []+                     }+                   "C"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 31 11 31 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 31 11 31 12+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 31 15 31 25+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 31 15 31 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 31 15 31 16+                     , srcInfoPoints = []+                     }+                   "Y"))+             [ PParen+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 31 17 31 25+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 17 31 18+                       , SrcSpan "tests/examples/PatternSynonyms3.hs" 31 24 31 25+                       ]+                   }+                 (PApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 31 18 31 24+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 31 18 31 22+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 31 18 31 22+                            , srcInfoPoints = []+                            }+                          "Just"))+                    [ PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms3.hs" 31 23 31 24+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms3.hs" 31 23 31 24+                             , srcInfoPoints = []+                             }+                           "x")+                    ])+             ])+          ImplicitBidirectional+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 34 1 34 49+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 1 34 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 13 34 15+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 16 34 22+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 32 34 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 34 9 34 12+                , srcInfoPoints = []+                }+              "Syn"+          ]+          (Just+             [ UnkindedVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 34 23 34 24+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 34 23 34 24+                      , srcInfoPoints = []+                      }+                    "a")+             , UnkindedVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 34 25 34 26+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 34 25 34 26+                      , srcInfoPoints = []+                      }+                    "b")+             , UnkindedVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 34 27 34 28+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 34 27 34 28+                      , srcInfoPoints = []+                      }+                    "c")+             ])+          (Just+             (CxEmpty+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 34 34 34 39+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 34 34 35+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 35 34 36+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 37 34 39+                      ]+                  }))+          Nothing+          (Just+             (CxEmpty+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 34 40 34 45+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 40 34 41+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 41 34 42+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 43 34 45+                      ]+                  }))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 34 46 34 49+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 34 46 34 49+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 34 46 34 49+                     , srcInfoPoints = []+                     }+                   "Int")))+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 36 1 36 64+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 1 36 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 11 36 13+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 36 9 36 10+                , srcInfoPoints = []+                }+              "C"+          ]+          Nothing+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 14 36 33+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 14 36 15+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 29 36 30+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 31 36 33+                      ]+                  }+                (ParenA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 14 36 33+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 14 36 15+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 29 36 30+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 31 36 33+                         ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19+                                    , srcInfoPoints = []+                                    }+                                  "Show")))+                         (TyTuple+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 29+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 21+                                  , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 22 36 23+                                  , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 28 36 29+                                  ]+                              }+                            Boxed+                            [ TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22+                                     , srcInfoPoints = []+                                     }+                                   "a")+                            , TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28+                                        , srcInfoPoints = []+                                        }+                                      "Bool"))+                            ]))))))+          Nothing+          Nothing+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 36 34 36 64+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 36 36 38 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 34 36 35+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 34 36 35+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 64+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 46+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 40+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 40+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 40+                              , srcInfoPoints = []+                              }+                            "X")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 36 41 36 46+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 36 41 36 46+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 41 36 46+                              , srcInfoPoints = []+                              }+                            "Maybe"))))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 47 36 64+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 47 36 48+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 63 36 64+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 36 48 36 63+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 36 48 36 53+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 48 36 53+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 36 48 36 53+                                 , srcInfoPoints = []+                                 }+                               "Maybe")))+                      (TyTuple+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 36 54 36 63+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 54 36 55+                               , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 56 36 57+                               , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 62 36 63+                               ]+                           }+                         Boxed+                         [ TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 36 55 36 56+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 55 36 56+                                  , srcInfoPoints = []+                                  }+                                "a")+                         , TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 36 58 36 62+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 58 36 62+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 58 36 62+                                     , srcInfoPoints = []+                                     }+                                   "Bool"))+                         ])))))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 37 1 37 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 1 37 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 13 37 14+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 37 9 37 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 37 9 37 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 37 9 37 10+                     , srcInfoPoints = []+                     }+                   "C"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 37 11 37 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 37 11 37 12+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 37 15 37 33+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 37 15 37 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 37 15 37 16+                     , srcInfoPoints = []+                     }+                   "Y"))+             [ PParen+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 37 17 37 33+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 17 37 18+                       , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 32 37 33+                       ]+                   }+                 (PApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 37 18 37 32+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 37 18 37 22+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 37 18 37 22+                            , srcInfoPoints = []+                            }+                          "Just"))+                    [ PTuple+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms3.hs" 37 23 37 32+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 23 37 24+                              , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 25 37 26+                              , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 31 37 32+                              ]+                          }+                        Boxed+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 37 24 37 25+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 37 24 37 25+                                 , srcInfoPoints = []+                                 }+                               "x")+                        , PApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 37 27 37 31+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 37 27 37 31+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 37 27 37 31+                                    , srcInfoPoints = []+                                    }+                                  "True"))+                            []+                        ]+                    ])+             ])+          ImplicitBidirectional+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 39 1 39 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 1 39 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 39 11 39 13+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 39 9 39 10+                , srcInfoPoints = []+                }+              "P"+          ]+          Nothing+          Nothing+          Nothing+          Nothing+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 22+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 20+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 15+                           , srcInfoPoints = []+                           }+                         "T")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 39 16 39 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 39 16 39 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 39 16 39 20+                           , srcInfoPoints = []+                           }+                         "Bool"))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 39 21 39 22+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 39 21 39 22+                     , srcInfoPoints = []+                     }+                   "b")))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 40 1 40 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 1 40 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 40 11 40 13+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 40 9 40 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 40 9 40 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 40 9 40 10+                     , srcInfoPoints = []+                     }+                   "P"))+             [])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 40 14 40 22+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 40 14 40 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 40 14 40 17+                     , srcInfoPoints = []+                     }+                   "MkT"))+             [ PApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 40 18 40 22+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 40 18 40 22+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 40 18 40 22+                         , srcInfoPoints = []+                         }+                       "True"))+                 []+             ])+          Unidirectional+      , PatSynSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 42 1 42 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 1 42 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 42 11 42 13+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 42 9 42 10+                , srcInfoPoints = []+                }+              "D"+          ]+          Nothing+          Nothing+          Nothing+          Nothing+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 42 14 42 35+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 16 42 18 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 42 14 42 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 42 14 42 15+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 35+                  , srcInfoPoints = []+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 30+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 20+                              , srcInfoPoints = []+                              }+                            "T")))+                   (TyParen+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 42 21 42 30+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 21 42 22+                            , SrcSpan "tests/examples/PatternSynonyms3.hs" 42 29 42 30+                            ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 42 22 42 29+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 42 22 42 27+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 42 22 42 27+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 42 22 42 27+                                    , srcInfoPoints = []+                                    }+                                  "Maybe")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 42 28 42 29+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 42 28 42 29+                                 , srcInfoPoints = []+                                 }+                               "a")))))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 42 31 42 35+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PatternSynonyms3.hs" 42 31 42 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 42 31 42 35+                           , srcInfoPoints = []+                           }+                         "Bool")))))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 43 1 43 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 1 43 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 43 13 43 14+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 43 9 43 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 43 9 43 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 43 9 43 10+                     , srcInfoPoints = []+                     }+                   "D"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 43 11 43 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 43 11 43 12+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 43 15 43 27+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 43 15 43 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 43 15 43 18+                     , srcInfoPoints = []+                     }+                   "MkT"))+             [ PParen+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 43 19 43 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 19 43 20+                       , SrcSpan "tests/examples/PatternSynonyms3.hs" 43 26 43 27+                       ]+                   }+                 (PApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 43 20 43 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 43 20 43 24+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 43 20 43 24+                            , srcInfoPoints = []+                            }+                          "Just"))+                    [ PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms3.hs" 43 25 43 26+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PatternSynonyms3.hs" 43 25 43 26+                             , srcInfoPoints = []+                             }+                           "x")+                    ])+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 46 1 46 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 1 46 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 46 15 46 16+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 46 9 46 14+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 46 9 46 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 46 9 46 10+                     , srcInfoPoints = []+                     }+                   "P"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 46 11 46 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 46 11 46 12+                      , srcInfoPoints = []+                      }+                    "a")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 46 13 46 14+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 46 13 46 14+                      , srcInfoPoints = []+                      }+                    "b")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 46 17 46 28+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 46 17 46 21+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 46 17 46 21+                     , srcInfoPoints = []+                     }+                   "Just"))+             [ PTuple+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 46 22 46 28+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 22 46 23+                       , SrcSpan "tests/examples/PatternSynonyms3.hs" 46 24 46 25+                       , SrcSpan "tests/examples/PatternSynonyms3.hs" 46 27 46 28+                       ]+                   }+                 Boxed+                 [ PVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PatternSynonyms3.hs" 46 23 46 24+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms3.hs" 46 23 46 24+                          , srcInfoPoints = []+                          }+                        "a")+                 , PVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/PatternSynonyms3.hs" 46 26 46 27+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/PatternSynonyms3.hs" 46 26 46 27+                          , srcInfoPoints = []+                          }+                        "b")+                 ]+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 48 1 48 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 1 48 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 48 18 48 19+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 48 9 48 17+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 48 9 48 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 48 9 48 15+                     , srcInfoPoints = []+                     }+                   "Single"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 48 16 48 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 48 16 48 17+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 48 20 48 23+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 20 48 21+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 48 22 48 23+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 48 21 48 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 48 21 48 22+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 50 1 50 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 1 50 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 50 17 50 18+                ]+            }+          (PInfixApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 50 9 50 16+               , srcInfoPoints = []+               }+             (PVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 50 9 50 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 50 9 50 10+                     , srcInfoPoints = []+                     }+                   "a"))+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 50 11 50 14+                  , srcInfoPoints = []+                  }+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 50 11 50 14+                     , srcInfoPoints = []+                     }+                   ":+:"))+             (PVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 50 15 50 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 50 15 50 16+                     , srcInfoPoints = []+                     }+                   "b")))+          (PTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 50 19 50 25+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 19 50 20+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 50 21 50 22+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 50 24 50 25+                   ]+               }+             Boxed+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 50 20 50 21+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 50 20 50 21+                      , srcInfoPoints = []+                      }+                    "a")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 50 23 50 24+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 50 23 50 24+                      , srcInfoPoints = []+                      }+                    "b")+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 53 1 53 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 1 53 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 53 13 53 15+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 53 9 53 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 53 9 53 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 53 9 53 10+                     , srcInfoPoints = []+                     }+                   "P"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 53 11 53 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 53 11 53 12+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 53 16 53 24+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 53 16 53 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 53 16 53 19+                     , srcInfoPoints = []+                     }+                   "MkT"))+             [ PLit+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 53 20 53 22+                   , srcInfoPoints = []+                   }+                 (Signless+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 53 20 53 22+                      , srcInfoPoints = []+                      })+                 (Int+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 53 20 53 22+                      , srcInfoPoints = []+                      }+                    42+                    "42")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 53 23 53 24+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 53 23 53 24+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          Unidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 56 1 56 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 1 56 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 56 15 56 17+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 56 9 56 14+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 56 9 56 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 56 9 56 10+                     , srcInfoPoints = []+                     }+                   "P"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 56 11 56 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 56 11 56 12+                      , srcInfoPoints = []+                      }+                    "x")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 56 13 56 14+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 56 13 56 14+                      , srcInfoPoints = []+                      }+                    "y")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 56 18 56 25+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 56 18 56 21+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 56 18 56 21+                     , srcInfoPoints = []+                     }+                   "MkT"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 56 22 56 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 56 22 56 23+                      , srcInfoPoints = []+                      }+                    "x")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 56 24 56 25+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 56 24 56 25+                      , srcInfoPoints = []+                      }+                    "y")+             ])+          Unidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 58 1 58 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 1 58 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 58 13 58 15+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 58 9 58 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 58 9 58 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 58 9 58 10+                     , srcInfoPoints = []+                     }+                   "P"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 58 11 58 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 58 11 58 12+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 58 16 58 33+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 58 16 58 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 58 16 58 19+                     , srcInfoPoints = []+                     }+                   "MkT"))+             [ PParen+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 58 20 58 31+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 20 58 21+                       , SrcSpan "tests/examples/PatternSynonyms3.hs" 58 30 58 31+                       ]+                   }+                 (PViewPat+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 58 21 58 30+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 23 58 25 ]+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 58 21 58 22+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 58 21 58 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 58 21 58 22+                               , srcInfoPoints = []+                               }+                             "f")))+                    (PApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 58 26 58 30+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 58 26 58 30+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 58 26 58 30+                               , srcInfoPoints = []+                               }+                             "True"))+                       []))+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 58 32 58 33+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 58 32 58 33+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          Unidirectional+      , GDataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 60 1 63 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 60 8 60 13+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 61 5 61 5+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 63 1 63 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 60 1 60 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 60 6 60 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 60 6 60 7+                  , srcInfoPoints = []+                  }+                "T"))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PatternSynonyms3.hs" 61 5 61 33+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 9 61 11 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 61 5 61 8+                   , srcInfoPoints = []+                   }+                 "MkT")+              Nothing+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 61 12 61 33+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 14 61 16 ]+                   }+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 61 12 61 13+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 61 12 61 13+                         , srcInfoPoints = []+                         }+                       "b"))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 61 17 61 33+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 29 61 31 ]+                      }+                    (TyParen+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 61 17 61 28+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 17 61 18+                             , SrcSpan "tests/examples/PatternSynonyms3.hs" 61 27 61 28+                             ]+                         }+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 61 18 61 27+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 20 61 22 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 61 18 61 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 61 18 61 19+                                  , srcInfoPoints = []+                                  }+                                "b"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 61 23 61 27+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 61 23 61 27+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/PatternSynonyms3.hs" 61 23 61 27+                                     , srcInfoPoints = []+                                     }+                                   "Bool")))))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 61 32 61 33+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PatternSynonyms3.hs" 61 32 61 33+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 61 32 61 33+                               , srcInfoPoints = []+                               }+                             "T")))))+          ]+          []+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 63 1 63 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 1 63 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 63 15 63 17+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 63 9 63 14+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 63 9 63 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 63 9 63 10+                     , srcInfoPoints = []+                     }+                   "P"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 63 11 63 12+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 63 11 63 12+                      , srcInfoPoints = []+                      }+                    "x")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 63 13 63 14+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 63 13 63 14+                      , srcInfoPoints = []+                      }+                    "f")+             ])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 63 18 63 25+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 63 18 63 21+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 63 18 63 21+                     , srcInfoPoints = []+                     }+                   "MkT"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 63 22 63 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 63 22 63 23+                      , srcInfoPoints = []+                      }+                    "x")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 63 24 63 25+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 63 24 63 25+                      , srcInfoPoints = []+                      }+                    "f")+             ])+          Unidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 65 1 65 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 1 65 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 65 18 65 20+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 65 9 65 17+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 65 9 65 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 65 9 65 15+                     , srcInfoPoints = []+                     }+                   "Single"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 65 16 65 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 65 16 65 17+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 65 21 65 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 21 65 22+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 65 23 65 24+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 65 22 65 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 65 22 65 23+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          Unidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 67 1 67 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 1 67 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 67 11 67 13+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 67 9 67 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 67 9 67 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 67 9 67 10+                     , srcInfoPoints = []+                     }+                   "P"))+             [])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 67 14 67 23+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 67 14 67 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 67 14 67 18+                     , srcInfoPoints = []+                     }+                   "Just"))+             [ PApp+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 67 19 67 23+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 67 19 67 23+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PatternSynonyms3.hs" 67 19 67 23+                         , srcInfoPoints = []+                         }+                       "True"))+                 []+             ])+          Unidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 69 1 69 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 69 1 69 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 69 11 69 12+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 69 9 69 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 69 9 69 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 69 9 69 10+                     , srcInfoPoints = []+                     }+                   "P"))+             [])+          (PLit+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 69 13 69 15+               , srcInfoPoints = []+               }+             (Signless+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 69 13 69 15+                  , srcInfoPoints = []+                  })+             (Int+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 69 13 69 15+                  , srcInfoPoints = []+                  }+                42+                "42"))+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 72 1 72 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 1 72 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 11 72 12+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 72 9 72 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 72 9 72 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 72 9 72 10+                     , srcInfoPoints = []+                     }+                   "P"))+             [])+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 15+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 14+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 14 72 15+                   ]+               }+             (Special+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 15+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 14+                      , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 14 72 15+                      ]+                  }+                (UnitCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 15+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 14+                         , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 14 72 15+                         ]+                     }))+             [])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PatternSynonyms3.hs" 75 1 75 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 1 75 8+                , SrcSpan "tests/examples/PatternSynonyms3.hs" 75 18 75 20+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 75 9 75 17+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PatternSynonyms3.hs" 75 9 75 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PatternSynonyms3.hs" 75 9 75 15+                     , srcInfoPoints = []+                     }+                   "Single"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 75 16 75 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 75 16 75 17+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PatternSynonyms3.hs" 75 21 75 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 21 75 22+                   , SrcSpan "tests/examples/PatternSynonyms3.hs" 75 23 75 24+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/PatternSynonyms3.hs" 75 22 75 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PatternSynonyms3.hs" 75 22 75 23+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          Unidirectional+      ]+  , []+  )
+ tests/examples/PatternSynonyms3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms3.hs.prettyprinter.golden view
@@ -0,0 +1,74 @@+{-# LANGUAGE PatternSynonyms, BangPatterns, PolyKinds, DataKinds,+  GADTs, FlexibleContexts, ViewPatterns #-}+{-# LANGUAGE ExplicitForAll #-}++pattern Single x <- [x]++single :: [a] -> Maybe a+single (Single x) = Just x+single _ = Nothing++pattern Single :: a -> [a]++pattern Single x = [x]++pattern Single :: () => (Show a) => a -> [a]++pattern Single x = [x]++f :: (Show a) => [a] -> a+f (Single x) = x++pattern SinglePair :: (a, a) -> [(a, a)]++pattern SinglePair x = [x]++f :: (Show a) => [(a, a)] -> String+f (SinglePair x) = show x++pattern Q = D++pattern C :: a -> X Maybe (Maybe a)++pattern C x = Y (Just x)++pattern Syn :: forall a b c . () => () => Int++pattern C :: (Show (a, Bool)) => a -> X Maybe (Maybe (a, Bool))++pattern C x = Y (Just (x, True))++pattern P :: T Bool b++pattern P <- MkT True++pattern D :: a -> T (Maybe a) Bool++pattern D x = MkT (Just x)++pattern P a b = Just (a, b)++pattern Single x = [x]++pattern a :+: b = (a, b)++pattern P x <- MkT 42 x++pattern P x y <- MkT x y++pattern P x <- MkT (f -> True) x++data T where+        MkT :: b -> (b -> Bool) -> T++pattern P x f <- MkT x f++pattern Single x <- [x]++pattern P <- Just True++pattern P = 42++pattern P = ()++pattern Single x <- [x]
+ tests/examples/PolyKindSigs.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE GADTs          #-}+--{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE PolyKinds      #-}++module Test where++data Foo :: * -> * where+  Foo :: Foo a
+ tests/examples/PolyKindSigs.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PolyKindSigs.hs.parser.golden view
@@ -0,0 +1,163 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PolyKindSigs.hs" 1 1 1 1+            , SrcSpan "tests/examples/PolyKindSigs.hs" 3 1 3 1+            , SrcSpan "tests/examples/PolyKindSigs.hs" 5 1 5 1+            , SrcSpan "tests/examples/PolyKindSigs.hs" 5 1 5 1+            , SrcSpan "tests/examples/PolyKindSigs.hs" 7 1 7 1+            , SrcSpan "tests/examples/PolyKindSigs.hs" 9 1 9 1+            , SrcSpan "tests/examples/PolyKindSigs.hs" 9 1 9 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 5 1 5 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/PolyKindSigs.hs" 5 1 5 7+                  , SrcSpan "tests/examples/PolyKindSigs.hs" 5 13 5 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 5 8 5 12+                 , srcInfoPoints = []+                 }+               "Test")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PolyKindSigs.hs" 1 1 1 13+                , SrcSpan "tests/examples/PolyKindSigs.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 1 14 1 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 3 1 3 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PolyKindSigs.hs" 3 1 3 13+                , SrcSpan "tests/examples/PolyKindSigs.hs" 3 29 3 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 3 14 3 23+                , srcInfoPoints = []+                }+              "PolyKinds"+          ]+      ]+      []+      [ GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 1 9 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PolyKindSigs.hs" 7 10 7 12+                , SrcSpan "tests/examples/PolyKindSigs.hs" 7 20 7 25+                , SrcSpan "tests/examples/PolyKindSigs.hs" 8 3 8 3+                , SrcSpan "tests/examples/PolyKindSigs.hs" 9 1 9 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 1 7 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 6 7 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 6 7 9+                  , srcInfoPoints = []+                  }+                "Foo"))+          (Just+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 13 7 19+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PolyKindSigs.hs" 7 15 7 17 ]+                  }+                (TyStar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 13 7 14+                     , srcInfoPoints = []+                     })+                (TyStar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 18 7 19+                     , srcInfoPoints = []+                     })))+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 3 8 15+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/PolyKindSigs.hs" 8 7 8 9 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 3 8 6+                   , srcInfoPoints = []+                   }+                 "Foo")+              Nothing+              Nothing+              Nothing+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 10 8 15+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 10 8 13+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 10 8 13+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 10 8 13+                            , srcInfoPoints = []+                            }+                          "Foo")))+                 (TyVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 14 8 15+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 14 8 15+                         , srcInfoPoints = []+                         }+                       "a")))+          ]+          []+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/PolyKindSigs.hs" 2 1 2 34)+        "{-# LANGUAGE KindSignatures #-}"+    ]+  )
+ tests/examples/PolyKindSigs.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PolyKindSigs.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE GADTs #-}+{-# LANGUAGE PolyKinds #-}+module Test where++data Foo :: * -> * where+        Foo :: Foo a
+ tests/examples/PolyKinds.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PolyKinds #-}+data Proxy t = Proxy++class Typeable t where+  typeOf :: Proxy t -> TypeRep++instance Typeable Int  where typeOf _ = TypeRep+instance Typeable []   where typeOf _ = TypeRep
+ tests/examples/PolyKinds.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PolyKinds.hs.parser.golden view
@@ -0,0 +1,437 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PolyKinds.hs" 1 1 1 1+            , SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 1+            , SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 1+            , SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 1+            , SrcSpan "tests/examples/PolyKinds.hs" 4 1 4 1+            , SrcSpan "tests/examples/PolyKinds.hs" 7 1 7 1+            , SrcSpan "tests/examples/PolyKinds.hs" 8 1 8 1+            , SrcSpan "tests/examples/PolyKinds.hs" 9 1 9 1+            , SrcSpan "tests/examples/PolyKinds.hs" 9 1 9 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 1 1 1 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PolyKinds.hs" 1 1 1 13+                , SrcSpan "tests/examples/PolyKinds.hs" 1 24 1 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "PolyKinds"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PolyKinds.hs" 2 14 2 15 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 6 2 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 6 2 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 6 2 11+                     , srcInfoPoints = []+                     }+                   "Proxy"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 12 2 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 12 2 13+                     , srcInfoPoints = []+                     }+                   "t")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 16 2 21+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 16 2 21+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 16 2 21+                      , srcInfoPoints = []+                      }+                    "Proxy")+                 [])+          ]+          []+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 1 5 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PolyKinds.hs" 4 1 4 6+                , SrcSpan "tests/examples/PolyKinds.hs" 4 18 4 23+                , SrcSpan "tests/examples/PolyKinds.hs" 5 3 5 3+                , SrcSpan "tests/examples/PolyKinds.hs" 7 1 7 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 7 4 17+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 7 4 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 7 4 15+                     , srcInfoPoints = []+                     }+                   "Typeable"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 16 4 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 16 4 17+                     , srcInfoPoints = []+                     }+                   "t")))+          []+          (Just+             [ ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 3 5 31+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/PolyKinds.hs" 5 10 5 12 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 3 5 31+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PolyKinds.hs" 5 10 5 12 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 3 5 9+                          , srcInfoPoints = []+                          }+                        "typeOf"+                    ]+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 31+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PolyKinds.hs" 5 21 5 23 ]+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 20+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 18+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 18+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 18+                                     , srcInfoPoints = []+                                     }+                                   "Proxy")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 19 5 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 19 5 20+                                  , srcInfoPoints = []+                                  }+                                "t")))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 24 5 31+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 24 5 31+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 24 5 31+                                  , srcInfoPoints = []+                                  }+                                "TypeRep")))))+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 1 8 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PolyKinds.hs" 7 1 7 9+                , SrcSpan "tests/examples/PolyKinds.hs" 7 24 7 29+                , SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 30+                , SrcSpan "tests/examples/PolyKinds.hs" 8 1 8 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 22+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 22+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 18+                           , srcInfoPoints = []+                           }+                         "Typeable")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 19 7 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 19 7 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 19 7 22+                           , srcInfoPoints = []+                           }+                         "Int")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 48+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 48+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 48+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 36+                             , srcInfoPoints = []+                             }+                           "typeOf")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 37 7 38+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 39 7 48+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PolyKinds.hs" 7 39 7 40 ]+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 41 7 48+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 41 7 48+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PolyKinds.hs" 7 41 7 48+                                      , srcInfoPoints = []+                                      }+                                    "TypeRep"))))+                        Nothing+                    ])+             ])+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 1 9 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PolyKinds.hs" 8 1 8 9+                , SrcSpan "tests/examples/PolyKinds.hs" 8 24 8 29+                , SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 30+                , SrcSpan "tests/examples/PolyKinds.hs" 9 1 9 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 21+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 21+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 18+                           , srcInfoPoints = []+                           }+                         "Typeable")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 20+                         , SrcSpan "tests/examples/PolyKinds.hs" 8 20 8 21+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 21+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 20+                            , SrcSpan "tests/examples/PolyKinds.hs" 8 20 8 21+                            ]+                        }+                      (ListCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 21+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 20+                               , SrcSpan "tests/examples/PolyKinds.hs" 8 20 8 21+                               ]+                           })))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 48+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 48+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 48+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 36+                             , srcInfoPoints = []+                             }+                           "typeOf")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 37 8 38+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 39 8 48+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/PolyKinds.hs" 8 39 8 40 ]+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 41 8 48+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 41 8 48+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/PolyKinds.hs" 8 41 8 48+                                      , srcInfoPoints = []+                                      }+                                    "TypeRep"))))+                        Nothing+                    ])+             ])+      ]+  , []+  )
+ tests/examples/PolyKinds.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PolyKinds.hs.prettyprinter.golden view
@@ -0,0 +1,12 @@+{-# LANGUAGE PolyKinds #-}++data Proxy t = Proxy++class Typeable t where+        typeOf :: Proxy t -> TypeRep++instance Typeable Int where+        typeOf _ = TypeRep++instance Typeable [] where+        typeOf _ = TypeRep
+ tests/examples/Ppr048.hs view
@@ -0,0 +1,10 @@+module Ppr048 where++{-# SCc foo #-}+foo :: Int -> Int+foo       x = x++{-# SCc foo2 "label" #-}+foo2 :: ()+foo2 = ()+
+ tests/examples/Ppr048.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/Ppr048.hs" 3 9) "Parse error: foo"
+ tests/examples/Ppr048.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+  (SrcLoc "tests/examples/Ppr048.hs" 3 9) "Parse error: foo"
+ tests/examples/Ppr048.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/Ppr048.hs" 3 9) "Parse error: foo"
+ tests/examples/Ppr048.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/Ppr048.hs" 3 9) "Parse error: foo"
+ tests/examples/PrimitiveIntHexLiteral.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE MagicHash #-}+minInt = I# (0x8000000000000000#)
+ tests/examples/PrimitiveIntHexLiteral.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PrimitiveIntHexLiteral.hs.parser.golden view
@@ -0,0 +1,112 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 1 1 1+            , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 1+            , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 1+            , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 1+            , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 3 1 3 1+            , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 3 1 3 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 1 1 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 1 1 13+                , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 24 1 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "MagicHash"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 34+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 7+                  , srcInfoPoints = []+                  }+                "minInt"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 8 2 34+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 8 2 9 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 10 2 34+                  , srcInfoPoints = []+                  }+                (Con+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 10 2 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 10 2 12+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 10 2 12+                           , srcInfoPoints = []+                           }+                         "I#")))+                (Paren+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 13 2 34+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 13 2 14+                         , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 33 2 34+                         ]+                     }+                   (Lit+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 14 2 33+                        , srcInfoPoints = []+                        }+                      (PrimInt+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 14 2 33+                           , srcInfoPoints = []+                           }+                         9223372036854775808+                         "0x8000000000000000")))))+          Nothing+      ]+  , []+  )
+ tests/examples/PrimitiveIntHexLiteral.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () Nothing [LanguagePragma () [Ident () "MagicHash"]] [] [PatBind () (PVar () (Ident () "minInt")) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "I#"))) (Paren () (Lit () (PrimInt () 9223372036854775808 "0x8000000000000000"))))) Nothing]++AST 2:++Module () Nothing [LanguagePragma () [Ident () "MagicHash"]] [] [PatBind () (PVar () (Ident () "minInt")) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "I#"))) (Paren () (Lit () (PrimInt () 9223372036854775808 "9223372036854775808"))))) Nothing]+
+ tests/examples/PrimitiveIntHexLiteral.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE MagicHash #-}+minInt = I# (9223372036854775808#)
+ tests/examples/PromotedSpace.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE DataKinds #-}+module PromotedSpace where++-- Promoted list containing promoted constructor with quote+type PL1 = '[ 'True ]++-- Promoted list containing promoted list+type PL2 = '[ '[Int] ]++-- Promoted list containing promoted tuple+type PL3 = '[ '(Int, Bool) ]++-- Promoted tuple containing promoted constructor with quote+type PT1 = '( 'True, False )++-- Promoted tuple containing promoted list+type PT2 = '( '[Int], Bool )++-- Promoted tuple containing promoted tuple+type PT3 = '( '(Int, Bool), Char )
+ tests/examples/PromotedSpace.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PromotedSpace.hs.parser.golden view
@@ -0,0 +1,617 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 1 21 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 21 1 21 1+            , SrcSpan "tests/examples/PromotedSpace.hs" 21 1 21 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 7+                  , SrcSpan "tests/examples/PromotedSpace.hs" 2 22 2 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 2 8 2 21+                 , srcInfoPoints = []+                 }+               "PromotedSpace")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 13+                , SrcSpan "tests/examples/PromotedSpace.hs" 1 24 1 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "DataKinds"+          ]+      ]+      []+      [ TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 5+                , SrcSpan "tests/examples/PromotedSpace.hs" 5 10 5 11+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 6 5 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 6 5 9+                  , srcInfoPoints = []+                  }+                "PL1"))+          (TyPromoted+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 13+                   , SrcSpan "tests/examples/PromotedSpace.hs" 5 21 5 22+                   ]+               }+             (PromotedList+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 13+                      , SrcSpan "tests/examples/PromotedSpace.hs" 5 21 5 22+                      ]+                  }+                True+                [ TyPromoted+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 20+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 16 ]+                      }+                    (PromotedCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 16 ]+                         }+                       True+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 16 5 20+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 16 5 20+                               , srcInfoPoints = []+                               }+                             "True")))+                ]))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 5+                , SrcSpan "tests/examples/PromotedSpace.hs" 8 10 8 11+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 6 8 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 6 8 9+                  , srcInfoPoints = []+                  }+                "PL2"))+          (TyPromoted+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 23+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 13+                   , SrcSpan "tests/examples/PromotedSpace.hs" 8 22 8 23+                   ]+               }+             (PromotedList+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 23+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 13+                      , SrcSpan "tests/examples/PromotedSpace.hs" 8 22 8 23+                      ]+                  }+                True+                [ TyPromoted+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 21+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 16+                          , SrcSpan "tests/examples/PromotedSpace.hs" 8 20 8 21+                          ]+                      }+                    (PromotedList+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 16+                             , SrcSpan "tests/examples/PromotedSpace.hs" 8 20 8 21+                             ]+                         }+                       True+                       [ TyCon+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20+                                   , srcInfoPoints = []+                                   }+                                 "Int"))+                       ])+                ]))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 5+                , SrcSpan "tests/examples/PromotedSpace.hs" 11 10 11 11+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 11 6 11 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 11 6 11 9+                  , srcInfoPoints = []+                  }+                "PL3"))+          (TyPromoted+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 29+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 13+                   , SrcSpan "tests/examples/PromotedSpace.hs" 11 28 11 29+                   ]+               }+             (PromotedList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 13+                      , SrcSpan "tests/examples/PromotedSpace.hs" 11 28 11 29+                      ]+                  }+                True+                [ TyPromoted+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 16+                          , SrcSpan "tests/examples/PromotedSpace.hs" 11 20 11 21+                          , SrcSpan "tests/examples/PromotedSpace.hs" 11 26 11 27+                          ]+                      }+                    (PromotedTuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 16+                             , SrcSpan "tests/examples/PromotedSpace.hs" 11 20 11 21+                             , SrcSpan "tests/examples/PromotedSpace.hs" 11 26 11 27+                             ]+                         }+                       [ TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20+                                   , srcInfoPoints = []+                                   }+                                 "Int"))+                       , TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26+                                   , srcInfoPoints = []+                                   }+                                 "Bool"))+                       ])+                ]))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 5+                , SrcSpan "tests/examples/PromotedSpace.hs" 14 10 14 11+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 14 6 14 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 14 6 14 9+                  , srcInfoPoints = []+                  }+                "PT1"))+          (TyPromoted+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 29+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 13+                   , SrcSpan "tests/examples/PromotedSpace.hs" 14 20 14 21+                   , SrcSpan "tests/examples/PromotedSpace.hs" 14 28 14 29+                   ]+               }+             (PromotedTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 13+                      , SrcSpan "tests/examples/PromotedSpace.hs" 14 20 14 21+                      , SrcSpan "tests/examples/PromotedSpace.hs" 14 28 14 29+                      ]+                  }+                [ TyPromoted+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 20+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 16 ]+                      }+                    (PromotedCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 16 ]+                         }+                       True+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PromotedSpace.hs" 14 16 14 20+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/PromotedSpace.hs" 14 16 14 20+                               , srcInfoPoints = []+                               }+                             "True")))+                , TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27+                            , srcInfoPoints = []+                            }+                          "False"))+                ]))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 5+                , SrcSpan "tests/examples/PromotedSpace.hs" 17 10 17 11+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 17 6 17 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 17 6 17 9+                  , srcInfoPoints = []+                  }+                "PT2"))+          (TyPromoted+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 29+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 13+                   , SrcSpan "tests/examples/PromotedSpace.hs" 17 21 17 22+                   , SrcSpan "tests/examples/PromotedSpace.hs" 17 28 17 29+                   ]+               }+             (PromotedTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 13+                      , SrcSpan "tests/examples/PromotedSpace.hs" 17 21 17 22+                      , SrcSpan "tests/examples/PromotedSpace.hs" 17 28 17 29+                      ]+                  }+                [ TyPromoted+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 21+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 16+                          , SrcSpan "tests/examples/PromotedSpace.hs" 17 20 17 21+                          ]+                      }+                    (PromotedList+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 16+                             , SrcSpan "tests/examples/PromotedSpace.hs" 17 20 17 21+                             ]+                         }+                       True+                       [ TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20+                                   , srcInfoPoints = []+                                   }+                                 "Int"))+                       ])+                , TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27+                            , srcInfoPoints = []+                            }+                          "Bool"))+                ]))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 5+                , SrcSpan "tests/examples/PromotedSpace.hs" 20 10 20 11+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 20 6 20 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 20 6 20 9+                  , srcInfoPoints = []+                  }+                "PT3"))+          (TyPromoted+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 35+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 13+                   , SrcSpan "tests/examples/PromotedSpace.hs" 20 27 20 28+                   , SrcSpan "tests/examples/PromotedSpace.hs" 20 34 20 35+                   ]+               }+             (PromotedTuple+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 35+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 13+                      , SrcSpan "tests/examples/PromotedSpace.hs" 20 27 20 28+                      , SrcSpan "tests/examples/PromotedSpace.hs" 20 34 20 35+                      ]+                  }+                [ TyPromoted+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 16+                          , SrcSpan "tests/examples/PromotedSpace.hs" 20 20 20 21+                          , SrcSpan "tests/examples/PromotedSpace.hs" 20 26 20 27+                          ]+                      }+                    (PromotedTuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 16+                             , SrcSpan "tests/examples/PromotedSpace.hs" 20 20 20 21+                             , SrcSpan "tests/examples/PromotedSpace.hs" 20 26 20 27+                             ]+                         }+                       [ TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20+                                   , srcInfoPoints = []+                                   }+                                 "Int"))+                       , TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26+                                   , srcInfoPoints = []+                                   }+                                 "Bool"))+                       ])+                , TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33+                            , srcInfoPoints = []+                            }+                          "Char"))+                ]))+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/PromotedSpace.hs" 4 1 4 60)+        " Promoted list containing promoted constructor with quote"+    , Comment+        False+        (SrcSpan "tests/examples/PromotedSpace.hs" 7 1 7 42)+        " Promoted list containing promoted list"+    , Comment+        False+        (SrcSpan "tests/examples/PromotedSpace.hs" 10 1 10 43)+        " Promoted list containing promoted tuple"+    , Comment+        False+        (SrcSpan "tests/examples/PromotedSpace.hs" 13 1 13 61)+        " Promoted tuple containing promoted constructor with quote"+    , Comment+        False+        (SrcSpan "tests/examples/PromotedSpace.hs" 16 1 16 43)+        " Promoted tuple containing promoted list"+    , Comment+        False+        (SrcSpan "tests/examples/PromotedSpace.hs" 19 1 19 44)+        " Promoted tuple containing promoted tuple"+    ]+  )
+ tests/examples/PromotedSpace.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PromotedSpace.hs.prettyprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE DataKinds #-}+module PromotedSpace where++type PL1 = '[ 'True]++type PL2 = '[ '[Int]]++type PL3 = '[ '(Int, Bool)]++type PT1 = '( 'True, False)++type PT2 = '( '[Int], Bool)++type PT3 = '( '(Int, Bool), Char)
+ tests/examples/QQType.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE FlexibleInstances, TemplateHaskell, QuasiQuotes #-}+module QQType where++import Language.Haskell.TH++x :: DecsQ+x = [d| instance Show $(conT (mkName "Int")) |]
+ tests/examples/QQType.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QQType.hs.parser.golden view
@@ -0,0 +1,278 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QQType.hs" 1 1 1 1+            , SrcSpan "tests/examples/QQType.hs" 2 1 2 1+            , SrcSpan "tests/examples/QQType.hs" 2 1 2 1+            , SrcSpan "tests/examples/QQType.hs" 4 1 4 1+            , SrcSpan "tests/examples/QQType.hs" 6 1 6 1+            , SrcSpan "tests/examples/QQType.hs" 7 1 7 1+            , SrcSpan "tests/examples/QQType.hs" 8 1 8 1+            , SrcSpan "tests/examples/QQType.hs" 8 1 8 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 2 1 2 20+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/QQType.hs" 2 1 2 7+                  , SrcSpan "tests/examples/QQType.hs" 2 15 2 20+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 2 8 2 14+                 , srcInfoPoints = []+                 }+               "QQType")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 1 1 65+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QQType.hs" 1 1 1 13+                , SrcSpan "tests/examples/QQType.hs" 1 31 1 32+                , SrcSpan "tests/examples/QQType.hs" 1 48 1 49+                , SrcSpan "tests/examples/QQType.hs" 1 62 1 65+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 14 1 31+                , srcInfoPoints = []+                }+              "FlexibleInstances"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 33 1 48+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 50 1 61+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 4 1 4 27+                , srcInfoPoints = [ SrcSpan "tests/examples/QQType.hs" 4 1 4 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 4 8 4 27+                  , srcInfoPoints = []+                  }+                "Language.Haskell.TH"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 1 6 11+            , srcInfoPoints = [ SrcSpan "tests/examples/QQType.hs" 6 3 6 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 1 6 2+                , srcInfoPoints = []+                }+              "x"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 6 6 11+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 6 6 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 6 6 11+                     , srcInfoPoints = []+                     }+                   "DecsQ")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 1 7 48+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 1 7 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 1 7 2+                  , srcInfoPoints = []+                  }+                "x"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 3 7 48+               , srcInfoPoints = [ SrcSpan "tests/examples/QQType.hs" 7 3 7 4 ]+               }+             (BracketExp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 5 7 48+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/QQType.hs" 7 5 7 8+                      , SrcSpan "tests/examples/QQType.hs" 7 46 7 48+                      ]+                  }+                (DeclBracket+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 5 7 48+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/QQType.hs" 7 9 7 9+                         , SrcSpan "tests/examples/QQType.hs" 7 46 7 46+                         , SrcSpan "tests/examples/QQType.hs" 7 46 7 48+                         ]+                     }+                   [ InstDecl+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 9 7 45+                         , srcInfoPoints = [ SrcSpan "tests/examples/QQType.hs" 7 9 7 17 ]+                         }+                       Nothing+                       (IRule+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 45+                            , srcInfoPoints = []+                            }+                          Nothing+                          Nothing+                          (IHApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 45+                               , srcInfoPoints = []+                               }+                             (IHCon+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 22+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 22+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 22+                                        , srcInfoPoints = []+                                        }+                                      "Show")))+                             (TySplice+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 23 7 45+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/QQType.hs" 7 23 7 25+                                      , SrcSpan "tests/examples/QQType.hs" 7 44 7 45+                                      ]+                                  }+                                (ParenSplice+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 23 7 45+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/QQType.hs" 7 23 7 25+                                         , SrcSpan "tests/examples/QQType.hs" 7 44 7 45+                                         ]+                                     }+                                   (App+                                      SrcSpanInfo+                                        { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 25 7 44+                                        , srcInfoPoints = []+                                        }+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/QQType.hs" 7 25 7 29+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/QQType.hs" 7 25 7 29+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/QQType.hs" 7 25 7 29+                                                 , srcInfoPoints = []+                                                 }+                                               "conT")))+                                      (Paren+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/QQType.hs" 7 30 7 44+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/QQType.hs" 7 30 7 31+                                               , SrcSpan "tests/examples/QQType.hs" 7 43 7 44+                                               ]+                                           }+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/QQType.hs" 7 31 7 43+                                              , srcInfoPoints = []+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/QQType.hs" 7 31 7 37+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan "tests/examples/QQType.hs" 7 31 7 37+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/QQType.hs" 7 31 7 37+                                                       , srcInfoPoints = []+                                                       }+                                                     "mkName")))+                                            (Lit+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/QQType.hs" 7 38 7 43+                                                 , srcInfoPoints = []+                                                 }+                                               (String+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan "tests/examples/QQType.hs" 7 38 7 43+                                                    , srcInfoPoints = []+                                                    }+                                                  "Int"+                                                  "Int")))))))))+                       Nothing+                   ])))+          Nothing+      ]+  , []+  )
+ tests/examples/QQType.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QQType.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE FlexibleInstances, TemplateHaskell, QuasiQuotes #-}+module QQType where+import Language.Haskell.TH++x :: DecsQ+x = [d|+      +      instance Show $( conT (mkName "Int") )+      |]
+ tests/examples/QualifiedDot.hs view
@@ -0,0 +1,3 @@+module QualifiedDot where++twoDots = (Prelude..)
+ tests/examples/QualifiedDot.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedDot.hs.parser.golden view
@@ -0,0 +1,87 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QualifiedDot.hs" 1 1 1 1+            , SrcSpan "tests/examples/QualifiedDot.hs" 1 1 1 1+            , SrcSpan "tests/examples/QualifiedDot.hs" 3 1 3 1+            , SrcSpan "tests/examples/QualifiedDot.hs" 4 1 4 1+            , SrcSpan "tests/examples/QualifiedDot.hs" 4 1 4 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 1 1 1 26+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/QualifiedDot.hs" 1 1 1 7+                  , SrcSpan "tests/examples/QualifiedDot.hs" 1 21 1 26+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 1 8 1 20+                 , srcInfoPoints = []+                 }+               "QualifiedDot")+            Nothing+            Nothing))+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 1 3 22+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 1 3 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 1 3 8+                  , srcInfoPoints = []+                  }+                "twoDots"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 9 3 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/QualifiedDot.hs" 3 9 3 10 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 11 3 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/QualifiedDot.hs" 3 11 3 12+                      , SrcSpan "tests/examples/QualifiedDot.hs" 3 12 3 21+                      , SrcSpan "tests/examples/QualifiedDot.hs" 3 21 3 22+                      ]+                  }+                (Qual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 11 3 22+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/QualifiedDot.hs" 3 11 3 12+                         , SrcSpan "tests/examples/QualifiedDot.hs" 3 12 3 21+                         , SrcSpan "tests/examples/QualifiedDot.hs" 3 21 3 22+                         ]+                     }+                   (ModuleName+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 12 3 21+                        , srcInfoPoints = []+                        }+                      "Prelude")+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 12 3 21+                        , srcInfoPoints = []+                        }+                      "."))))+          Nothing+      ]+  , []+  )
+ tests/examples/QualifiedDot.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedDot.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module QualifiedDot where+twoDots = (Prelude..)
+ tests/examples/QualifiedQQuote.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE QuasiQuotes #-}+import qualified Language.Haskell.TH as T++x :: T.DecsQ+x = [T.d|id|]+
+ tests/examples/QualifiedQQuote.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedQQuote.hs.parser.golden view
@@ -0,0 +1,145 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/QualifiedQQuote.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QualifiedQQuote.hs" 1 1 1 1+            , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 1+            , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 1+            , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 1+            , SrcSpan "tests/examples/QualifiedQQuote.hs" 4 1 4 1+            , SrcSpan "tests/examples/QualifiedQQuote.hs" 5 1 5 1+            , SrcSpan "tests/examples/QualifiedQQuote.hs" 7 1 7 1+            , SrcSpan "tests/examples/QualifiedQQuote.hs" 7 1 7 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QualifiedQQuote.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QualifiedQQuote.hs" 1 1 1 13+                , SrcSpan "tests/examples/QualifiedQQuote.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QualifiedQQuote.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 42+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 7+                    , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 8 2 17+                    , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 38 2 40+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QualifiedQQuote.hs" 2 18 2 37+                  , srcInfoPoints = []+                  }+                "Language.Haskell.TH"+          , importQualified = True+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QualifiedQQuote.hs" 2 41 2 42+                     , srcInfoPoints = []+                     }+                   "T")+          , importSpecs = Nothing+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QualifiedQQuote.hs" 4 1 4 13+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QualifiedQQuote.hs" 4 3 4 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QualifiedQQuote.hs" 4 1 4 2+                , srcInfoPoints = []+                }+              "x"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QualifiedQQuote.hs" 4 6 4 13+               , srcInfoPoints = []+               }+             (Qual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QualifiedQQuote.hs" 4 6 4 13+                  , srcInfoPoints = []+                  }+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QualifiedQQuote.hs" 4 6 4 13+                     , srcInfoPoints = []+                     }+                   "T")+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QualifiedQQuote.hs" 4 6 4 13+                     , srcInfoPoints = []+                     }+                   "DecsQ")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QualifiedQQuote.hs" 5 1 5 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QualifiedQQuote.hs" 5 1 5 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QualifiedQQuote.hs" 5 1 5 2+                  , srcInfoPoints = []+                  }+                "x"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QualifiedQQuote.hs" 5 3 5 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/QualifiedQQuote.hs" 5 3 5 4 ]+               }+             (QuasiQuote+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QualifiedQQuote.hs" 5 5 5 14+                  , srcInfoPoints = []+                  }+                "T.d"+                "id"))+          Nothing+      ]+  , []+  )
+ tests/examples/QualifiedQQuote.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedQQuote.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE QuasiQuotes #-}+import qualified Language.Haskell.TH as T++x :: T.DecsQ+x = [T.d|id|]
+ tests/examples/QualifiedRecordfieldPuns.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+f (C {M.a}) = a+
+ tests/examples/QualifiedRecordfieldPuns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedRecordfieldPuns.hs.parser.golden view
@@ -0,0 +1,143 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 1 1 1+            , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 1+            , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 1+            , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 1+            , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 4 1 4 1+            , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 1 1 13+                , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "NamedFieldPuns"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 16+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 16+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 3 2 12+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 3 2 4+                        , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 11 2 12+                        ]+                    }+                  (PRec+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 4 2 11+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 6 2 7+                           , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 10 2 11+                           ]+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 4 2 5+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 4 2 5+                             , srcInfoPoints = []+                             }+                           "C"))+                     [ PFieldPun+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 7 2 10+                           , srcInfoPoints = []+                           }+                         (Qual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 7 2 10+                              , srcInfoPoints = []+                              }+                            (ModuleName+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 7 2 10+                                 , srcInfoPoints = []+                                 }+                               "M")+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 7 2 10+                                 , srcInfoPoints = []+                                 }+                               "a"))+                     ])+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 13 2 16+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 13 2 14 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 15 2 16+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 15 2 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 15 2 16+                            , srcInfoPoints = []+                            }+                          "a"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/QualifiedRecordfieldPuns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedRecordfieldPuns.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE NamedFieldPuns #-}+f (C{M.a}) = a
+ tests/examples/QuantifiedConstraints.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitForAll #-}+{-# LANGUAGE QuantifiedConstraints #-}++class (forall a. Eq (f a)) => C f
+ tests/examples/QuantifiedConstraints.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuantifiedConstraints.hs.parser.golden view
@@ -0,0 +1,222 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 1+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 1+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 5 1 5 1+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 13+                , SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "ExplicitForAll"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 13+                , SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 36 2 39+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 14 2 35+                , srcInfoPoints = []+                }+              "QuantifiedConstraints"+          ]+      ]+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 6 ]+            }+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 8+                      , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 26 4 27+                      , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 28 4 30+                      ]+                  }+                (ParenA+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 30+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 8+                         , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 26 4 27+                         , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 28 4 30+                         ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 26+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 14+                            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 16 4 17+                            ]+                        }+                      (TyForall+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 26+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 14+                               , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 16 4 17+                               ]+                           }+                         (Just+                            [ UnkindedVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 15 4 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 15 4 16+                                     , srcInfoPoints = []+                                     }+                                   "a")+                            ])+                         Nothing+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 26+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 20+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 20+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/QuantifiedConstraints.hs" 4 18 4 20+                                       , srcInfoPoints = []+                                       }+                                     "Eq")))+                            (TyParen+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 21 4 26+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 21 4 22+                                     , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 25 4 26+                                     ]+                                 }+                               (TyApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 22 4 25+                                    , srcInfoPoints = []+                                    }+                                  (TyVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/QuantifiedConstraints.hs" 4 22 4 23+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/QuantifiedConstraints.hs" 4 22 4 23+                                          , srcInfoPoints = []+                                          }+                                        "f"))+                                  (TyVar+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan+                                             "tests/examples/QuantifiedConstraints.hs" 4 24 4 25+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/QuantifiedConstraints.hs" 4 24 4 25+                                          , srcInfoPoints = []+                                          }+                                        "a"))))))))))+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 34+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 32+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 32+                     , srcInfoPoints = []+                     }+                   "C"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 33 4 34+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 33 4 34+                     , srcInfoPoints = []+                     }+                   "f")))+          []+          Nothing+      ]+  , []+  )
+ tests/examples/QuantifiedConstraints.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuantifiedConstraints.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitForAll #-}+{-# LANGUAGE QuantifiedConstraints #-}++class (forall a . Eq (f a)) => C f
+ tests/examples/QuasiQuoteLines.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE QuasiQuotes #-}++import Here++str :: String+str = [here|test +test +test test |]+++main :: IO()+main = do putStrLn str
+ tests/examples/QuasiQuoteLines.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteLines.hs.parser.golden view
@@ -0,0 +1,285 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 1 13 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 1 1 1+            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 1 5 1+            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 1 6 1+            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 1 11 1+            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 1 12 1+            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 13 1 13 1+            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 13 1 13 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 1 1 13+                , SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 12+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 8 3 12+                  , srcInfoPoints = []+                  }+                "Here"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 1 5 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 5 5 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 1 5 4+                , srcInfoPoints = []+                }+              "str"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 8 5 14+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 8 5 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 8 5 14+                     , srcInfoPoints = []+                     }+                   "String")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 1 8 13+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 1 6 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 1 6 4+                  , srcInfoPoints = []+                  }+                "str"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 5 8 13+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 5 6 6 ]+               }+             (QuasiQuote+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 7 8 13+                  , srcInfoPoints = []+                  }+                "here"+                "test \ntest \ntest test "))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 1 11 13+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 6 11 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 1 11 5+                , srcInfoPoints = []+                }+              "main"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 9 11 13+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 9 11 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 9 11 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 9 11 11+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 13+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 12+                      , SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 12 11 13+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 13+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 12+                         , SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 12 11 13+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 13+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 12+                            , SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 12 11 13+                            ]+                        }))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 1 12 23+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 1 12 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 1 12 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 6 12 23+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 6 12 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 8 12 23+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 8 12 10+                      , SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 11+                      , SrcSpan "tests/examples/QuasiQuoteLines.hs" 13 1 13 0+                      ]+                  }+                [ Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 23+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 23+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 19+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 19+                                  , srcInfoPoints = []+                                  }+                                "putStrLn")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 20 12 23+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 20 12 23+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 20 12 23+                                  , srcInfoPoints = []+                                  }+                                "str"))))+                ]))+          Nothing+      ]+  , []+  )
+ tests/examples/QuasiQuoteLines.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteLines.hs.prettyprinter.golden view
@@ -0,0 +1,10 @@+{-# LANGUAGE QuasiQuotes #-}+import Here++str :: String+str = [here|test +test +test test |]++main :: IO ()+main = do putStrLn str
+ tests/examples/QuasiQuoteOld.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE QuasiQuotes #-}++import Here++str :: String+str = [$here|test +test +test test |]+++main :: IO()+main = do putStrLn str
+ tests/examples/QuasiQuoteOld.hs.exactprinter.golden view
@@ -0,0 +1,13 @@+{-# LANGUAGE QuasiQuotes #-}++import Here++str :: String+str = [here|test +test +test test |]+++main :: IO()+main = do putStrLn str+
+ tests/examples/QuasiQuoteOld.hs.parser.golden view
@@ -0,0 +1,270 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 1 13 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 1 1 1+            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 1 5 1+            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 1 6 1+            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 1 11 1+            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 1 12 1+            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 13 1 13 1+            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 13 1 13 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 1 1 13+                , SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 12+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 8 3 12+                  , srcInfoPoints = []+                  }+                "Here"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 1 5 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 5 5 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 1 5 4+                , srcInfoPoints = []+                }+              "str"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 8 5 14+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 8 5 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 8 5 14+                     , srcInfoPoints = []+                     }+                   "String")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 1 8 13+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 1 6 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 1 6 4+                  , srcInfoPoints = []+                  }+                "str"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 5 8 13+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 5 6 6 ]+               }+             (QuasiQuote+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 7 8 13+                  , srcInfoPoints = []+                  }+                "here"+                "test \ntest \ntest test "))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 1 11 13+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 6 11 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 1 11 5+                , srcInfoPoints = []+                }+              "main"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 9 11 13+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 9 11 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 9 11 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 9 11 11+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 13+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 12+                      , SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 12 11 13+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 13+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 12+                         , SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 12 11 13+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 13+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 12+                            , SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 12 11 13+                            ]+                        }))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 1 12 23+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 1 12 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 1 12 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 6 12 23+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 6 12 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 8 12 23+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 8 12 10+                      , SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 11+                      , SrcSpan "tests/examples/QuasiQuoteOld.hs" 13 1 13 0+                      ]+                  }+                [ Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 23+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 23+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 19+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 19+                                  , srcInfoPoints = []+                                  }+                                "putStrLn")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 20 12 23+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 20 12 23+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 20 12 23+                                  , srcInfoPoints = []+                                  }+                                "str"))))+                ]))+          Nothing+      ]+  , []+  )
+ tests/examples/QuasiQuoteOld.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteOld.hs.prettyprinter.golden view
@@ -0,0 +1,10 @@+{-# LANGUAGE QuasiQuotes #-}+import Here++str :: String+str = [here|test +test +test test |]++main :: IO ()+main = do putStrLn str
+ tests/examples/QuasiQuoteQual2.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE QuasiQuotes #-}+f [True] = 1+f _ = 0+
+ tests/examples/QuasiQuoteQual2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteQual2.hs.parser.golden view
@@ -0,0 +1,140 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 1 1 1+            , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 1+            , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 1+            , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 1+            , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 5 1 5 1+            , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 1 1 13+                , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 3 8+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 13+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PList+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 3 2 9+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 3 2 4+                        , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 8 2 9+                        ]+                    }+                  [ PApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 4 2 8+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 4 2 8+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 4 2 8+                              , srcInfoPoints = []+                              }+                            "True"))+                      []+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 10 2 13+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 10 2 11 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 12 2 13+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 12 2 13+                         , srcInfoPoints = []+                         }+                       1+                       "1")))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 1 3 8+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 1 3 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 3 3 4+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 5 3 8+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 5 3 6 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 7 3 8+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 7 3 8+                         , srcInfoPoints = []+                         }+                       0+                       "0")))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/QuasiQuoteQual2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteQual2.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE QuasiQuotes #-}+f [True] = 1+f _ = 0
+ tests/examples/QuasiQuoteSplice.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE TemplateHaskell, RankNTypes #-}+{-# OPTIONS_GHC -F -pgmFtrhsx #-}+import Language.Haskell.TH++data PageFunction m a = PF++main = let a = mkName "a" in+       runQ [t| forall m. PageFunction m $(conT (mkName "a")) |] >>= print+
+ tests/examples/QuasiQuoteSplice.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteSplice.hs.parser.golden view
@@ -0,0 +1,589 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 1 10 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 1 1 1+            , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 2 1 2 1+            , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 1 5 1+            , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 1 7 1+            , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 10 1 10 1+            , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 10 1 10 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 1 1 45+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 1 1 13+                , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 29 1 30+                , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 42 1 45+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 31 1 41+                , srcInfoPoints = []+                }+              "RankNTypes"+          ]+      , OptionsPragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteSplice.hs" 2 1 2 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 2 1 2 31+                , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 2 31 2 34+                ]+            }+          (Just GHC)+          "-F -pgmFtrhsx "+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 8 3 27+                  , srcInfoPoints = []+                  }+                "Language.Haskell.TH"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 1 5 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 23 5 24 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 1 5 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 6 5 22+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 6 5 20+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 6 5 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 6 5 18+                        , srcInfoPoints = []+                        }+                      "PageFunction"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 19 5 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 19 5 20+                        , srcInfoPoints = []+                        }+                      "m")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 21 5 22+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 21 5 22+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 25 5 27+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 25 5 27+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 25 5 27+                      , srcInfoPoints = []+                      }+                    "PF")+                 [])+          ]+          []+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 1 8 75+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 1 7 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 1 7 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 6 8 75+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 6 7 7 ]+               }+             (Let+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 8 8 75+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 8 7 11+                      , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 27 7 29+                      ]+                  }+                (BDecls+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 12+                         , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 27 7 27+                         ]+                     }+                   [ PatBind+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 26+                         , srcInfoPoints = []+                         }+                       (PVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 13+                               , srcInfoPoints = []+                               }+                             "a"))+                       (UnGuardedRhs+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 14 7 26+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 14 7 15 ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 16 7 26+                               , srcInfoPoints = []+                               }+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 16 7 22+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 16 7 22+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 16 7 22+                                        , srcInfoPoints = []+                                        }+                                      "mkName")))+                             (Lit+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 23 7 26+                                  , srcInfoPoints = []+                                  }+                                (String+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 23 7 26+                                     , srcInfoPoints = []+                                     }+                                   "a"+                                   "a"))))+                       Nothing+                   ])+                (InfixApp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 75+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 65+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 12+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 12+                                 , srcInfoPoints = []+                                 }+                               "runQ")))+                      (BracketExp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 13 8 65+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 13 8 16+                               , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 63 8 65+                               ]+                           }+                         (TypeBracket+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 13 8 65+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 13 8 16+                                  , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 63 8 65+                                  ]+                              }+                            (TyForall+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 17 8 62+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 17 8 23+                                     , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 25 8 26+                                     ]+                                 }+                               (Just+                                  [ UnkindedVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 24 8 25+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/QuasiQuoteSplice.hs" 8 24 8 25+                                           , srcInfoPoints = []+                                           }+                                         "m")+                                  ])+                               Nothing+                               (TyApp+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 27 8 62+                                    , srcInfoPoints = []+                                    }+                                  (TyApp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 27 8 41+                                       , srcInfoPoints = []+                                       }+                                     (TyCon+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 27 8 39+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/QuasiQuoteSplice.hs" 8 27 8 39+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/QuasiQuoteSplice.hs" 8 27 8 39+                                                , srcInfoPoints = []+                                                }+                                              "PageFunction")))+                                     (TyVar+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 40 8 41+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/QuasiQuoteSplice.hs" 8 40 8 41+                                             , srcInfoPoints = []+                                             }+                                           "m")))+                                  (TySplice+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 42 8 62+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 42 8 44+                                           , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 61 8 62+                                           ]+                                       }+                                     (ParenSplice+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 42 8 62+                                          , srcInfoPoints =+                                              [ SrcSpan+                                                  "tests/examples/QuasiQuoteSplice.hs" 8 42 8 44+                                              , SrcSpan+                                                  "tests/examples/QuasiQuoteSplice.hs" 8 61 8 62+                                              ]+                                          }+                                        (App+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/QuasiQuoteSplice.hs" 8 44 8 61+                                             , srcInfoPoints = []+                                             }+                                           (Var+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/QuasiQuoteSplice.hs" 8 44 8 48+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/QuasiQuoteSplice.hs"+                                                         8+                                                         44+                                                         8+                                                         48+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/QuasiQuoteSplice.hs"+                                                            8+                                                            44+                                                            8+                                                            48+                                                      , srcInfoPoints = []+                                                      }+                                                    "conT")))+                                           (Paren+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/QuasiQuoteSplice.hs" 8 49 8 61+                                                , srcInfoPoints =+                                                    [ SrcSpan+                                                        "tests/examples/QuasiQuoteSplice.hs"+                                                        8+                                                        49+                                                        8+                                                        50+                                                    , SrcSpan+                                                        "tests/examples/QuasiQuoteSplice.hs"+                                                        8+                                                        60+                                                        8+                                                        61+                                                    ]+                                                }+                                              (App+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/QuasiQuoteSplice.hs"+                                                         8+                                                         50+                                                         8+                                                         60+                                                   , srcInfoPoints = []+                                                   }+                                                 (Var+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/QuasiQuoteSplice.hs"+                                                            8+                                                            50+                                                            8+                                                            56+                                                      , srcInfoPoints = []+                                                      }+                                                    (UnQual+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/QuasiQuoteSplice.hs"+                                                               8+                                                               50+                                                               8+                                                               56+                                                         , srcInfoPoints = []+                                                         }+                                                       (Ident+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/QuasiQuoteSplice.hs"+                                                                  8+                                                                  50+                                                                  8+                                                                  56+                                                            , srcInfoPoints = []+                                                            }+                                                          "mkName")))+                                                 (Lit+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/QuasiQuoteSplice.hs"+                                                            8+                                                            57+                                                            8+                                                            60+                                                      , srcInfoPoints = []+                                                      }+                                                    (String+                                                       SrcSpanInfo+                                                         { srcInfoSpan =+                                                             SrcSpan+                                                               "tests/examples/QuasiQuoteSplice.hs"+                                                               8+                                                               57+                                                               8+                                                               60+                                                         , srcInfoPoints = []+                                                         }+                                                       "a"+                                                       "a"))))))))))))+                   (QVarOp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 66 8 69+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 66 8 69+                           , srcInfoPoints = []+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 66 8 69+                              , srcInfoPoints = []+                              }+                            ">>=")))+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 70 8 75+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 70 8 75+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 70 8 75+                              , srcInfoPoints = []+                              }+                            "print"))))))+          Nothing+      ]+  , []+  )
+ tests/examples/QuasiQuoteSplice.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteSplice.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE TemplateHaskell, RankNTypes #-}+{-# OPTIONS_GHC -F -pgmFtrhsx #-}+import Language.Haskell.TH++data PageFunction m a = PF+main+  = let a = mkName "a" in+      runQ [t| forall m . PageFunction m $( conT (mkName "a") ) |] >>=+        print
+ tests/examples/QuasiQuoteToplevel.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE QuasiQuotes #-}++[undefined|+this quasiquote is acceptable to ghc's+parser. Previously hse would reject this+because -XTemplateHaskell is not enabled+to allow "expressions" at top-level+|]
+ tests/examples/QuasiQuoteToplevel.hs.exactprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE QuasiQuotes #-}++[undefined|+this quasiquote is acceptable to ghc's+parser. Previously hse would reject this+because -XTemplateHaskell is not enabled+to allow "expressions" at top-level|]++
+ tests/examples/QuasiQuoteToplevel.hs.parser.golden view
@@ -0,0 +1,51 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 1 1 1+            , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 3 1+            , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 9 1 9 1+            , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 9 1 9 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 1 1 13+                , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          ]+      ]+      []+      [ SpliceDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 8 3+            , srcInfoPoints = []+            }+          (QuasiQuote+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 8 3+               , srcInfoPoints = []+               }+             "undefined"+             "\nthis quasiquote is acceptable to ghc's\nparser. Previously hse would reject this\nbecause -XTemplateHaskell is not enabled\nto allow \"expressions\" at top-level\n")+      ]+  , []+  )
+ tests/examples/QuasiQuoteToplevel.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteToplevel.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE QuasiQuotes #-}++[undefined|+this quasiquote is acceptable to ghc's+parser. Previously hse would reject this+because -XTemplateHaskell is not enabled+to allow "expressions" at top-level+|]
+ tests/examples/QuasiQuoteUnit.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}++unNest n = conP '()+
+ tests/examples/QuasiQuoteUnit.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteUnit.hs.parser.golden view
@@ -0,0 +1,139 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 1 1 1+            , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 1 2 1+            , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 1+            , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 1+            , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 1+            , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 6 1 6 1+            , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 1 1 13+                , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 1 2 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 1 2 13+                , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 30 2 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 14 2 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 20+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 20+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 7+                   , srcInfoPoints = []+                   }+                 "unNest")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 8 4 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 8 4 9+                       , srcInfoPoints = []+                       }+                     "n")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 10 4 20+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 10 4 11 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 12 4 20+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 12 4 16+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 12 4 16+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 12 4 16+                               , srcInfoPoints = []+                               }+                             "conP")))+                    (VarQuote+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 17 4 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 17 4 18 ]+                         }+                       (Special+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 18 4 20+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 18 4 19+                                , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 19 4 20+                                ]+                            }+                          (UnitCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 18 4 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 18 4 19+                                   , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 19 4 20+                                   ]+                               })))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/QuasiQuoteUnit.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteUnit.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+unNest n = conP '()
+ tests/examples/RCategory.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds, MultiParamTypeClasses #-}+module Control.RCategory where+++import qualified Prelude++import GHC.Prim++infixr 9 .+infixr 1 >>>, <<<++-- | A class for categories.+--   id and (.) must form a monoid.+class RCategory cat where+  type RCategoryCtxt cat a b :: Constraint++  -- | the identity morphism+  id :: RCategoryCtxt cat a a+     => cat a a++  -- | morphism composition+  (.) :: (RCategoryCtxt cat b c, RCategoryCtxt cat a b, RCategoryCtxt cat a c)+      => cat b c -> cat a b -> cat a c++{-# RULES+"identity/left" forall p .+                id . p = p+"identity/right"        forall p .+                p . id = p+ #-}++instance RCategory (->) where+  type RCategoryCtxt (->) a a = ()+  id = Prelude.id+  (.) = (Prelude..)++-- | Right-to-left composition+(<<<) :: (RCategoryCtxt cat a c, RCategoryCtxt cat a b, RCategoryCtxt cat b c, RCategory cat)+      => cat b c -> cat a b -> cat a c+(<<<) = (.)++-- | Left-to-right composition+(>>>) :: (RCategoryCtxt cat a c, RCategoryCtxt cat a b, RCategoryCtxt cat b c, RCategory cat)+      => cat a b -> cat b c -> cat a c+f >>> g = g . f
+ tests/examples/RCategory.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory.hs.parser.golden view
@@ -0,0 +1,2479 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 1 46 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RCategory.hs" 1 1 1 1+            , SrcSpan "tests/examples/RCategory.hs" 2 1 2 1+            , SrcSpan "tests/examples/RCategory.hs" 2 1 2 1+            , SrcSpan "tests/examples/RCategory.hs" 5 1 5 1+            , SrcSpan "tests/examples/RCategory.hs" 7 1 7 1+            , SrcSpan "tests/examples/RCategory.hs" 9 1 9 1+            , SrcSpan "tests/examples/RCategory.hs" 10 1 10 1+            , SrcSpan "tests/examples/RCategory.hs" 14 1 14 1+            , SrcSpan "tests/examples/RCategory.hs" 25 1 25 1+            , SrcSpan "tests/examples/RCategory.hs" 32 1 32 1+            , SrcSpan "tests/examples/RCategory.hs" 38 1 38 1+            , SrcSpan "tests/examples/RCategory.hs" 40 1 40 1+            , SrcSpan "tests/examples/RCategory.hs" 43 1 43 1+            , SrcSpan "tests/examples/RCategory.hs" 45 1 45 1+            , SrcSpan "tests/examples/RCategory.hs" 46 1 46 1+            , SrcSpan "tests/examples/RCategory.hs" 46 1 46 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 2 1 2 31+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/RCategory.hs" 2 1 2 7+                  , SrcSpan "tests/examples/RCategory.hs" 2 26 2 31+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 2 8 2 25+                 , srcInfoPoints = []+                 }+               "Control.RCategory")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 1 1 70+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory.hs" 1 1 1 13+                , SrcSpan "tests/examples/RCategory.hs" 1 26 1 27+                , SrcSpan "tests/examples/RCategory.hs" 1 43 1 44+                , SrcSpan "tests/examples/RCategory.hs" 1 67 1 70+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 28 1 43+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 45 1 66+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 5 1 5 25+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/RCategory.hs" 5 1 5 7+                    , SrcSpan "tests/examples/RCategory.hs" 5 8 5 17+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 5 18 5 25+                  , srcInfoPoints = []+                  }+                "Prelude"+          , importQualified = True+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 7 1 7 16+                , srcInfoPoints = [ SrcSpan "tests/examples/RCategory.hs" 7 1 7 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 7 8 7 16+                  , srcInfoPoints = []+                  }+                "GHC.Prim"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ InfixDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 9 1 9 11+            , srcInfoPoints = [ SrcSpan "tests/examples/RCategory.hs" 9 8 9 9 ]+            }+          (AssocRight+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 9 1 9 7+               , srcInfoPoints = []+               })+          (Just 9)+          [ VarOp+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 9 10 9 11+                , srcInfoPoints = []+                }+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 9 10 9 11+                   , srcInfoPoints = []+                   }+                 ".")+          ]+      , InfixDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 1 10 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory.hs" 10 8 10 9+                , SrcSpan "tests/examples/RCategory.hs" 10 13 10 14+                ]+            }+          (AssocRight+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 1 10 7+               , srcInfoPoints = []+               })+          (Just 1)+          [ VarOp+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 10 10 13+                , srcInfoPoints = []+                }+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 10 10 13+                   , srcInfoPoints = []+                   }+                 ">>>")+          , VarOp+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 15 10 18+                , srcInfoPoints = []+                }+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 15 10 18+                   , srcInfoPoints = []+                   }+                 "<<<")+          ]+      , ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 1 23 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory.hs" 14 1 14 6+                , SrcSpan "tests/examples/RCategory.hs" 14 21 14 26+                , SrcSpan "tests/examples/RCategory.hs" 15 3 15 3+                , SrcSpan "tests/examples/RCategory.hs" 18 3 18 3+                , SrcSpan "tests/examples/RCategory.hs" 22 3 22 3+                , SrcSpan "tests/examples/RCategory.hs" 25 1 25 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 7 14 20+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 7 14 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 7 14 16+                     , srcInfoPoints = []+                     }+                   "RCategory"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 17 14 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 17 14 20+                     , srcInfoPoints = []+                     }+                   "cat")))+          []+          (Just+             [ ClsTyFam+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 3 15 43+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RCategory.hs" 15 3 15 7 ]+                   }+                 (DHApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 29+                      , srcInfoPoints = []+                      }+                    (DHApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 27+                         , srcInfoPoints = []+                         }+                       (DHApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 25+                            , srcInfoPoints = []+                            }+                          (DHead+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 21+                                  , srcInfoPoints = []+                                  }+                                "RCategoryCtxt"))+                          (UnkindedVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 22 15 25+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 22 15 25+                                  , srcInfoPoints = []+                                  }+                                "cat")))+                       (UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 26 15 27+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 26 15 27+                               , srcInfoPoints = []+                               }+                             "a")))+                    (UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 28 15 29+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 28 15 29+                            , srcInfoPoints = []+                            }+                          "b")))+                 (Just+                    (KindSig+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 30 15 43+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/RCategory.hs" 15 30 15 32 ]+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43+                                  , srcInfoPoints = []+                                  }+                                "Constraint")))))+                 Nothing+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 19 16+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RCategory.hs" 18 6 18 8 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 19 16+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RCategory.hs" 18 6 18 8 ]+                      }+                    [ Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 18 5+                          , srcInfoPoints = []+                          }+                        "id"+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 16+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxSingle+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+                               }+                             (TypeA+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+                                        }+                                      (TyApp+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+                                           }+                                         (TyCon+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+                                              , srcInfoPoints =+                                                  [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8+                                                  ]+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/RCategory.hs" 18 9 18 22+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/RCategory.hs" 18 9 18 22+                                                    , srcInfoPoints = []+                                                    }+                                                  "RCategoryCtxt")))+                                         (TyVar+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/RCategory.hs" 18 23 18 26+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/RCategory.hs" 18 23 18 26+                                                 , srcInfoPoints = []+                                                 }+                                               "cat")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 18 27 18 28+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/RCategory.hs" 18 27 18 28+                                              , srcInfoPoints = []+                                              }+                                            "a")))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 18 29 18 30+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 18 29 18 30+                                           , srcInfoPoints = []+                                           }+                                         "a"))))))+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 16+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 14+                               , srcInfoPoints = []+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 12+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 19 9 19 12+                                     , srcInfoPoints = []+                                     }+                                   "cat"))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 13 19 14+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 19 13 19 14+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16+                                  , srcInfoPoints = []+                                  }+                                "a")))))+             , ClsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]+                   }+                 (TypeSig+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]+                      }+                    [ Symbol+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 22 6+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/RCategory.hs" 22 3 22 4+                              , SrcSpan "tests/examples/RCategory.hs" 22 4 22 5+                              , SrcSpan "tests/examples/RCategory.hs" 22 5 22 6+                              ]+                          }+                        "."+                    ]+                    (TyForall+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 39+                         , srcInfoPoints = []+                         }+                       Nothing+                       (Just+                          (CxTuple+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 9+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/RCategory.hs" 22 10 22 11+                                   , SrcSpan "tests/examples/RCategory.hs" 22 32 22 33+                                   , SrcSpan "tests/examples/RCategory.hs" 22 55 22 56+                                   , SrcSpan "tests/examples/RCategory.hs" 22 78 22 79+                                   , SrcSpan "tests/examples/RCategory.hs" 23 7 23 9+                                   ]+                               }+                             [ TypeA+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+                                   , srcInfoPoints = []+                                   }+                                 (TyApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+                                      , srcInfoPoints = []+                                      }+                                    (TyApp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+                                         , srcInfoPoints = []+                                         }+                                       (TyApp+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+                                            , srcInfoPoints = []+                                            }+                                          (TyCon+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/RCategory.hs" 22 11 22 24+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/RCategory.hs" 22 11 22 24+                                                     , srcInfoPoints = []+                                                     }+                                                   "RCategoryCtxt")))+                                          (TyVar+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RCategory.hs" 22 25 22 28+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/RCategory.hs" 22 25 22 28+                                                  , srcInfoPoints = []+                                                  }+                                                "cat")))+                                       (TyVar+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RCategory.hs" 22 29 22 30+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RCategory.hs" 22 29 22 30+                                               , srcInfoPoints = []+                                               }+                                             "b")))+                                    (TyVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RCategory.hs" 22 31 22 32+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RCategory.hs" 22 31 22 32+                                            , srcInfoPoints = []+                                            }+                                          "c")))+                             , TypeA+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+                                   , srcInfoPoints = []+                                   }+                                 (TyApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+                                      , srcInfoPoints = []+                                      }+                                    (TyApp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+                                         , srcInfoPoints = []+                                         }+                                       (TyApp+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+                                            , srcInfoPoints = []+                                            }+                                          (TyCon+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/RCategory.hs" 22 34 22 47+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/RCategory.hs" 22 34 22 47+                                                     , srcInfoPoints = []+                                                     }+                                                   "RCategoryCtxt")))+                                          (TyVar+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RCategory.hs" 22 48 22 51+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/RCategory.hs" 22 48 22 51+                                                  , srcInfoPoints = []+                                                  }+                                                "cat")))+                                       (TyVar+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RCategory.hs" 22 52 22 53+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RCategory.hs" 22 52 22 53+                                               , srcInfoPoints = []+                                               }+                                             "a")))+                                    (TyVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RCategory.hs" 22 54 22 55+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RCategory.hs" 22 54 22 55+                                            , srcInfoPoints = []+                                            }+                                          "b")))+                             , TypeA+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+                                   , srcInfoPoints = []+                                   }+                                 (TyApp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+                                      , srcInfoPoints = []+                                      }+                                    (TyApp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+                                         , srcInfoPoints = []+                                         }+                                       (TyApp+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+                                            , srcInfoPoints = []+                                            }+                                          (TyCon+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/RCategory.hs" 22 57 22 70+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/RCategory.hs" 22 57 22 70+                                                     , srcInfoPoints = []+                                                     }+                                                   "RCategoryCtxt")))+                                          (TyVar+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RCategory.hs" 22 71 22 74+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/RCategory.hs" 22 71 22 74+                                                  , srcInfoPoints = []+                                                  }+                                                "cat")))+                                       (TyVar+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RCategory.hs" 22 75 22 76+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RCategory.hs" 22 75 22 76+                                               , srcInfoPoints = []+                                               }+                                             "a")))+                                    (TyVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RCategory.hs" 22 77 22 78+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RCategory.hs" 22 77 22 78+                                            , srcInfoPoints = []+                                            }+                                          "c")))+                             ]))+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 39+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/RCategory.hs" 23 18 23 20 ]+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 17+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 15+                                  , srcInfoPoints = []+                                  }+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 23 10 23 13+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 23 10 23 13+                                        , srcInfoPoints = []+                                        }+                                      "cat"))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 23 14 23 15+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 23 14 23 15+                                        , srcInfoPoints = []+                                        }+                                      "b")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 16 23 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 23 16 23 17+                                     , srcInfoPoints = []+                                     }+                                   "c")))+                          (TyFun+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 39+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/RCategory.hs" 23 29 23 31 ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 28+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 23 21 23 26+                                     , srcInfoPoints = []+                                     }+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 23 21 23 24+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 23 21 23 24+                                           , srcInfoPoints = []+                                           }+                                         "cat"))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 23 25 23 26+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 23 25 23 26+                                           , srcInfoPoints = []+                                           }+                                         "a")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 23 27 23 28+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 23 27 23 28+                                        , srcInfoPoints = []+                                        }+                                      "b")))+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 32 23 39+                                  , srcInfoPoints = []+                                  }+                                (TyApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 23 32 23 37+                                     , srcInfoPoints = []+                                     }+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 23 32 23 35+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 23 32 23 35+                                           , srcInfoPoints = []+                                           }+                                         "cat"))+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 23 36 23 37+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 23 36 23 37+                                           , srcInfoPoints = []+                                           }+                                         "a")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 23 38 23 39+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 23 38 23 39+                                        , srcInfoPoints = []+                                        }+                                      "c")))))))+             ])+      , RulePragmaDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 25 1 30 5+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory.hs" 25 1 25 10+                , SrcSpan "tests/examples/RCategory.hs" 30 2 30 5+                ]+            }+          [ Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 1 27 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/RCategory.hs" 26 1 26 16+                    , SrcSpan "tests/examples/RCategory.hs" 26 17 26 23+                    , SrcSpan "tests/examples/RCategory.hs" 26 26 26 27+                    , SrcSpan "tests/examples/RCategory.hs" 27 24 27 25+                    ]+                }+              "identity/left"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25+                          , srcInfoPoints = []+                          }+                        "p")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 23+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19+                            , srcInfoPoints = []+                            }+                          "id")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21+                            , srcInfoPoints = []+                            }+                          ".")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23+                            , srcInfoPoints = []+                            }+                          "p"))))+              (Var+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27+                         , srcInfoPoints = []+                         }+                       "p")))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 1 29 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/RCategory.hs" 28 1 28 17+                    , SrcSpan "tests/examples/RCategory.hs" 28 25 28 31+                    , SrcSpan "tests/examples/RCategory.hs" 28 34 28 35+                    , SrcSpan "tests/examples/RCategory.hs" 29 24 29 25+                    ]+                }+              "identity/right"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33+                          , srcInfoPoints = []+                          }+                        "p")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 23+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18+                            , srcInfoPoints = []+                            }+                          "p")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20+                            , srcInfoPoints = []+                            }+                          ".")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23+                            , srcInfoPoints = []+                            }+                          "id"))))+              (Var+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27+                         , srcInfoPoints = []+                         }+                       "p")))+          ]+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 1 38 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory.hs" 32 1 32 9+                , SrcSpan "tests/examples/RCategory.hs" 32 25 32 30+                , SrcSpan "tests/examples/RCategory.hs" 33 3 33 3+                , SrcSpan "tests/examples/RCategory.hs" 34 3 34 3+                , SrcSpan "tests/examples/RCategory.hs" 35 3 35 3+                , SrcSpan "tests/examples/RCategory.hs" 38 1 38 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19+                           , srcInfoPoints = []+                           }+                         "RCategory")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21+                         , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23+                         , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21+                            , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23+                            , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24+                            ]+                        }+                      (FunCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21+                               , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23+                               , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24+                               ]+                           })))))+          (Just+             [ InsType+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 3 33 35+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RCategory.hs" 33 3 33 7+                       , SrcSpan "tests/examples/RCategory.hs" 33 31 33 32+                       ]+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 30+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 28+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 26+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 33 8 33 21+                                     , srcInfoPoints = []+                                     }+                                   "RCategoryCtxt")))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23+                                   , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25+                                   , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26+                                   ]+                               }+                             (Special+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23+                                      , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25+                                      , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26+                                      ]+                                  }+                                (FunCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 33 22 33 26+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23+                                         , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25+                                         , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26+                                         ]+                                     }))))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28+                               , srcInfoPoints = []+                               }+                             "a")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30+                            , srcInfoPoints = []+                            }+                          "a")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34+                          , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35+                          ]+                      }+                    (Special+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34+                             , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35+                             ]+                         }+                       (UnitCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34+                                , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35+                                ]+                            })))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5+                            , srcInfoPoints = []+                            }+                          "id"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 6 34 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/RCategory.hs" 34 6 34 7 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18+                            , srcInfoPoints = []+                            }+                          (Qual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18+                               , srcInfoPoints = []+                               }+                             (ModuleName+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18+                                  , srcInfoPoints = []+                                  }+                                "Prelude")+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18+                                  , srcInfoPoints = []+                                  }+                                "id"))))+                    Nothing)+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20+                   , srcInfoPoints = []+                   }+                 (PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 6+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/RCategory.hs" 35 3 35 4+                             , SrcSpan "tests/examples/RCategory.hs" 35 4 35 5+                             , SrcSpan "tests/examples/RCategory.hs" 35 5 35 6+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 4 35 5+                            , srcInfoPoints = []+                            }+                          "."))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 7 35 20+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/RCategory.hs" 35 7 35 8 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10+                                , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19+                                , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20+                                ]+                            }+                          (Qual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10+                                   , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19+                                   , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20+                                   ]+                               }+                             (ModuleName+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19+                                  , srcInfoPoints = []+                                  }+                                "Prelude")+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19+                                  , srcInfoPoints = []+                                  }+                                "."))))+                    Nothing)+             ])+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 39 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory.hs" 38 7 38 9 ]+            }+          [ Symbol+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 38 6+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/RCategory.hs" 38 1 38 2+                    , SrcSpan "tests/examples/RCategory.hs" 38 2 38 5+                    , SrcSpan "tests/examples/RCategory.hs" 38 5 38 6+                    ]+                }+              "<<<"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 39+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 9+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RCategory.hs" 38 10 38 11+                         , SrcSpan "tests/examples/RCategory.hs" 38 32 38 33+                         , SrcSpan "tests/examples/RCategory.hs" 38 55 38 56+                         , SrcSpan "tests/examples/RCategory.hs" 38 78 38 79+                         , SrcSpan "tests/examples/RCategory.hs" 38 93 38 94+                         , SrcSpan "tests/examples/RCategory.hs" 39 7 39 9+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 38 11 38 24+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 38 11 38 24+                                           , srcInfoPoints = []+                                           }+                                         "RCategoryCtxt")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 25 38 28+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 38 25 38 28+                                        , srcInfoPoints = []+                                        }+                                      "cat")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 29 38 30+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 29 38 30+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32+                                  , srcInfoPoints = []+                                  }+                                "c")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 38 34 38 47+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 38 34 38 47+                                           , srcInfoPoints = []+                                           }+                                         "RCategoryCtxt")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 48 38 51+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 38 48 38 51+                                        , srcInfoPoints = []+                                        }+                                      "cat")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 52 38 53+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 52 38 53+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55+                                  , srcInfoPoints = []+                                  }+                                "b")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 38 57 38 70+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 38 57 38 70+                                           , srcInfoPoints = []+                                           }+                                         "RCategoryCtxt")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 71 38 74+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 38 71 38 74+                                        , srcInfoPoints = []+                                        }+                                      "cat")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 75 38 76+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 75 38 76+                                     , srcInfoPoints = []+                                     }+                                   "b")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78+                                  , srcInfoPoints = []+                                  }+                                "c")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 89+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 38 80 38 89+                                     , srcInfoPoints = []+                                     }+                                   "RCategory")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93+                                  , srcInfoPoints = []+                                  }+                                "cat")))+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 39+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RCategory.hs" 39 18 39 20 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 17+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 15+                        , srcInfoPoints = []+                        }+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13+                              , srcInfoPoints = []+                              }+                            "cat"))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15+                              , srcInfoPoints = []+                              }+                            "b")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17+                           , srcInfoPoints = []+                           }+                         "c")))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 39+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RCategory.hs" 39 29 39 31 ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 28+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 26+                           , srcInfoPoints = []+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24+                                 , srcInfoPoints = []+                                 }+                               "cat"))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28+                              , srcInfoPoints = []+                              }+                            "b")))+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 39+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 37+                           , srcInfoPoints = []+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35+                                 , srcInfoPoints = []+                                 }+                               "cat"))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39+                              , srcInfoPoints = []+                              }+                            "c"))))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 12+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 6+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RCategory.hs" 40 1 40 2+                   , SrcSpan "tests/examples/RCategory.hs" 40 2 40 5+                   , SrcSpan "tests/examples/RCategory.hs" 40 5 40 6+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 2 40 5+                  , srcInfoPoints = []+                  }+                "<<<"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 7 40 12+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RCategory.hs" 40 7 40 8 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10+                      , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11+                      , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12+                      ]+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10+                         , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11+                         , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12+                         ]+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 10 40 11+                        , srcInfoPoints = []+                        }+                      "."))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 44 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory.hs" 43 7 43 9 ]+            }+          [ Symbol+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 43 6+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/RCategory.hs" 43 1 43 2+                    , SrcSpan "tests/examples/RCategory.hs" 43 2 43 5+                    , SrcSpan "tests/examples/RCategory.hs" 43 5 43 6+                    ]+                }+              ">>>"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 39+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 9+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RCategory.hs" 43 10 43 11+                         , SrcSpan "tests/examples/RCategory.hs" 43 32 43 33+                         , SrcSpan "tests/examples/RCategory.hs" 43 55 43 56+                         , SrcSpan "tests/examples/RCategory.hs" 43 78 43 79+                         , SrcSpan "tests/examples/RCategory.hs" 43 93 43 94+                         , SrcSpan "tests/examples/RCategory.hs" 44 7 44 9+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 43 11 43 24+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 43 11 43 24+                                           , srcInfoPoints = []+                                           }+                                         "RCategoryCtxt")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 25 43 28+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 43 25 43 28+                                        , srcInfoPoints = []+                                        }+                                      "cat")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 29 43 30+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 29 43 30+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32+                                  , srcInfoPoints = []+                                  }+                                "c")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 43 34 43 47+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 43 34 43 47+                                           , srcInfoPoints = []+                                           }+                                         "RCategoryCtxt")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 48 43 51+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 43 48 43 51+                                        , srcInfoPoints = []+                                        }+                                      "cat")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 52 43 53+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 52 43 53+                                     , srcInfoPoints = []+                                     }+                                   "a")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55+                                  , srcInfoPoints = []+                                  }+                                "b")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+                            , srcInfoPoints = []+                            }+                          (TyApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+                               , srcInfoPoints = []+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 43 57 43 70+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RCategory.hs" 43 57 43 70+                                           , srcInfoPoints = []+                                           }+                                         "RCategoryCtxt")))+                                (TyVar+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 71 43 74+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RCategory.hs" 43 71 43 74+                                        , srcInfoPoints = []+                                        }+                                      "cat")))+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 75 43 76+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 75 43 76+                                     , srcInfoPoints = []+                                     }+                                   "b")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78+                                  , srcInfoPoints = []+                                  }+                                "c")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 89+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory.hs" 43 80 43 89+                                     , srcInfoPoints = []+                                     }+                                   "RCategory")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93+                                  , srcInfoPoints = []+                                  }+                                "cat")))+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 39+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RCategory.hs" 44 18 44 20 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 17+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 15+                        , srcInfoPoints = []+                        }+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 13+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 13+                              , srcInfoPoints = []+                              }+                            "cat"))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 14 44 15+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 14 44 15+                              , srcInfoPoints = []+                              }+                            "a")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 16 44 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 16 44 17+                           , srcInfoPoints = []+                           }+                         "b")))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 39+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RCategory.hs" 44 29 44 31 ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 28+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 26+                           , srcInfoPoints = []+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 24+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 24+                                 , srcInfoPoints = []+                                 }+                               "cat"))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 25 44 26+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 25 44 26+                                 , srcInfoPoints = []+                                 }+                               "b")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 27 44 28+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 27 44 28+                              , srcInfoPoints = []+                              }+                            "c")))+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 32 44 39+                        , srcInfoPoints = []+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 32 44 37+                           , srcInfoPoints = []+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 32 44 35+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 32 44 35+                                 , srcInfoPoints = []+                                 }+                               "cat"))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 36 44 37+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 36 44 37+                                 , srcInfoPoints = []+                                 }+                               "a")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 38 44 39+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 38 44 39+                              , srcInfoPoints = []+                              }+                            "c"))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 1 45 16+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 1 45 16+                , srcInfoPoints = []+                }+              (PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 1 45 2+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 1 45 2+                      , srcInfoPoints = []+                      }+                    "f"))+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 3 45 6+                   , srcInfoPoints = []+                   }+                 ">>>")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 7 45 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 7 45 8+                       , srcInfoPoints = []+                       }+                     "g")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 9 45 16+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RCategory.hs" 45 9 45 10 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 11 45 16+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 11 45 12+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 11 45 12+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 11 45 12+                               , srcInfoPoints = []+                               }+                             "g")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 13 45 14+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 13 45 14+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 13 45 14+                               , srcInfoPoints = []+                               }+                             ".")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 15 45 16+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 15 45 16+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 15 45 16+                               , srcInfoPoints = []+                               }+                             "f")))))+              Nothing+          ]+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/RCategory.hs" 12 1 12 29)+        " | A class for categories."+    , Comment+        False+        (SrcSpan "tests/examples/RCategory.hs" 13 1 13 36)+        "   id and (.) must form a monoid."+    , Comment+        False+        (SrcSpan "tests/examples/RCategory.hs" 17 3 17 29)+        " | the identity morphism"+    , Comment+        False+        (SrcSpan "tests/examples/RCategory.hs" 21 3 21 28)+        " | morphism composition"+    , Comment+        False+        (SrcSpan "tests/examples/RCategory.hs" 37 1 37 31)+        " | Right-to-left composition"+    , Comment+        False+        (SrcSpan "tests/examples/RCategory.hs" 42 1 42 31)+        " | Left-to-right composition"+    ]+  )
+ tests/examples/RCategory.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory.hs.prettyprinter.golden view
@@ -0,0 +1,41 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds, MultiParamTypeClasses+  #-}+module Control.RCategory where+import qualified Prelude+import GHC.Prim++infixr 9 .++infixr 1 >>>, <<<++class RCategory cat where+        type RCategoryCtxt cat a b :: Constraint+        +        id :: RCategoryCtxt cat a a => cat a a+        +        (.) ::+              (RCategoryCtxt cat b c, RCategoryCtxt cat a b,+               RCategoryCtxt cat a c) =>+              cat b c -> cat a b -> cat a c++{-# RULES+"identity/left" forall p . id . p = p+"identity/right" forall p . p . id = p+ #-}++instance RCategory (->) where+        type RCategoryCtxt (->) a a = ()+        id = Prelude.id+        (.) = (Prelude..)++(<<<) ::+        (RCategoryCtxt cat a c, RCategoryCtxt cat a b,+         RCategoryCtxt cat b c, RCategory cat) =>+        cat b c -> cat a b -> cat a c+(<<<) = (.)++(>>>) ::+        (RCategoryCtxt cat a c, RCategoryCtxt cat a b,+         RCategoryCtxt cat b c, RCategory cat) =>+        cat a b -> cat b c -> cat a c+f >>> g = g . f
+ tests/examples/RCategory2.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds #-}++import GHC.Prim++class RCategory cat where+  type RCategoryCtxt cat a b :: Constraint
+ tests/examples/RCategory2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory2.hs.parser.golden view
@@ -0,0 +1,193 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RCategory2.hs" 1 1 1 1+            , SrcSpan "tests/examples/RCategory2.hs" 3 1 3 1+            , SrcSpan "tests/examples/RCategory2.hs" 3 1 3 1+            , SrcSpan "tests/examples/RCategory2.hs" 3 1 3 1+            , SrcSpan "tests/examples/RCategory2.hs" 5 1 5 1+            , SrcSpan "tests/examples/RCategory2.hs" 7 1 7 1+            , SrcSpan "tests/examples/RCategory2.hs" 7 1 7 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 1 1 1 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory2.hs" 1 1 1 13+                , SrcSpan "tests/examples/RCategory2.hs" 1 26 1 27+                , SrcSpan "tests/examples/RCategory2.hs" 1 44 1 47+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 1 28 1 43+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 3 1 3 16+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/RCategory2.hs" 3 1 3 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 3 8 3 16+                  , srcInfoPoints = []+                  }+                "GHC.Prim"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 1 6 43+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory2.hs" 5 1 5 6+                , SrcSpan "tests/examples/RCategory2.hs" 5 21 5 26+                , SrcSpan "tests/examples/RCategory2.hs" 6 3 6 3+                , SrcSpan "tests/examples/RCategory2.hs" 7 1 7 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 7 5 20+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 7 5 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 7 5 16+                     , srcInfoPoints = []+                     }+                   "RCategory"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 17 5 20+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 17 5 20+                     , srcInfoPoints = []+                     }+                   "cat")))+          []+          (Just+             [ ClsTyFam+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 3 6 43+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RCategory2.hs" 6 3 6 7 ]+                   }+                 (DHApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 29+                      , srcInfoPoints = []+                      }+                    (DHApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 27+                         , srcInfoPoints = []+                         }+                       (DHApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 25+                            , srcInfoPoints = []+                            }+                          (DHead+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 21+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 21+                                  , srcInfoPoints = []+                                  }+                                "RCategoryCtxt"))+                          (UnkindedVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 22 6 25+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 22 6 25+                                  , srcInfoPoints = []+                                  }+                                "cat")))+                       (UnkindedVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 26 6 27+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 26 6 27+                               , srcInfoPoints = []+                               }+                             "a")))+                    (UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 28 6 29+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 28 6 29+                            , srcInfoPoints = []+                            }+                          "b")))+                 (Just+                    (KindSig+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 30 6 43+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/RCategory2.hs" 6 30 6 32 ]+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 33 6 43+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 33 6 43+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 33 6 43+                                  , srcInfoPoints = []+                                  }+                                "Constraint")))))+                 Nothing+             ])+      ]+  , []+  )
+ tests/examples/RCategory2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory2.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds #-}+import GHC.Prim++class RCategory cat where+        type RCategoryCtxt cat a b :: Constraint
+ tests/examples/RCategory3.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds #-}++instance RCategory (->) where+  type RCategoryCtxt (->) a a = ()+
+ tests/examples/RCategory3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory3.hs.parser.golden view
@@ -0,0 +1,222 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RCategory3.hs" 1 1 1 1+            , SrcSpan "tests/examples/RCategory3.hs" 3 1 3 1+            , SrcSpan "tests/examples/RCategory3.hs" 3 1 3 1+            , SrcSpan "tests/examples/RCategory3.hs" 3 1 3 1+            , SrcSpan "tests/examples/RCategory3.hs" 6 1 6 1+            , SrcSpan "tests/examples/RCategory3.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 1 1 1 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory3.hs" 1 1 1 13+                , SrcSpan "tests/examples/RCategory3.hs" 1 26 1 27+                , SrcSpan "tests/examples/RCategory3.hs" 1 44 1 47+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 1 28 1 43+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          ]+      ]+      []+      [ InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 1 6 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RCategory3.hs" 3 1 3 9+                , SrcSpan "tests/examples/RCategory3.hs" 3 25 3 30+                , SrcSpan "tests/examples/RCategory3.hs" 4 3 4 3+                , SrcSpan "tests/examples/RCategory3.hs" 6 1 6 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 24+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 24+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 19+                           , srcInfoPoints = []+                           }+                         "RCategory")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 20 3 24+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RCategory3.hs" 3 20 3 21+                         , SrcSpan "tests/examples/RCategory3.hs" 3 21 3 23+                         , SrcSpan "tests/examples/RCategory3.hs" 3 23 3 24+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 20 3 24+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/RCategory3.hs" 3 20 3 21+                            , SrcSpan "tests/examples/RCategory3.hs" 3 21 3 23+                            , SrcSpan "tests/examples/RCategory3.hs" 3 23 3 24+                            ]+                        }+                      (FunCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 20 3 24+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/RCategory3.hs" 3 20 3 21+                               , SrcSpan "tests/examples/RCategory3.hs" 3 21 3 23+                               , SrcSpan "tests/examples/RCategory3.hs" 3 23 3 24+                               ]+                           })))))+          (Just+             [ InsType+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 3 4 35+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RCategory3.hs" 4 3 4 7+                       , SrcSpan "tests/examples/RCategory3.hs" 4 31 4 32+                       ]+                   }+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 30+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 28+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 26+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 21+                                     , srcInfoPoints = []+                                     }+                                   "RCategoryCtxt")))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 22 4 26+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/RCategory3.hs" 4 22 4 23+                                   , SrcSpan "tests/examples/RCategory3.hs" 4 23 4 25+                                   , SrcSpan "tests/examples/RCategory3.hs" 4 25 4 26+                                   ]+                               }+                             (Special+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 22 4 26+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/RCategory3.hs" 4 22 4 23+                                      , SrcSpan "tests/examples/RCategory3.hs" 4 23 4 25+                                      , SrcSpan "tests/examples/RCategory3.hs" 4 25 4 26+                                      ]+                                  }+                                (FunCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RCategory3.hs" 4 22 4 26+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/RCategory3.hs" 4 22 4 23+                                         , SrcSpan "tests/examples/RCategory3.hs" 4 23 4 25+                                         , SrcSpan "tests/examples/RCategory3.hs" 4 25 4 26+                                         ]+                                     }))))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 27 4 28+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 27 4 28+                               , srcInfoPoints = []+                               }+                             "a")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 29 4 30+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 29 4 30+                            , srcInfoPoints = []+                            }+                          "a")))+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 33 4 35+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RCategory3.hs" 4 33 4 34+                          , SrcSpan "tests/examples/RCategory3.hs" 4 34 4 35+                          ]+                      }+                    (Special+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 33 4 35+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/RCategory3.hs" 4 33 4 34+                             , SrcSpan "tests/examples/RCategory3.hs" 4 34 4 35+                             ]+                         }+                       (UnitCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 33 4 35+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/RCategory3.hs" 4 33 4 34+                                , SrcSpan "tests/examples/RCategory3.hs" 4 34 4 35+                                ]+                            })))+             ])+      ]+  , []+  )
+ tests/examples/RCategory3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory3.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds #-}++instance RCategory (->) where+        type RCategoryCtxt (->) a a = ()
+ tests/examples/ReadP.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE TypeOperators #-}+newtype ReadP a = R (forall b . (a -> P b) -> P b)
+ tests/examples/ReadP.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ReadP.hs.parser.golden view
@@ -0,0 +1,245 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ReadP.hs" 1 1 1 1+            , SrcSpan "tests/examples/ReadP.hs" 2 1 2 1+            , SrcSpan "tests/examples/ReadP.hs" 2 1 2 1+            , SrcSpan "tests/examples/ReadP.hs" 2 1 2 1+            , SrcSpan "tests/examples/ReadP.hs" 3 1 3 1+            , SrcSpan "tests/examples/ReadP.hs" 3 1 3 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ReadP.hs" 1 1 1 13+                , SrcSpan "tests/examples/ReadP.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 1 2 51+            , srcInfoPoints = [ SrcSpan "tests/examples/ReadP.hs" 2 17 2 18 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 1 2 8+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 9 2 16+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 9 2 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 9 2 14+                     , srcInfoPoints = []+                     }+                   "ReadP"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 15 2 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 15 2 16+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 19 2 51+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 19 2 51+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 19 2 20+                      , srcInfoPoints = []+                      }+                    "R")+                 [ TyParen+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 21 2 51+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/ReadP.hs" 2 21 2 22+                           , SrcSpan "tests/examples/ReadP.hs" 2 50 2 51+                           ]+                       }+                     (TyInfix+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 22 2 50+                          , srcInfoPoints = []+                          }+                        (TyApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 22 2 30+                             , srcInfoPoints = []+                             }+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 22 2 28+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 22 2 28+                                   , srcInfoPoints = []+                                   }+                                 "forall"))+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 29 2 30+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 29 2 30+                                   , srcInfoPoints = []+                                   }+                                 "b")))+                        (UnpromotedName+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 31 2 32+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 31 2 32+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 31 2 32+                                   , srcInfoPoints = []+                                   }+                                 ".")))+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 33 2 50+                             , srcInfoPoints = [ SrcSpan "tests/examples/ReadP.hs" 2 44 2 46 ]+                             }+                           (TyParen+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 33 2 43+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/ReadP.hs" 2 33 2 34+                                    , SrcSpan "tests/examples/ReadP.hs" 2 42 2 43+                                    ]+                                }+                              (TyFun+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 34 2 42+                                   , srcInfoPoints = [ SrcSpan "tests/examples/ReadP.hs" 2 36 2 38 ]+                                   }+                                 (TyVar+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 34 2 35+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 34 2 35+                                         , srcInfoPoints = []+                                         }+                                       "a"))+                                 (TyApp+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 39 2 42+                                      , srcInfoPoints = []+                                      }+                                    (TyCon+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 39 2 40+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/ReadP.hs" 2 39 2 40+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/ReadP.hs" 2 39 2 40+                                               , srcInfoPoints = []+                                               }+                                             "P")))+                                    (TyVar+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 41 2 42+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/ReadP.hs" 2 41 2 42+                                            , srcInfoPoints = []+                                            }+                                          "b")))))+                           (TyApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 47 2 50+                                , srcInfoPoints = []+                                }+                              (TyCon+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 47 2 48+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 47 2 48+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 47 2 48+                                         , srcInfoPoints = []+                                         }+                                       "P")))+                              (TyVar+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 49 2 50+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 49 2 50+                                      , srcInfoPoints = []+                                      }+                                    "b")))))+                 ])+          ]+          []+      ]+  , []+  )
+ tests/examples/ReadP.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ReadP.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TypeOperators #-}++newtype ReadP a = R (forall b . (a -> P b) -> P b)
+ tests/examples/RealGHC.lhs view
@@ -0,0 +1,913 @@+%+% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998+%+\section[CoreRules]{Transformation rules}++\begin{code}+{-# OPTIONS -w #-}+{-# LANGUAGE PatternGuards #-}+-- The above warning supression flag is a temporary kludge.+-- While working on this module you are encouraged to remove it and fix+-- any warnings in the module. See+--     http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings+-- for details++-- | Functions for collecting together and applying rewrite rules to a module.+-- The 'CoreRule' datatype itself is declared elsewhere.+module Rules (+    -- * RuleBase+    RuleBase,++    -- ** Constructing+    emptyRuleBase, mkRuleBase, extendRuleBaseList,+    unionRuleBase, pprRuleBase,++    -- ** Checking rule applications+    ruleCheckProgram,++        -- ** Manipulating 'SpecInfo' rules+    mkSpecInfo, extendSpecInfo, addSpecInfo,+    addIdSpecialisations,++    -- * Misc. CoreRule helpers+        rulesOfBinds, getRules, pprRulesForUser,++        lookupRule, mkLocalRule, roughTopNames+    ) where++-- #include "HsVersions.h"++import CoreSyn      -- All of it+import OccurAnal    ( occurAnalyseExpr )+import CoreFVs      ( exprFreeVars, exprsFreeVars, bindFreeVars, rulesFreeVars )+import CoreUtils    ( tcEqExprX, exprType )+import PprCore      ( pprRules )+import Type     ( Type, TvSubstEnv )+import Coercion         ( coercionKind )+import TcType       ( tcSplitTyConApp_maybe )+import CoreTidy     ( tidyRules )+import Id+import IdInfo       ( SpecInfo( SpecInfo ) )+import Var      ( Var )+import VarEnv+import VarSet+import Name     ( Name, NamedThing(..) )+import NameEnv+import Unify        ( ruleMatchTyX, MatchEnv(..) )+import BasicTypes   ( Activation )+import StaticFlags  ( opt_PprStyle_Debug )+import Outputable+import FastString+import Maybes+import OrdList+import Bag+import Util+import Data.List+\end{code}+++%************************************************************************+%*                                  *+\subsection[specialisation-IdInfo]{Specialisation info about an @Id@}+%*                                  *+%************************************************************************++A @CoreRule@ holds details of one rule for an @Id@, which+includes its specialisations.++For example, if a rule for @f@ contains the mapping:+\begin{verbatim}+    forall a b d. [Type (List a), Type b, Var d]  ===>  f' a b+\end{verbatim}+then when we find an application of f to matching types, we simply replace+it by the matching RHS:+\begin{verbatim}+    f (List Int) Bool dict ===>  f' Int Bool+\end{verbatim}+All the stuff about how many dictionaries to discard, and what types+to apply the specialised function to, are handled by the fact that the+Rule contains a template for the result of the specialisation.++There is one more exciting case, which is dealt with in exactly the same+way.  If the specialised value is unboxed then it is lifted at its+definition site and unlifted at its uses.  For example:++    pi :: forall a. Num a => a++might have a specialisation++    [Int#] ===>  (case pi' of Lift pi# -> pi#)++where pi' :: Lift Int# is the specialised version of pi.++\begin{code}+mkLocalRule :: RuleName -> Activation+        -> Name -> [CoreBndr] -> [CoreExpr] -> CoreExpr -> CoreRule+-- ^ Used to make 'CoreRule' for an 'Id' defined in the module being+-- compiled. See also 'CoreSyn.CoreRule'+mkLocalRule name act fn bndrs args rhs+  = Rule { ru_name = name, ru_fn = fn, ru_act = act,+       ru_bndrs = bndrs, ru_args = args,+       ru_rhs = rhs, ru_rough = roughTopNames args,+       ru_local = True }++--------------+roughTopNames :: [CoreExpr] -> [Maybe Name]+-- ^ Find the \"top\" free names of several expressions.+-- Such names are either:+--+-- 1. The function finally being applied to in an application chain+--    (if that name is a GlobalId: see "Var#globalvslocal"), or+--+-- 2. The 'TyCon' if the expression is a 'Type'+--+-- This is used for the fast-match-check for rules;+--  if the top names don't match, the rest can't+roughTopNames args = map roughTopName args++roughTopName :: CoreExpr -> Maybe Name+roughTopName (Type ty) = case tcSplitTyConApp_maybe ty of+              Just (tc,_) -> Just (getName tc)+              Nothing     -> Nothing+roughTopName (App f a) = roughTopName f+roughTopName (Var f) | isGlobalId f = Just (idName f)+             | otherwise    = Nothing+roughTopName other = Nothing++ruleCantMatch :: [Maybe Name] -> [Maybe Name] -> Bool+-- ^ @ruleCantMatch tpl actual@ returns True only if @actual@+-- definitely can't match @tpl@ by instantiating @tpl@.+-- It's only a one-way match; unlike instance matching we+-- don't consider unification.+--+-- Notice that [_$_]+--  @ruleCantMatch [Nothing] [Just n2] = False@+--      Reason: a template variable can be instantiated by a constant+-- Also:+--  @ruleCantMatch [Just n1] [Nothing] = False@+--      Reason: a local variable @v@ in the actuals might [_$_]++ruleCantMatch (Just n1 : ts) (Just n2 : as) = n1 /= n2 || ruleCantMatch ts as+ruleCantMatch (t       : ts) (a       : as) = ruleCantMatch ts as+ruleCantMatch ts         as         = False+\end{code}++\begin{code}+pprRulesForUser :: [CoreRule] -> SDoc+-- (a) tidy the rules+-- (b) sort them into order based on the rule name+-- (c) suppress uniques (unless -dppr-debug is on)+-- This combination makes the output stable so we can use in testing+-- It's here rather than in PprCore because it calls tidyRules+pprRulesForUser rules+  = withPprStyle defaultUserStyle $+    pprRules $+    sortLe le_rule  $+    tidyRules emptyTidyEnv rules+  where+    le_rule r1 r2 = ru_name r1 <= ru_name r2+\end{code}+++%************************************************************************+%*                                  *+        SpecInfo: the rules in an IdInfo+%*                                  *+%************************************************************************++\begin{code}+-- | Make a 'SpecInfo' containing a number of 'CoreRule's, suitable+-- for putting into an 'IdInfo'+mkSpecInfo :: [CoreRule] -> SpecInfo+mkSpecInfo rules = SpecInfo rules (rulesFreeVars rules)++extendSpecInfo :: SpecInfo -> [CoreRule] -> SpecInfo+extendSpecInfo (SpecInfo rs1 fvs1) rs2+  = SpecInfo (rs2 ++ rs1) (rulesFreeVars rs2 `unionVarSet` fvs1)++addSpecInfo :: SpecInfo -> SpecInfo -> SpecInfo+addSpecInfo (SpecInfo rs1 fvs1) (SpecInfo rs2 fvs2)+  = SpecInfo (rs1 ++ rs2) (fvs1 `unionVarSet` fvs2)++addIdSpecialisations :: Id -> [CoreRule] -> Id+addIdSpecialisations id []+  = id+addIdSpecialisations id rules+  = setIdSpecialisation id $+    extendSpecInfo (idSpecialisation id) rules++-- | Gather all the rules for locally bound identifiers from the supplied bindings+rulesOfBinds :: [CoreBind] -> [CoreRule]+rulesOfBinds binds = concatMap (concatMap idCoreRules . bindersOf) binds++getRules :: RuleBase -> Id -> [CoreRule]+    -- The rules for an Id come from two places:+    --  (a) the ones it is born with (idCoreRules fn)+    --  (b) rules added in subsequent modules (extra_rules)+    -- PrimOps, for example, are born with a bunch of rules under (a)+getRules rule_base fn+  | isLocalId fn  = idCoreRules fn+  | otherwise     = WARN( not (isPrimOpId fn) && notNull (idCoreRules fn),+              ppr fn <+> ppr (idCoreRules fn) )+            idCoreRules fn ++ (lookupNameEnv rule_base (idName fn) `orElse` [])+    -- Only PrimOpIds have rules inside themselves, and perhaps more besides+\end{code}+++%************************************************************************+%*                                  *+        RuleBase+%*                                  *+%************************************************************************++\begin{code}+-- | Gathers a collection of 'CoreRule's. Maps (the name of) an 'Id' to its rules+type RuleBase = NameEnv [CoreRule]+    -- The rules are are unordered;+    -- we sort out any overlaps on lookup++emptyRuleBase = emptyNameEnv++mkRuleBase :: [CoreRule] -> RuleBase+mkRuleBase rules = extendRuleBaseList emptyRuleBase rules++extendRuleBaseList :: RuleBase -> [CoreRule] -> RuleBase+extendRuleBaseList rule_base new_guys+  = foldl extendRuleBase rule_base new_guys++unionRuleBase :: RuleBase -> RuleBase -> RuleBase+unionRuleBase rb1 rb2 = plusNameEnv_C (++) rb1 rb2++extendRuleBase :: RuleBase -> CoreRule -> RuleBase+extendRuleBase rule_base rule+  = extendNameEnv_Acc (:) singleton rule_base (ruleIdName rule) rule++pprRuleBase :: RuleBase -> SDoc+pprRuleBase rules = vcat [ pprRules (tidyRules emptyTidyEnv rs)+             | rs <- nameEnvElts rules ]+\end{code}+++%************************************************************************+%*                                  *+\subsection{Matching}+%*                                  *+%************************************************************************++Note [Extra args in rule matching]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+If we find a matching rule, we return (Just (rule, rhs)),+but the rule firing has only consumed as many of the input args+as the ruleArity says.  It's up to the caller to keep track+of any left-over args.  E.g. if you call+    lookupRule ... f [e1, e2, e3]+and it returns Just (r, rhs), where r has ruleArity 2+then the real rewrite is+    f e1 e2 e3 ==> rhs e3++You might think it'd be cleaner for lookupRule to deal with the+leftover arguments, by applying 'rhs' to them, but the main call+in the Simplifier works better as it is.  Reason: the 'args' passed+to lookupRule are the result of a lazy substitution++\begin{code}+-- | The main rule matching function. Attempts to apply all (active)+-- supplied rules to this instance of an application in a given+-- context, returning the rule applied and the resulting expression if+-- successful.+lookupRule :: (Activation -> Bool) -> InScopeSet+        -> Id -> [CoreExpr]+        -> [CoreRule] -> Maybe (CoreRule, CoreExpr)++-- See Note [Extra args in rule matching]+-- See comments on matchRule+lookupRule is_active in_scope fn args rules+  = -- pprTrace "matchRules" (ppr fn <+> ppr rules) $+    case go [] rules of+    []     -> Nothing+    (m:ms) -> Just (findBest (fn,args) m ms)+  where+    rough_args = map roughTopName args++    go :: [(CoreRule,CoreExpr)] -> [CoreRule] -> [(CoreRule,CoreExpr)]+    go ms []           = ms+    go ms (r:rs) = case (matchRule is_active in_scope args rough_args r) of+            Just e  -> go ((r,e):ms) rs+            Nothing -> -- pprTrace "match failed" (ppr r $$ ppr args $$+                   --   ppr [(arg_id, unfoldingTemplate unf) | Var arg_id <- args, let unf = idUnfolding arg_id, isCheapUnfolding unf] )+                   go ms         rs++findBest :: (Id, [CoreExpr])+     -> (CoreRule,CoreExpr) -> [(CoreRule,CoreExpr)] -> (CoreRule,CoreExpr)+-- All these pairs matched the expression+-- Return the pair the the most specific rule+-- The (fn,args) is just for overlap reporting++findBest target (rule,ans)   [] = (rule,ans)+findBest target (rule1,ans1) ((rule2,ans2):prs)+  | rule1 `isMoreSpecific` rule2 = findBest target (rule1,ans1) prs+  | rule2 `isMoreSpecific` rule1 = findBest target (rule2,ans2) prs+  | debugIsOn = let pp_rule rule+                        | opt_PprStyle_Debug = ppr rule+                        | otherwise          = doubleQuotes (ftext (ru_name rule))+                in pprTrace "Rules.findBest: rule overlap (Rule 1 wins)"+                     (vcat [if opt_PprStyle_Debug then+                               ptext (sLit "Expression to match:") <+> ppr fn <+> sep (map ppr args)+                                else empty,+                            ptext (sLit "Rule 1:") <+> pp_rule rule1,+                            ptext (sLit "Rule 2:") <+> pp_rule rule2]) $+                        findBest target (rule1,ans1) prs+  | otherwise = findBest target (rule1,ans1) prs+  where+    (fn,args) = target++isMoreSpecific :: CoreRule -> CoreRule -> Bool+isMoreSpecific (BuiltinRule {}) r2 = True+isMoreSpecific r1 (BuiltinRule {}) = False+isMoreSpecific (Rule { ru_bndrs = bndrs1, ru_args = args1 })+           (Rule { ru_bndrs = bndrs2, ru_args = args2 })+  = isJust (matchN in_scope bndrs2 args2 args1)+  where+   in_scope = mkInScopeSet (mkVarSet bndrs1)+    -- Actually we should probably include the free vars+    -- of rule1's args, but I can't be bothered++noBlackList :: Activation -> Bool+noBlackList act = False     -- Nothing is black listed++matchRule :: (Activation -> Bool) -> InScopeSet+      -> [CoreExpr] -> [Maybe Name]+      -> CoreRule -> Maybe CoreExpr++-- If (matchRule rule args) returns Just (name,rhs)+-- then (f args) matches the rule, and the corresponding+-- rewritten RHS is rhs+--+-- The bndrs and rhs is occurrence-analysed+--+--  Example+--+-- The rule+--  forall f g x. map f (map g x) ==> map (f . g) x+-- is stored+--  CoreRule "map/map"+--       [f,g,x]        -- tpl_vars+--       [f,map g x]        -- tpl_args+--       map (f.g) x)       -- rhs+--+-- Then the call: matchRule the_rule [e1,map e2 e3]+--    = Just ("map/map", (\f,g,x -> rhs) e1 e2 e3)+--+-- Any 'surplus' arguments in the input are simply put on the end+-- of the output.++matchRule is_active in_scope args rough_args+      (BuiltinRule { ru_name = name, ru_try = match_fn })+  = case match_fn args of+    Just expr -> Just expr+    Nothing   -> Nothing++matchRule is_active in_scope args rough_args+          (Rule { ru_name = rn, ru_act = act, ru_rough = tpl_tops,+          ru_bndrs = tpl_vars, ru_args = tpl_args,+          ru_rhs = rhs })+  | not (is_active act)           = Nothing+  | ruleCantMatch tpl_tops rough_args = Nothing+  | otherwise+  = case matchN in_scope tpl_vars tpl_args args of+    Nothing            -> Nothing+    Just (binds, tpl_vals) -> Just (mkLets binds $+                    rule_fn `mkApps` tpl_vals)+  where+    rule_fn = occurAnalyseExpr (mkLams tpl_vars rhs)+    -- We could do this when putting things into the rulebase, I guess+\end{code}++\begin{code}+-- For a given match template and context, find bindings to wrap around+-- the entire result and what should be substituted for each template variable.+-- Fail if there are two few actual arguments from the target to match the template+matchN  :: InScopeSet           -- ^ In-scope variables+    -> [Var]        -- ^ Match template type variables+    -> [CoreExpr]       -- ^ Match template+    -> [CoreExpr]       -- ^ Target; can have more elements than the template+    -> Maybe ([CoreBind],+          [CoreExpr])++matchN in_scope tmpl_vars tmpl_es target_es+  = do  { (tv_subst, id_subst, binds)+        <- go init_menv emptySubstEnv tmpl_es target_es+    ; return (fromOL binds,+          map (lookup_tmpl tv_subst id_subst) tmpl_vars') }+  where+    (init_rn_env, tmpl_vars') = mapAccumL rnBndrL (mkRnEnv2 in_scope) tmpl_vars+    -- See Note [Template binders]++    init_menv = ME { me_tmpls = mkVarSet tmpl_vars', me_env = init_rn_env }++    go menv subst []     es     = Just subst+    go menv subst ts     []     = Nothing   -- Fail if too few actual args+    go menv subst (t:ts) (e:es) = do { subst1 <- match menv subst t e+                     ; go menv subst1 ts es }++    lookup_tmpl :: TvSubstEnv -> IdSubstEnv -> Var -> CoreExpr+    lookup_tmpl tv_subst id_subst tmpl_var'+        | isTyVar tmpl_var' = case lookupVarEnv tv_subst tmpl_var' of+                Just ty     -> Type ty+                Nothing     -> unbound tmpl_var'+        | otherwise     = case lookupVarEnv id_subst tmpl_var' of+                Just e -> e+                other  -> unbound tmpl_var'++    unbound var = pprPanic "Template variable unbound in rewrite rule"+            (ppr var $$ ppr tmpl_vars $$ ppr tmpl_vars' $$ ppr tmpl_es $$ ppr target_es)+\end{code}++Note [Template binders]+~~~~~~~~~~~~~~~~~~~~~~~+Consider the following match:+    Template:  forall x.  f x+    Target:     f (x+1)+This should succeed, because the template variable 'x' has+nothing to do with the 'x' in the target.++On reflection, this case probably does just work, but this might not+    Template:  forall x. f (\x.x)+    Target:    f (\y.y)+Here we want to clone when we find the \x, but to know that x must be in scope++To achive this, we use rnBndrL to rename the template variables if+necessary; the renamed ones are the tmpl_vars'+++    ---------------------------------------------+        The inner workings of matching+    ---------------------------------------------++\begin{code}+-- These two definitions are not the same as in Subst,+-- but they simple and direct, and purely local to this module+--+-- * The domain of the TvSubstEnv and IdSubstEnv are the template+--   variables passed into the match.+--+-- * The (OrdList CoreBind) in a SubstEnv are the bindings floated out+--   from nested matches; see the Let case of match, below+--+type SubstEnv   = (TvSubstEnv, IdSubstEnv, OrdList CoreBind)+type IdSubstEnv = IdEnv CoreExpr++emptySubstEnv :: SubstEnv+emptySubstEnv = (emptyVarEnv, emptyVarEnv, nilOL)+++--  At one stage I tried to match even if there are more+--  template args than real args.++--  I now think this is probably a bad idea.+--  Should the template (map f xs) match (map g)?  I think not.+--  For a start, in general eta expansion wastes work.+--  SLPJ July 99+++match :: MatchEnv+      -> SubstEnv+      -> CoreExpr       -- Template+      -> CoreExpr       -- Target+      -> Maybe SubstEnv++-- See the notes with Unify.match, which matches types+-- Everything is very similar for terms++-- Interesting examples:+-- Consider matching+--  \x->f      against    \f->f+-- When we meet the lambdas we must remember to rename f to f' in the+-- second expresion.  The RnEnv2 does that.+--+-- Consider matching+--  forall a. \b->b    against   \a->3+-- We must rename the \a.  Otherwise when we meet the lambdas we+-- might substitute [a/b] in the template, and then erroneously+-- succeed in matching what looks like the template variable 'a' against 3.++-- The Var case follows closely what happens in Unify.match+match menv subst (Var v1) e2+  | Just subst <- match_var menv subst v1 e2+  = Just subst++match menv subst e1 (Note n e2)+  = match menv subst e1 e2+    -- Note [Notes in RULE matching]+    -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+    -- Look through Notes.  In particular, we don't want to+    -- be confused by InlineMe notes.  Maybe we should be more+    -- careful about profiling notes, but for now I'm just+    -- riding roughshod over them.+    --- See Note [Notes in call patterns] in SpecConstr++-- Here is another important rule: if the term being matched is a+-- variable, we expand it so long as its unfolding is a WHNF+-- (Its occurrence information is not necessarily up to date,+--  so we don't use it.)+match menv subst e1 (Var v2)+  | isCheapUnfolding unfolding+  = match menv subst e1 (unfoldingTemplate unfolding)+  where+    rn_env    = me_env menv+    unfolding = idUnfolding (lookupRnInScope rn_env (rnOccR rn_env v2))+    -- Notice that we look up v2 in the in-scope set+    -- See Note [Lookup in-scope]+    -- Remember to apply any renaming first (hence rnOccR)++-- Note [Matching lets]+-- ~~~~~~~~~~~~~~~~~~~~+-- Matching a let-expression.  Consider+--  RULE forall x.  f (g x) = <rhs>+-- and target expression+--  f (let { w=R } in g E))+-- Then we'd like the rule to match, to generate+--  let { w=R } in (\x. <rhs>) E+-- In effect, we want to float the let-binding outward, to enable+-- the match to happen.  This is the WHOLE REASON for accumulating+-- bindings in the SubstEnv+--+-- We can only do this if+--  (a) Widening the scope of w does not capture any variables+--      We use a conservative test: w is not already in scope+--      If not, we clone the binders, and substitute+--  (b) The free variables of R are not bound by the part of the+--      target expression outside the let binding; e.g.+--      f (\v. let w = v+1 in g E)+--      Here we obviously cannot float the let-binding for w.+--+-- You may think rule (a) would never apply, because rule matching is+-- mostly invoked from the simplifier, when we have just run substExpr+-- over the argument, so there will be no shadowing anyway.+-- The fly in the ointment is that the forall'd variables of the+-- RULE itself are considered in scope.+--+-- I though of various cheapo ways to solve this tiresome problem,+-- but ended up doing the straightforward thing, which is to+-- clone the binders if they are in scope.  It's tiresome, and+-- potentially inefficient, because of the calls to substExpr,+-- but I don't think it'll happen much in pracice.++{-  Cases to think about+    (let x=y+1 in \x. (x,x))+        --> let x=y+1 in (\x1. (x1,x1))+    (\x. let x = y+1 in (x,x))+        --> let x1 = y+1 in (\x. (x1,x1)+    (let x=y+1 in (x,x), let x=y-1 in (x,x))+        --> let x=y+1 in let x1=y-1 in ((x,x),(x1,x1))++Watch out!+    (let x=y+1 in let z=x+1 in (z,z)+        --> matches (p,p) but watch out that the use of+            x on z's rhs is OK!+I'm removing the cloning because that makes the above case+fail, because the inner let looks as if it has locally-bound vars -}++match menv subst@(tv_subst, id_subst, binds) e1 (Let bind e2)+  | all freshly_bound bndrs,+    not (any locally_bound bind_fvs)+  = match (menv { me_env = rn_env' })+      (tv_subst, id_subst, binds `snocOL` bind')+      e1 e2'+  where+    rn_env   = me_env menv+    bndrs    = bindersOf  bind+    bind_fvs = varSetElems (bindFreeVars bind)+    locally_bound x   = inRnEnvR rn_env x+    freshly_bound x = not (x `rnInScope` rn_env)+    bind' = bind+    e2'   = e2+    rn_env' = extendRnInScopeList rn_env bndrs+{-+    (rn_env', bndrs') = mapAccumL rnBndrR rn_env bndrs+    s_prs = [(bndr, Var bndr') | (bndr,bndr') <- zip bndrs bndrs', bndr /= bndr']+    subst = mkSubst (rnInScopeSet rn_env) emptyVarEnv (mkVarEnv s_prs)+    (bind', e2') | null s_prs = (bind,   e2)+         | otherwise  = (s_bind, substExpr subst e2)+    s_bind = case bind of+        NonRec {} -> NonRec (head bndrs') (head rhss)+        Rec {}    -> Rec (bndrs' `zip` map (substExpr subst) rhss)+-}++match menv subst (Lit lit1) (Lit lit2)+  | lit1 == lit2+  = Just subst++match menv subst (App f1 a1) (App f2 a2)+  = do  { subst' <- match menv subst f1 f2+    ; match menv subst' a1 a2 }++match menv subst (Lam x1 e1) (Lam x2 e2)+  = match menv' subst e1 e2+  where+    menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }++-- This rule does eta expansion+--      (\x.M)  ~  N    iff M  ~  N x+-- It's important that this is *after* the let rule,+-- so that  (\x.M)  ~  (let y = e in \y.N)+-- does the let thing, and then gets the lam/lam rule above+match menv subst (Lam x1 e1) e2+  = match menv' subst e1 (App e2 (varToCoreExpr new_x))+  where+    (rn_env', new_x) = rnBndrL (me_env menv) x1+    menv' = menv { me_env = rn_env' }++-- Eta expansion the other way+--  M  ~  (\y.N)    iff   M y     ~  N+match menv subst e1 (Lam x2 e2)+  = match menv' subst (App e1 (varToCoreExpr new_x)) e2+  where+    (rn_env', new_x) = rnBndrR (me_env menv) x2+    menv' = menv { me_env = rn_env' }++match menv subst (Case e1 x1 ty1 alts1) (Case e2 x2 ty2 alts2)+  = do  { subst1 <- match_ty menv subst ty1 ty2+    ; subst2 <- match menv subst1 e1 e2+    ; let menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }+    ; match_alts menv' subst2 alts1 alts2   -- Alts are both sorted+    }++match menv subst (Type ty1) (Type ty2)+  = match_ty menv subst ty1 ty2++match menv subst (Cast e1 co1) (Cast e2 co2)+  = do  { subst1 <- match_ty menv subst co1 co2+    ; match menv subst1 e1 e2 }++{-  REMOVING OLD CODE: I think that the above handling for let is+               better than the stuff here, which looks+               pretty suspicious to me.  SLPJ Sept 06+-- This is an interesting rule: we simply ignore lets in the+-- term being matched against!  The unfolding inside it is (by assumption)+-- already inside any occurrences of the bound variables, so we'll expand+-- them when we encounter them.  This gives a chance of matching+--  forall x,y.  f (g (x,y))+-- against+--  f (let v = (a,b) in g v)++match menv subst e1 (Let bind e2)+  = match (menv { me_env = rn_env' }) subst e1 e2+  where+    (rn_env', _bndrs') = mapAccumL rnBndrR (me_env menv) (bindersOf bind)+    -- It's important to do this renaming, so that the bndrs+    -- are brought into the local scope. For example:+    -- Matching+    --  forall f,x,xs. f (x:xs)+    --   against+    --  f (let y = e in (y:[]))+    -- We must not get success with x->y!  So we record that y is+    -- locally bound (with rnBndrR), and proceed.  The Var case+    -- will fail when trying to bind x->y+-}++-- Everything else fails+match menv subst e1 e2 = -- pprTrace "Failing at" ((text "e1:" <+> ppr e1) $$ (text "e2:" <+> ppr e2)) $+             Nothing++------------------------------------------+match_var :: MatchEnv+          -> SubstEnv+          -> Var        -- Template+          -> CoreExpr       -- Target+          -> Maybe SubstEnv+match_var menv subst@(tv_subst, id_subst, binds) v1 e2+  | v1' `elemVarSet` me_tmpls menv+  = case lookupVarEnv id_subst v1' of+    Nothing | any (inRnEnvR rn_env) (varSetElems (exprFreeVars e2))+        -> Nothing  -- Occurs check failure+        -- e.g. match forall a. (\x-> a x) against (\y. y y)++        | otherwise -- No renaming to do on e2, because no free var+                -- of e2 is in the rnEnvR of the envt+        -- Note [Matching variable types]+        -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+        -- However, we must match the *types*; e.g.+        --   forall (c::Char->Int) (x::Char).+        --  f (c x) = "RULE FIRED"+        -- We must only match on args that have the right type+        -- It's actually quite difficult to come up with an example that shows+        -- you need type matching, esp since matching is left-to-right, so type+        -- args get matched first.  But it's possible (e.g. simplrun008) and+        -- this is the Right Thing to do+        -> do   { tv_subst' <- Unify.ruleMatchTyX menv tv_subst (idType v1') (exprType e2)+                        -- c.f. match_ty below+            ; return (tv_subst', extendVarEnv id_subst v1' e2, binds) }++    Just e1' | tcEqExprX (nukeRnEnvL rn_env) e1' e2+         -> Just subst++         | otherwise+         -> Nothing++  | otherwise   -- v1 is not a template variable; check for an exact match with e2+  = case e2 of+       Var v2 | v1' == rnOccR rn_env v2 -> Just subst+       other                -> Nothing++  where+    rn_env = me_env menv+    v1'    = rnOccL rn_env v1+    -- If the template is+    --  forall x. f x (\x -> x) = ...+    -- Then the x inside the lambda isn't the+    -- template x, so we must rename first!+++------------------------------------------+match_alts :: MatchEnv+      -> SubstEnv+      -> [CoreAlt]      -- Template+      -> [CoreAlt]      -- Target+      -> Maybe SubstEnv+match_alts menv subst [] []+  = return subst+match_alts menv subst ((c1,vs1,r1):alts1) ((c2,vs2,r2):alts2)+  | c1 == c2+  = do  { subst1 <- match menv' subst r1 r2+    ; match_alts menv subst1 alts1 alts2 }+  where+    menv' :: MatchEnv+    menv' = menv { me_env = rnBndrs2 (me_env menv) vs1 vs2 }++match_alts menv subst alts1 alts2+  = Nothing+\end{code}++Matching Core types: use the matcher in TcType.+Notice that we treat newtypes as opaque.  For example, suppose+we have a specialised version of a function at a newtype, say+    newtype T = MkT Int+We only want to replace (f T) with f', not (f Int).++\begin{code}+------------------------------------------+match_ty :: MatchEnv+         -> SubstEnv+         -> Type        -- Template+         -> Type        -- Target+         -> Maybe SubstEnv+match_ty menv (tv_subst, id_subst, binds) ty1 ty2+  = do  { tv_subst' <- Unify.ruleMatchTyX menv tv_subst ty1 ty2+    ; return (tv_subst', id_subst, binds) }+\end{code}+++Note [Lookup in-scope]+~~~~~~~~~~~~~~~~~~~~~~+Consider this example+    foo :: Int -> Maybe Int -> Int+    foo 0 (Just n) = n+    foo m (Just n) = foo (m-n) (Just n)++SpecConstr sees this fragment:++    case w_smT of wild_Xf [Just A] {+      Data.Maybe.Nothing -> lvl_smf;+      Data.Maybe.Just n_acT [Just S(L)] ->+        case n_acT of wild1_ams [Just A] { GHC.Base.I# y_amr [Just L] ->+        \$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf+        }};++and correctly generates the rule++    RULES: "SC:$wfoo1" [0] __forall {y_amr [Just L] :: GHC.Prim.Int#+                      sc_snn :: GHC.Prim.Int#}+      \$wfoo_smW sc_snn (Data.Maybe.Just @ GHC.Base.Int (GHC.Base.I# y_amr))+      = \$s\$wfoo_sno y_amr sc_snn ;]++BUT we must ensure that this rule matches in the original function!+Note that the call to \$wfoo is+        \$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf++During matching we expand wild_Xf to (Just n_acT).  But then we must also+expand n_acT to (I# y_amr).  And we can only do that if we look up n_acT+in the in-scope set, because in wild_Xf's unfolding it won't have an unfolding+at all.++That is why the 'lookupRnInScope' call in the (Var v2) case of 'match'+is so important.+++%************************************************************************+%*                                  *+\subsection{Checking a program for failing rule applications}+%*                                  *+%************************************************************************++-----------------------------------------------------+            Game plan+-----------------------------------------------------++We want to know what sites have rules that could have fired but didn't.+This pass runs over the tree (without changing it) and reports such.++\begin{code}+-- | Report partial matches for rules beginning with the specified+-- string for the purposes of error reporting+ruleCheckProgram :: (Activation -> Bool)    -- ^ Rule activation test+                 -> String                      -- ^ Rule pattern+                 -> RuleBase                    -- ^ Database of rules+                 -> [CoreBind]                  -- ^ Bindings to check in+                 -> SDoc                        -- ^ Resulting check message+ruleCheckProgram is_active rule_pat rule_base binds+  | isEmptyBag results+  = text "Rule check results: no rule application sites"+  | otherwise+  = vcat [text "Rule check results:",+      line,+      vcat [ p $$ line | p <- bagToList results ]+     ]+  where+    results = unionManyBags (map (ruleCheckBind (RuleCheckEnv is_active rule_pat rule_base)) binds)+    line = text (replicate 20 '-')++data RuleCheckEnv = RuleCheckEnv {+    rc_is_active :: Activation -> Bool,+    rc_pattern :: String,+    rc_rule_base :: RuleBase+}++ruleCheckBind :: RuleCheckEnv -> CoreBind -> Bag SDoc+   -- The Bag returned has one SDoc for each call site found+ruleCheckBind env (NonRec b r) = ruleCheck env r+ruleCheckBind env (Rec prs)    = unionManyBags [ruleCheck env r | (b,r) <- prs]++ruleCheck :: RuleCheckEnv -> CoreExpr -> Bag SDoc+ruleCheck env (Var v)       = emptyBag+ruleCheck env (Lit l)       = emptyBag+ruleCheck env (Type ty)     = emptyBag+ruleCheck env (App f a)     = ruleCheckApp env (App f a) []+ruleCheck env (Note n e)    = ruleCheck env e+ruleCheck env (Cast e co)   = ruleCheck env e+ruleCheck env (Let bd e)    = ruleCheckBind env bd `unionBags` ruleCheck env e+ruleCheck env (Lam b e)     = ruleCheck env e+ruleCheck env (Case e _ _ as) = ruleCheck env e `unionBags`+                    unionManyBags [ruleCheck env r | (_,_,r) <- as]++ruleCheckApp env (App f a) as = ruleCheck env a `unionBags` ruleCheckApp env f (a:as)+ruleCheckApp env (Var f) as   = ruleCheckFun env f as+ruleCheckApp env other as     = ruleCheck env other+\end{code}++\begin{code}+ruleCheckFun :: RuleCheckEnv -> Id -> [CoreExpr] -> Bag SDoc+-- Produce a report for all rules matching the predicate+-- saying why it doesn't match the specified application++ruleCheckFun env fn args+  | null name_match_rules = emptyBag+  | otherwise         = unitBag (ruleAppCheck_help (rc_is_active env) fn args name_match_rules)+  where+    name_match_rules = filter match (getRules (rc_rule_base env) fn)+    match rule = (rc_pattern env) `isPrefixOf` unpackFS (ruleName rule)++ruleAppCheck_help :: (Activation -> Bool) -> Id -> [CoreExpr] -> [CoreRule] -> SDoc+ruleAppCheck_help is_active fn args rules+  =     -- The rules match the pattern, so we want to print something+    vcat [text "Expression:" <+> ppr (mkApps (Var fn) args),+      vcat (map check_rule rules)]+  where+    n_args = length args+    i_args = args `zip` [1::Int ..]+    rough_args = map roughTopName args++    check_rule rule = rule_herald rule <> colon <+> rule_info rule++    rule_herald (BuiltinRule { ru_name = name })+        = ptext (sLit "Builtin rule") <+> doubleQuotes (ftext name)+    rule_herald (Rule { ru_name = name })+        = ptext (sLit "Rule") <+> doubleQuotes (ftext name)++    rule_info rule+        | Just _ <- matchRule noBlackList emptyInScopeSet args rough_args rule+            = text "matches (which is very peculiar!)"++    rule_info (BuiltinRule {}) = text "does not match"++    rule_info (Rule { ru_name = name, ru_act = act,+                      ru_bndrs = rule_bndrs, ru_args = rule_args})+        | not (is_active act)    = text "active only in later phase"+        | n_args < n_rule_args        = text "too few arguments"+        | n_mismatches == n_rule_args = text "no arguments match"+        | n_mismatches == 0       = text "all arguments match (considered individually), but rule as a whole does not"+        | otherwise           = text "arguments" <+> ppr mismatches <+> text "do not match (1-indexing)"+        where+          n_rule_args  = length rule_args+          n_mismatches = length mismatches+          mismatches   = [i | (rule_arg, (arg,i)) <- rule_args `zip` i_args,+                                  not (isJust (match_fn rule_arg arg))]++          lhs_fvs = exprsFreeVars rule_args -- Includes template tyvars+          match_fn rule_arg arg = match menv emptySubstEnv rule_arg arg+            where+              in_scope = lhs_fvs `unionVarSet` exprFreeVars arg+              menv = ME { me_env   = mkRnEnv2 (mkInScopeSet in_scope)+                        , me_tmpls = mkVarSet rule_bndrs }+\end{code}+
+ tests/examples/RealGHC.lhs.exactprinter.golden view
@@ -0,0 +1,915 @@+++++++{-# OPTIONS -w #-}+{-# LANGUAGE PatternGuards #-}+-- The above warning supression flag is a temporary kludge.+-- While working on this module you are encouraged to remove it and fix+-- any warnings in the module. See+--     http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings+-- for details++-- | Functions for collecting together and applying rewrite rules to a module.+-- The 'CoreRule' datatype itself is declared elsewhere.+module Rules (+    -- * RuleBase+    RuleBase,++    -- ** Constructing+    emptyRuleBase, mkRuleBase, extendRuleBaseList,+    unionRuleBase, pprRuleBase,++    -- ** Checking rule applications+    ruleCheckProgram,++        -- ** Manipulating 'SpecInfo' rules+    mkSpecInfo, extendSpecInfo, addSpecInfo,+    addIdSpecialisations,++    -- * Misc. CoreRule helpers+        rulesOfBinds, getRules, pprRulesForUser,++        lookupRule, mkLocalRule, roughTopNames+    ) where++-- #include "HsVersions.h"++import CoreSyn      -- All of it+import OccurAnal    ( occurAnalyseExpr )+import CoreFVs      ( exprFreeVars, exprsFreeVars, bindFreeVars, rulesFreeVars )+import CoreUtils    ( tcEqExprX, exprType )+import PprCore      ( pprRules )+import Type     ( Type, TvSubstEnv )+import Coercion         ( coercionKind )+import TcType       ( tcSplitTyConApp_maybe )+import CoreTidy     ( tidyRules )+import Id+import IdInfo       ( SpecInfo( SpecInfo ) )+import Var      ( Var )+import VarEnv+import VarSet+import Name     ( Name, NamedThing(..) )+import NameEnv+import Unify        ( ruleMatchTyX, MatchEnv(..) )+import BasicTypes   ( Activation )+import StaticFlags  ( opt_PprStyle_Debug )+import Outputable+import FastString+import Maybes+import OrdList+import Bag+import Util+import Data.List+++++++++++++++++++++++++++++++++++++++mkLocalRule :: RuleName -> Activation+        -> Name -> [CoreBndr] -> [CoreExpr] -> CoreExpr -> CoreRule+-- ^ Used to make 'CoreRule' for an 'Id' defined in the module being+-- compiled. See also 'CoreSyn.CoreRule'+mkLocalRule name act fn bndrs args rhs+  = Rule { ru_name = name, ru_fn = fn, ru_act = act,+       ru_bndrs = bndrs, ru_args = args,+       ru_rhs = rhs, ru_rough = roughTopNames args,+       ru_local = True }++--------------+roughTopNames :: [CoreExpr] -> [Maybe Name]+-- ^ Find the \"top\" free names of several expressions.+-- Such names are either:+--+-- 1. The function finally being applied to in an application chain+--    (if that name is a GlobalId: see "Var#globalvslocal"), or+--+-- 2. The 'TyCon' if the expression is a 'Type'+--+-- This is used for the fast-match-check for rules;+--  if the top names don't match, the rest can't+roughTopNames args = map roughTopName args++roughTopName :: CoreExpr -> Maybe Name+roughTopName (Type ty) = case tcSplitTyConApp_maybe ty of+              Just (tc,_) -> Just (getName tc)+              Nothing     -> Nothing+roughTopName (App f a) = roughTopName f+roughTopName (Var f) | isGlobalId f = Just (idName f)+             | otherwise    = Nothing+roughTopName other = Nothing++ruleCantMatch :: [Maybe Name] -> [Maybe Name] -> Bool+-- ^ @ruleCantMatch tpl actual@ returns True only if @actual@+-- definitely can't match @tpl@ by instantiating @tpl@.+-- It's only a one-way match; unlike instance matching we+-- don't consider unification.+--+-- Notice that [_$_]+--  @ruleCantMatch [Nothing] [Just n2] = False@+--      Reason: a template variable can be instantiated by a constant+-- Also:+--  @ruleCantMatch [Just n1] [Nothing] = False@+--      Reason: a local variable @v@ in the actuals might [_$_]++ruleCantMatch (Just n1 : ts) (Just n2 : as) = n1 /= n2 || ruleCantMatch ts as+ruleCantMatch (t       : ts) (a       : as) = ruleCantMatch ts as+ruleCantMatch ts         as         = False++++pprRulesForUser :: [CoreRule] -> SDoc+-- (a) tidy the rules+-- (b) sort them into order based on the rule name+-- (c) suppress uniques (unless -dppr-debug is on)+-- This combination makes the output stable so we can use in testing+-- It's here rather than in PprCore because it calls tidyRules+pprRulesForUser rules+  = withPprStyle defaultUserStyle $+    pprRules $+    sortLe le_rule  $+    tidyRules emptyTidyEnv rules+  where+    le_rule r1 r2 = ru_name r1 <= ru_name r2+++++++++++-- | Make a 'SpecInfo' containing a number of 'CoreRule's, suitable+-- for putting into an 'IdInfo'+mkSpecInfo :: [CoreRule] -> SpecInfo+mkSpecInfo rules = SpecInfo rules (rulesFreeVars rules)++extendSpecInfo :: SpecInfo -> [CoreRule] -> SpecInfo+extendSpecInfo (SpecInfo rs1 fvs1) rs2+  = SpecInfo (rs2 ++ rs1) (rulesFreeVars rs2 `unionVarSet` fvs1)++addSpecInfo :: SpecInfo -> SpecInfo -> SpecInfo+addSpecInfo (SpecInfo rs1 fvs1) (SpecInfo rs2 fvs2)+  = SpecInfo (rs1 ++ rs2) (fvs1 `unionVarSet` fvs2)++addIdSpecialisations :: Id -> [CoreRule] -> Id+addIdSpecialisations id []+  = id+addIdSpecialisations id rules+  = setIdSpecialisation id $+    extendSpecInfo (idSpecialisation id) rules++-- | Gather all the rules for locally bound identifiers from the supplied bindings+rulesOfBinds :: [CoreBind] -> [CoreRule]+rulesOfBinds binds = concatMap (concatMap idCoreRules . bindersOf) binds++getRules :: RuleBase -> Id -> [CoreRule]+    -- The rules for an Id come from two places:+    --  (a) the ones it is born with (idCoreRules fn)+    --  (b) rules added in subsequent modules (extra_rules)+    -- PrimOps, for example, are born with a bunch of rules under (a)+getRules rule_base fn+  | isLocalId fn  = idCoreRules fn+  | otherwise     = WARN( not (isPrimOpId fn) && notNull (idCoreRules fn),+              ppr fn <+> ppr (idCoreRules fn) )+            idCoreRules fn ++ (lookupNameEnv rule_base (idName fn) `orElse` [])+    -- Only PrimOpIds have rules inside themselves, and perhaps more besides+++++++++++-- | Gathers a collection of 'CoreRule's. Maps (the name of) an 'Id' to its rules+type RuleBase = NameEnv [CoreRule]+    -- The rules are are unordered;+    -- we sort out any overlaps on lookup++emptyRuleBase = emptyNameEnv++mkRuleBase :: [CoreRule] -> RuleBase+mkRuleBase rules = extendRuleBaseList emptyRuleBase rules++extendRuleBaseList :: RuleBase -> [CoreRule] -> RuleBase+extendRuleBaseList rule_base new_guys+  = foldl extendRuleBase rule_base new_guys++unionRuleBase :: RuleBase -> RuleBase -> RuleBase+unionRuleBase rb1 rb2 = plusNameEnv_C (++) rb1 rb2++extendRuleBase :: RuleBase -> CoreRule -> RuleBase+extendRuleBase rule_base rule+  = extendNameEnv_Acc (:) singleton rule_base (ruleIdName rule) rule++pprRuleBase :: RuleBase -> SDoc+pprRuleBase rules = vcat [ pprRules (tidyRules emptyTidyEnv rs)+             | rs <- nameEnvElts rules ]+++++++++++++++++++++++++++-- | The main rule matching function. Attempts to apply all (active)+-- supplied rules to this instance of an application in a given+-- context, returning the rule applied and the resulting expression if+-- successful.+lookupRule :: (Activation -> Bool) -> InScopeSet+        -> Id -> [CoreExpr]+        -> [CoreRule] -> Maybe (CoreRule, CoreExpr)++-- See Note [Extra args in rule matching]+-- See comments on matchRule+lookupRule is_active in_scope fn args rules+  = -- pprTrace "matchRules" (ppr fn <+> ppr rules) $+    case go [] rules of+    []     -> Nothing+    (m:ms) -> Just (findBest (fn,args) m ms)+  where+    rough_args = map roughTopName args++    go :: [(CoreRule,CoreExpr)] -> [CoreRule] -> [(CoreRule,CoreExpr)]+    go ms []           = ms+    go ms (r:rs) = case (matchRule is_active in_scope args rough_args r) of+            Just e  -> go ((r,e):ms) rs+            Nothing -> -- pprTrace "match failed" (ppr r $$ ppr args $$+                   --   ppr [(arg_id, unfoldingTemplate unf) | Var arg_id <- args, let unf = idUnfolding arg_id, isCheapUnfolding unf] )+                   go ms         rs++findBest :: (Id, [CoreExpr])+     -> (CoreRule,CoreExpr) -> [(CoreRule,CoreExpr)] -> (CoreRule,CoreExpr)+-- All these pairs matched the expression+-- Return the pair the the most specific rule+-- The (fn,args) is just for overlap reporting++findBest target (rule,ans)   [] = (rule,ans)+findBest target (rule1,ans1) ((rule2,ans2):prs)+  | rule1 `isMoreSpecific` rule2 = findBest target (rule1,ans1) prs+  | rule2 `isMoreSpecific` rule1 = findBest target (rule2,ans2) prs+  | debugIsOn = let pp_rule rule+                        | opt_PprStyle_Debug = ppr rule+                        | otherwise          = doubleQuotes (ftext (ru_name rule))+                in pprTrace "Rules.findBest: rule overlap (Rule 1 wins)"+                     (vcat [if opt_PprStyle_Debug then+                               ptext (sLit "Expression to match:") <+> ppr fn <+> sep (map ppr args)+                                else empty,+                            ptext (sLit "Rule 1:") <+> pp_rule rule1,+                            ptext (sLit "Rule 2:") <+> pp_rule rule2]) $+                        findBest target (rule1,ans1) prs+  | otherwise = findBest target (rule1,ans1) prs+  where+    (fn,args) = target++isMoreSpecific :: CoreRule -> CoreRule -> Bool+isMoreSpecific (BuiltinRule {}) r2 = True+isMoreSpecific r1 (BuiltinRule {}) = False+isMoreSpecific (Rule { ru_bndrs = bndrs1, ru_args = args1 })+           (Rule { ru_bndrs = bndrs2, ru_args = args2 })+  = isJust (matchN in_scope bndrs2 args2 args1)+  where+   in_scope = mkInScopeSet (mkVarSet bndrs1)+    -- Actually we should probably include the free vars+    -- of rule1's args, but I can't be bothered++noBlackList :: Activation -> Bool+noBlackList act = False     -- Nothing is black listed++matchRule :: (Activation -> Bool) -> InScopeSet+      -> [CoreExpr] -> [Maybe Name]+      -> CoreRule -> Maybe CoreExpr++-- If (matchRule rule args) returns Just (name,rhs)+-- then (f args) matches the rule, and the corresponding+-- rewritten RHS is rhs+--+-- The bndrs and rhs is occurrence-analysed+--+--  Example+--+-- The rule+--  forall f g x. map f (map g x) ==> map (f . g) x+-- is stored+--  CoreRule "map/map"+--       [f,g,x]        -- tpl_vars+--       [f,map g x]        -- tpl_args+--       map (f.g) x)       -- rhs+--+-- Then the call: matchRule the_rule [e1,map e2 e3]+--    = Just ("map/map", (\f,g,x -> rhs) e1 e2 e3)+--+-- Any 'surplus' arguments in the input are simply put on the end+-- of the output.++matchRule is_active in_scope args rough_args+      (BuiltinRule { ru_name = name, ru_try = match_fn })+  = case match_fn args of+    Just expr -> Just expr+    Nothing   -> Nothing++matchRule is_active in_scope args rough_args+          (Rule { ru_name = rn, ru_act = act, ru_rough = tpl_tops,+          ru_bndrs = tpl_vars, ru_args = tpl_args,+          ru_rhs = rhs })+  | not (is_active act)           = Nothing+  | ruleCantMatch tpl_tops rough_args = Nothing+  | otherwise+  = case matchN in_scope tpl_vars tpl_args args of+    Nothing            -> Nothing+    Just (binds, tpl_vals) -> Just (mkLets binds $+                    rule_fn `mkApps` tpl_vals)+  where+    rule_fn = occurAnalyseExpr (mkLams tpl_vars rhs)+    -- We could do this when putting things into the rulebase, I guess++++-- For a given match template and context, find bindings to wrap around+-- the entire result and what should be substituted for each template variable.+-- Fail if there are two few actual arguments from the target to match the template+matchN  :: InScopeSet           -- ^ In-scope variables+    -> [Var]        -- ^ Match template type variables+    -> [CoreExpr]       -- ^ Match template+    -> [CoreExpr]       -- ^ Target; can have more elements than the template+    -> Maybe ([CoreBind],+          [CoreExpr])++matchN in_scope tmpl_vars tmpl_es target_es+  = do  { (tv_subst, id_subst, binds)+        <- go init_menv emptySubstEnv tmpl_es target_es+    ; return (fromOL binds,+          map (lookup_tmpl tv_subst id_subst) tmpl_vars') }+  where+    (init_rn_env, tmpl_vars') = mapAccumL rnBndrL (mkRnEnv2 in_scope) tmpl_vars+    -- See Note [Template binders]++    init_menv = ME { me_tmpls = mkVarSet tmpl_vars', me_env = init_rn_env }++    go menv subst []     es     = Just subst+    go menv subst ts     []     = Nothing   -- Fail if too few actual args+    go menv subst (t:ts) (e:es) = do { subst1 <- match menv subst t e+                     ; go menv subst1 ts es }++    lookup_tmpl :: TvSubstEnv -> IdSubstEnv -> Var -> CoreExpr+    lookup_tmpl tv_subst id_subst tmpl_var'+        | isTyVar tmpl_var' = case lookupVarEnv tv_subst tmpl_var' of+                Just ty     -> Type ty+                Nothing     -> unbound tmpl_var'+        | otherwise     = case lookupVarEnv id_subst tmpl_var' of+                Just e -> e+                other  -> unbound tmpl_var'++    unbound var = pprPanic "Template variable unbound in rewrite rule"+            (ppr var $$ ppr tmpl_vars $$ ppr tmpl_vars' $$ ppr tmpl_es $$ ppr target_es)+++++++++++++++++++++++++-- These two definitions are not the same as in Subst,+-- but they simple and direct, and purely local to this module+--+-- * The domain of the TvSubstEnv and IdSubstEnv are the template+--   variables passed into the match.+--+-- * The (OrdList CoreBind) in a SubstEnv are the bindings floated out+--   from nested matches; see the Let case of match, below+--+type SubstEnv   = (TvSubstEnv, IdSubstEnv, OrdList CoreBind)+type IdSubstEnv = IdEnv CoreExpr++emptySubstEnv :: SubstEnv+emptySubstEnv = (emptyVarEnv, emptyVarEnv, nilOL)+++--  At one stage I tried to match even if there are more+--  template args than real args.++--  I now think this is probably a bad idea.+--  Should the template (map f xs) match (map g)?  I think not.+--  For a start, in general eta expansion wastes work.+--  SLPJ July 99+++match :: MatchEnv+      -> SubstEnv+      -> CoreExpr       -- Template+      -> CoreExpr       -- Target+      -> Maybe SubstEnv++-- See the notes with Unify.match, which matches types+-- Everything is very similar for terms++-- Interesting examples:+-- Consider matching+--  \x->f      against    \f->f+-- When we meet the lambdas we must remember to rename f to f' in the+-- second expresion.  The RnEnv2 does that.+--+-- Consider matching+--  forall a. \b->b    against   \a->3+-- We must rename the \a.  Otherwise when we meet the lambdas we+-- might substitute [a/b] in the template, and then erroneously+-- succeed in matching what looks like the template variable 'a' against 3.++-- The Var case follows closely what happens in Unify.match+match menv subst (Var v1) e2+  | Just subst <- match_var menv subst v1 e2+  = Just subst++match menv subst e1 (Note n e2)+  = match menv subst e1 e2+    -- Note [Notes in RULE matching]+    -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+    -- Look through Notes.  In particular, we don't want to+    -- be confused by InlineMe notes.  Maybe we should be more+    -- careful about profiling notes, but for now I'm just+    -- riding roughshod over them.+    --- See Note [Notes in call patterns] in SpecConstr++-- Here is another important rule: if the term being matched is a+-- variable, we expand it so long as its unfolding is a WHNF+-- (Its occurrence information is not necessarily up to date,+--  so we don't use it.)+match menv subst e1 (Var v2)+  | isCheapUnfolding unfolding+  = match menv subst e1 (unfoldingTemplate unfolding)+  where+    rn_env    = me_env menv+    unfolding = idUnfolding (lookupRnInScope rn_env (rnOccR rn_env v2))+    -- Notice that we look up v2 in the in-scope set+    -- See Note [Lookup in-scope]+    -- Remember to apply any renaming first (hence rnOccR)++-- Note [Matching lets]+-- ~~~~~~~~~~~~~~~~~~~~+-- Matching a let-expression.  Consider+--  RULE forall x.  f (g x) = <rhs>+-- and target expression+--  f (let { w=R } in g E))+-- Then we'd like the rule to match, to generate+--  let { w=R } in (\x. <rhs>) E+-- In effect, we want to float the let-binding outward, to enable+-- the match to happen.  This is the WHOLE REASON for accumulating+-- bindings in the SubstEnv+--+-- We can only do this if+--  (a) Widening the scope of w does not capture any variables+--      We use a conservative test: w is not already in scope+--      If not, we clone the binders, and substitute+--  (b) The free variables of R are not bound by the part of the+--      target expression outside the let binding; e.g.+--      f (\v. let w = v+1 in g E)+--      Here we obviously cannot float the let-binding for w.+--+-- You may think rule (a) would never apply, because rule matching is+-- mostly invoked from the simplifier, when we have just run substExpr+-- over the argument, so there will be no shadowing anyway.+-- The fly in the ointment is that the forall'd variables of the+-- RULE itself are considered in scope.+--+-- I though of various cheapo ways to solve this tiresome problem,+-- but ended up doing the straightforward thing, which is to+-- clone the binders if they are in scope.  It's tiresome, and+-- potentially inefficient, because of the calls to substExpr,+-- but I don't think it'll happen much in pracice.++{-  Cases to think about+    (let x=y+1 in \x. (x,x))+        --> let x=y+1 in (\x1. (x1,x1))+    (\x. let x = y+1 in (x,x))+        --> let x1 = y+1 in (\x. (x1,x1)+    (let x=y+1 in (x,x), let x=y-1 in (x,x))+        --> let x=y+1 in let x1=y-1 in ((x,x),(x1,x1))++Watch out!+    (let x=y+1 in let z=x+1 in (z,z)+        --> matches (p,p) but watch out that the use of+            x on z's rhs is OK!+I'm removing the cloning because that makes the above case+fail, because the inner let looks as if it has locally-bound vars -}++match menv subst@(tv_subst, id_subst, binds) e1 (Let bind e2)+  | all freshly_bound bndrs,+    not (any locally_bound bind_fvs)+  = match (menv { me_env = rn_env' })+      (tv_subst, id_subst, binds `snocOL` bind')+      e1 e2'+  where+    rn_env   = me_env menv+    bndrs    = bindersOf  bind+    bind_fvs = varSetElems (bindFreeVars bind)+    locally_bound x   = inRnEnvR rn_env x+    freshly_bound x = not (x `rnInScope` rn_env)+    bind' = bind+    e2'   = e2+    rn_env' = extendRnInScopeList rn_env bndrs+{-+    (rn_env', bndrs') = mapAccumL rnBndrR rn_env bndrs+    s_prs = [(bndr, Var bndr') | (bndr,bndr') <- zip bndrs bndrs', bndr /= bndr']+    subst = mkSubst (rnInScopeSet rn_env) emptyVarEnv (mkVarEnv s_prs)+    (bind', e2') | null s_prs = (bind,   e2)+         | otherwise  = (s_bind, substExpr subst e2)+    s_bind = case bind of+        NonRec {} -> NonRec (head bndrs') (head rhss)+        Rec {}    -> Rec (bndrs' `zip` map (substExpr subst) rhss)+-}++match menv subst (Lit lit1) (Lit lit2)+  | lit1 == lit2+  = Just subst++match menv subst (App f1 a1) (App f2 a2)+  = do  { subst' <- match menv subst f1 f2+    ; match menv subst' a1 a2 }++match menv subst (Lam x1 e1) (Lam x2 e2)+  = match menv' subst e1 e2+  where+    menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }++-- This rule does eta expansion+--      (\x.M)  ~  N    iff M  ~  N x+-- It's important that this is *after* the let rule,+-- so that  (\x.M)  ~  (let y = e in \y.N)+-- does the let thing, and then gets the lam/lam rule above+match menv subst (Lam x1 e1) e2+  = match menv' subst e1 (App e2 (varToCoreExpr new_x))+  where+    (rn_env', new_x) = rnBndrL (me_env menv) x1+    menv' = menv { me_env = rn_env' }++-- Eta expansion the other way+--  M  ~  (\y.N)    iff   M y     ~  N+match menv subst e1 (Lam x2 e2)+  = match menv' subst (App e1 (varToCoreExpr new_x)) e2+  where+    (rn_env', new_x) = rnBndrR (me_env menv) x2+    menv' = menv { me_env = rn_env' }++match menv subst (Case e1 x1 ty1 alts1) (Case e2 x2 ty2 alts2)+  = do  { subst1 <- match_ty menv subst ty1 ty2+    ; subst2 <- match menv subst1 e1 e2+    ; let menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }+    ; match_alts menv' subst2 alts1 alts2   -- Alts are both sorted+    }++match menv subst (Type ty1) (Type ty2)+  = match_ty menv subst ty1 ty2++match menv subst (Cast e1 co1) (Cast e2 co2)+  = do  { subst1 <- match_ty menv subst co1 co2+    ; match menv subst1 e1 e2 }++{-  REMOVING OLD CODE: I think that the above handling for let is+               better than the stuff here, which looks+               pretty suspicious to me.  SLPJ Sept 06+-- This is an interesting rule: we simply ignore lets in the+-- term being matched against!  The unfolding inside it is (by assumption)+-- already inside any occurrences of the bound variables, so we'll expand+-- them when we encounter them.  This gives a chance of matching+--  forall x,y.  f (g (x,y))+-- against+--  f (let v = (a,b) in g v)++match menv subst e1 (Let bind e2)+  = match (menv { me_env = rn_env' }) subst e1 e2+  where+    (rn_env', _bndrs') = mapAccumL rnBndrR (me_env menv) (bindersOf bind)+    -- It's important to do this renaming, so that the bndrs+    -- are brought into the local scope. For example:+    -- Matching+    --  forall f,x,xs. f (x:xs)+    --   against+    --  f (let y = e in (y:[]))+    -- We must not get success with x->y!  So we record that y is+    -- locally bound (with rnBndrR), and proceed.  The Var case+    -- will fail when trying to bind x->y+-}++-- Everything else fails+match menv subst e1 e2 = -- pprTrace "Failing at" ((text "e1:" <+> ppr e1) $$ (text "e2:" <+> ppr e2)) $+             Nothing++------------------------------------------+match_var :: MatchEnv+          -> SubstEnv+          -> Var        -- Template+          -> CoreExpr       -- Target+          -> Maybe SubstEnv+match_var menv subst@(tv_subst, id_subst, binds) v1 e2+  | v1' `elemVarSet` me_tmpls menv+  = case lookupVarEnv id_subst v1' of+    Nothing | any (inRnEnvR rn_env) (varSetElems (exprFreeVars e2))+        -> Nothing  -- Occurs check failure+        -- e.g. match forall a. (\x-> a x) against (\y. y y)++        | otherwise -- No renaming to do on e2, because no free var+                -- of e2 is in the rnEnvR of the envt+        -- Note [Matching variable types]+        -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+        -- However, we must match the *types*; e.g.+        --   forall (c::Char->Int) (x::Char).+        --  f (c x) = "RULE FIRED"+        -- We must only match on args that have the right type+        -- It's actually quite difficult to come up with an example that shows+        -- you need type matching, esp since matching is left-to-right, so type+        -- args get matched first.  But it's possible (e.g. simplrun008) and+        -- this is the Right Thing to do+        -> do   { tv_subst' <- Unify.ruleMatchTyX menv tv_subst (idType v1') (exprType e2)+                        -- c.f. match_ty below+            ; return (tv_subst', extendVarEnv id_subst v1' e2, binds) }++    Just e1' | tcEqExprX (nukeRnEnvL rn_env) e1' e2+         -> Just subst++         | otherwise+         -> Nothing++  | otherwise   -- v1 is not a template variable; check for an exact match with e2+  = case e2 of+       Var v2 | v1' == rnOccR rn_env v2 -> Just subst+       other                -> Nothing++  where+    rn_env = me_env menv+    v1'    = rnOccL rn_env v1+    -- If the template is+    --  forall x. f x (\x -> x) = ...+    -- Then the x inside the lambda isn't the+    -- template x, so we must rename first!+++------------------------------------------+match_alts :: MatchEnv+      -> SubstEnv+      -> [CoreAlt]      -- Template+      -> [CoreAlt]      -- Target+      -> Maybe SubstEnv+match_alts menv subst [] []+  = return subst+match_alts menv subst ((c1,vs1,r1):alts1) ((c2,vs2,r2):alts2)+  | c1 == c2+  = do  { subst1 <- match menv' subst r1 r2+    ; match_alts menv subst1 alts1 alts2 }+  where+    menv' :: MatchEnv+    menv' = menv { me_env = rnBndrs2 (me_env menv) vs1 vs2 }++match_alts menv subst alts1 alts2+  = Nothing++++++++++------------------------------------------+match_ty :: MatchEnv+         -> SubstEnv+         -> Type        -- Template+         -> Type        -- Target+         -> Maybe SubstEnv+match_ty menv (tv_subst, id_subst, binds) ty1 ty2+  = do  { tv_subst' <- Unify.ruleMatchTyX menv tv_subst ty1 ty2+    ; return (tv_subst', id_subst, binds) }++++++++++++++++++++++++++++++++++++++++++++++++++++++-- | Report partial matches for rules beginning with the specified+-- string for the purposes of error reporting+ruleCheckProgram :: (Activation -> Bool)    -- ^ Rule activation test+                 -> String                      -- ^ Rule pattern+                 -> RuleBase                    -- ^ Database of rules+                 -> [CoreBind]                  -- ^ Bindings to check in+                 -> SDoc                        -- ^ Resulting check message+ruleCheckProgram is_active rule_pat rule_base binds+  | isEmptyBag results+  = text "Rule check results: no rule application sites"+  | otherwise+  = vcat [text "Rule check results:",+      line,+      vcat [ p $$ line | p <- bagToList results ]+     ]+  where+    results = unionManyBags (map (ruleCheckBind (RuleCheckEnv is_active rule_pat rule_base)) binds)+    line = text (replicate 20 '-')++data RuleCheckEnv = RuleCheckEnv {+    rc_is_active :: Activation -> Bool,+    rc_pattern :: String,+    rc_rule_base :: RuleBase+}++ruleCheckBind :: RuleCheckEnv -> CoreBind -> Bag SDoc+   -- The Bag returned has one SDoc for each call site found+ruleCheckBind env (NonRec b r) = ruleCheck env r+ruleCheckBind env (Rec prs)    = unionManyBags [ruleCheck env r | (b,r) <- prs]++ruleCheck :: RuleCheckEnv -> CoreExpr -> Bag SDoc+ruleCheck env (Var v)       = emptyBag+ruleCheck env (Lit l)       = emptyBag+ruleCheck env (Type ty)     = emptyBag+ruleCheck env (App f a)     = ruleCheckApp env (App f a) []+ruleCheck env (Note n e)    = ruleCheck env e+ruleCheck env (Cast e co)   = ruleCheck env e+ruleCheck env (Let bd e)    = ruleCheckBind env bd `unionBags` ruleCheck env e+ruleCheck env (Lam b e)     = ruleCheck env e+ruleCheck env (Case e _ _ as) = ruleCheck env e `unionBags`+                    unionManyBags [ruleCheck env r | (_,_,r) <- as]++ruleCheckApp env (App f a) as = ruleCheck env a `unionBags` ruleCheckApp env f (a:as)+ruleCheckApp env (Var f) as   = ruleCheckFun env f as+ruleCheckApp env other as     = ruleCheck env other++++ruleCheckFun :: RuleCheckEnv -> Id -> [CoreExpr] -> Bag SDoc+-- Produce a report for all rules matching the predicate+-- saying why it doesn't match the specified application++ruleCheckFun env fn args+  | null name_match_rules = emptyBag+  | otherwise         = unitBag (ruleAppCheck_help (rc_is_active env) fn args name_match_rules)+  where+    name_match_rules = filter match (getRules (rc_rule_base env) fn)+    match rule = (rc_pattern env) `isPrefixOf` unpackFS (ruleName rule)++ruleAppCheck_help :: (Activation -> Bool) -> Id -> [CoreExpr] -> [CoreRule] -> SDoc+ruleAppCheck_help is_active fn args rules+  =     -- The rules match the pattern, so we want to print something+    vcat [text "Expression:" <+> ppr (mkApps (Var fn) args),+      vcat (map check_rule rules)]+  where+    n_args = length args+    i_args = args `zip` [1::Int ..]+    rough_args = map roughTopName args++    check_rule rule = rule_herald rule <> colon <+> rule_info rule++    rule_herald (BuiltinRule { ru_name = name })+        = ptext (sLit "Builtin rule") <+> doubleQuotes (ftext name)+    rule_herald (Rule { ru_name = name })+        = ptext (sLit "Rule") <+> doubleQuotes (ftext name)++    rule_info rule+        | Just _ <- matchRule noBlackList emptyInScopeSet args rough_args rule+            = text "matches (which is very peculiar!)"++    rule_info (BuiltinRule {}) = text "does not match"++    rule_info (Rule { ru_name = name, ru_act = act,+                      ru_bndrs = rule_bndrs, ru_args = rule_args})+        | not (is_active act)    = text "active only in later phase"+        | n_args < n_rule_args        = text "too few arguments"+        | n_mismatches == n_rule_args = text "no arguments match"+        | n_mismatches == 0       = text "all arguments match (considered individually), but rule as a whole does not"+        | otherwise           = text "arguments" <+> ppr mismatches <+> text "do not match (1-indexing)"+        where+          n_rule_args  = length rule_args+          n_mismatches = length mismatches+          mismatches   = [i | (rule_arg, (arg,i)) <- rule_args `zip` i_args,+                                  not (isJust (match_fn rule_arg arg))]++          lhs_fvs = exprsFreeVars rule_args -- Includes template tyvars+          match_fn rule_arg arg = match menv emptySubstEnv rule_arg arg+            where+              in_scope = lhs_fvs `unionVarSet` exprFreeVars arg+              menv = ME { me_env   = mkRnEnv2 (mkInScopeSet in_scope)+                        , me_tmpls = mkVarSet rule_bndrs }++++
+ tests/examples/RealGHC.lhs.parser.golden view

file too large to diff

+ tests/examples/RealGHC.lhs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RealGHC.lhs.prettyprinter.golden view
@@ -0,0 +1,422 @@+{-# OPTIONS -w #-}+{-# LANGUAGE PatternGuards #-}+module Rules+       (RuleBase, emptyRuleBase, mkRuleBase, extendRuleBaseList,+        unionRuleBase, pprRuleBase, ruleCheckProgram, mkSpecInfo,+        extendSpecInfo, addSpecInfo, addIdSpecialisations, rulesOfBinds,+        getRules, pprRulesForUser, lookupRule, mkLocalRule, roughTopNames)+       where+import CoreSyn+import OccurAnal (occurAnalyseExpr)+import CoreFVs+       (exprFreeVars, exprsFreeVars, bindFreeVars, rulesFreeVars)+import CoreUtils (tcEqExprX, exprType)+import PprCore (pprRules)+import Type (Type, TvSubstEnv)+import Coercion (coercionKind)+import TcType (tcSplitTyConApp_maybe)+import CoreTidy (tidyRules)+import Id+import IdInfo (SpecInfo(SpecInfo))+import Var (Var)+import VarEnv+import VarSet+import Name (Name, NamedThing(..))+import NameEnv+import Unify (ruleMatchTyX, MatchEnv(..))+import BasicTypes (Activation)+import StaticFlags (opt_PprStyle_Debug)+import Outputable+import FastString+import Maybes+import OrdList+import Bag+import Util+import Data.List++mkLocalRule ::+            RuleName ->+              Activation ->+                Name -> [CoreBndr] -> [CoreExpr] -> CoreExpr -> CoreRule+mkLocalRule name act fn bndrs args rhs+  = Rule{ru_name = name, ru_fn = fn, ru_act = act, ru_bndrs = bndrs,+         ru_args = args, ru_rhs = rhs, ru_rough = roughTopNames args,+         ru_local = True}++roughTopNames :: [CoreExpr] -> [Maybe Name]+roughTopNames args = map roughTopName args++roughTopName :: CoreExpr -> Maybe Name+roughTopName (Type ty)+  = case tcSplitTyConApp_maybe ty of+        Just (tc, _) -> Just (getName tc)+        Nothing -> Nothing+roughTopName (App f a) = roughTopName f+roughTopName (Var f)+  | isGlobalId f = Just (idName f)+  | otherwise = Nothing+roughTopName other = Nothing++ruleCantMatch :: [Maybe Name] -> [Maybe Name] -> Bool+ruleCantMatch (Just n1 : ts) (Just n2 : as)+  = n1 /= n2 || ruleCantMatch ts as+ruleCantMatch (t : ts) (a : as) = ruleCantMatch ts as+ruleCantMatch ts as = False++pprRulesForUser :: [CoreRule] -> SDoc+pprRulesForUser rules+  = withPprStyle defaultUserStyle $+      pprRules $ sortLe le_rule $ tidyRules emptyTidyEnv rules+  where le_rule r1 r2 = ru_name r1 <= ru_name r2++mkSpecInfo :: [CoreRule] -> SpecInfo+mkSpecInfo rules = SpecInfo rules (rulesFreeVars rules)++extendSpecInfo :: SpecInfo -> [CoreRule] -> SpecInfo+extendSpecInfo (SpecInfo rs1 fvs1) rs2+  = SpecInfo (rs2 ++ rs1) (rulesFreeVars rs2 `unionVarSet` fvs1)++addSpecInfo :: SpecInfo -> SpecInfo -> SpecInfo+addSpecInfo (SpecInfo rs1 fvs1) (SpecInfo rs2 fvs2)+  = SpecInfo (rs1 ++ rs2) (fvs1 `unionVarSet` fvs2)++addIdSpecialisations :: Id -> [CoreRule] -> Id+addIdSpecialisations id [] = id+addIdSpecialisations id rules+  = setIdSpecialisation id $+      extendSpecInfo (idSpecialisation id) rules++rulesOfBinds :: [CoreBind] -> [CoreRule]+rulesOfBinds binds+  = concatMap (concatMap idCoreRules . bindersOf) binds++getRules :: RuleBase -> Id -> [CoreRule]+getRules rule_base fn+  | isLocalId fn = idCoreRules fn+  | otherwise =+    WARN+      (not (isPrimOpId fn) && notNull (idCoreRules fn),+       ppr fn <+> ppr (idCoreRules fn))+      idCoreRules+      fn+      ++ (lookupNameEnv rule_base (idName fn) `orElse` [])++type RuleBase = NameEnv [CoreRule]+emptyRuleBase = emptyNameEnv++mkRuleBase :: [CoreRule] -> RuleBase+mkRuleBase rules = extendRuleBaseList emptyRuleBase rules++extendRuleBaseList :: RuleBase -> [CoreRule] -> RuleBase+extendRuleBaseList rule_base new_guys+  = foldl extendRuleBase rule_base new_guys++unionRuleBase :: RuleBase -> RuleBase -> RuleBase+unionRuleBase rb1 rb2 = plusNameEnv_C (++) rb1 rb2++extendRuleBase :: RuleBase -> CoreRule -> RuleBase+extendRuleBase rule_base rule+  = extendNameEnv_Acc (:) singleton rule_base (ruleIdName rule) rule++pprRuleBase :: RuleBase -> SDoc+pprRuleBase rules+  = vcat+      [pprRules (tidyRules emptyTidyEnv rs) | rs <- nameEnvElts rules]++lookupRule ::+           (Activation -> Bool) ->+             InScopeSet ->+               Id -> [CoreExpr] -> [CoreRule] -> Maybe (CoreRule, CoreExpr)+lookupRule is_active in_scope fn args rules+  = case go [] rules of+        [] -> Nothing+        (m : ms) -> Just (findBest (fn, args) m ms)+  where rough_args = map roughTopName args+        +        go ::+           [(CoreRule, CoreExpr)] -> [CoreRule] -> [(CoreRule, CoreExpr)]+        go ms [] = ms+        go ms (r : rs)+          = case (matchRule is_active in_scope args rough_args r) of+                Just e -> go ((r, e) : ms) rs+                Nothing -> go ms rs++findBest ::+         (Id, [CoreExpr]) ->+           (CoreRule, CoreExpr) ->+             [(CoreRule, CoreExpr)] -> (CoreRule, CoreExpr)+findBest target (rule, ans) [] = (rule, ans)+findBest target (rule1, ans1) ((rule2, ans2) : prs)+  | rule1 `isMoreSpecific` rule2 = findBest target (rule1, ans1) prs+  | rule2 `isMoreSpecific` rule1 = findBest target (rule2, ans2) prs+  | debugIsOn =+    let pp_rule rule+          | opt_PprStyle_Debug = ppr rule+          | otherwise = doubleQuotes (ftext (ru_name rule))+      in+      pprTrace "Rules.findBest: rule overlap (Rule 1 wins)"+        (vcat+           [if opt_PprStyle_Debug then+              ptext (sLit "Expression to match:") <+> ppr fn <+>+                sep (map ppr args)+              else empty,+            ptext (sLit "Rule 1:") <+> pp_rule rule1,+            ptext (sLit "Rule 2:") <+> pp_rule rule2])+        $ findBest target (rule1, ans1) prs+  | otherwise = findBest target (rule1, ans1) prs+  where (fn, args) = target++isMoreSpecific :: CoreRule -> CoreRule -> Bool+isMoreSpecific (BuiltinRule{}) r2 = True+isMoreSpecific r1 (BuiltinRule{}) = False+isMoreSpecific (Rule{ru_bndrs = bndrs1, ru_args = args1})+  (Rule{ru_bndrs = bndrs2, ru_args = args2})+  = isJust (matchN in_scope bndrs2 args2 args1)+  where in_scope = mkInScopeSet (mkVarSet bndrs1)++noBlackList :: Activation -> Bool+noBlackList act = False++matchRule ::+          (Activation -> Bool) ->+            InScopeSet ->+              [CoreExpr] -> [Maybe Name] -> CoreRule -> Maybe CoreExpr+matchRule is_active in_scope args rough_args+  (BuiltinRule{ru_name = name, ru_try = match_fn})+  = case match_fn args of+        Just expr -> Just expr+        Nothing -> Nothing+matchRule is_active in_scope args rough_args+  (Rule{ru_name = rn, ru_act = act, ru_rough = tpl_tops,+        ru_bndrs = tpl_vars, ru_args = tpl_args, ru_rhs = rhs})+  | not (is_active act) = Nothing+  | ruleCantMatch tpl_tops rough_args = Nothing+  | otherwise =+    case matchN in_scope tpl_vars tpl_args args of+        Nothing -> Nothing+        Just (binds, tpl_vals) -> Just+                                    (mkLets binds $ rule_fn `mkApps` tpl_vals)+  where rule_fn = occurAnalyseExpr (mkLams tpl_vars rhs)++matchN ::+       InScopeSet ->+         [Var] -> [CoreExpr] -> [CoreExpr] -> Maybe ([CoreBind], [CoreExpr])+matchN in_scope tmpl_vars tmpl_es target_es+  = do (tv_subst, id_subst, binds) <- go init_menv emptySubstEnv+                                        tmpl_es+                                        target_es+       return+         (fromOL binds, map (lookup_tmpl tv_subst id_subst) tmpl_vars')+  where (init_rn_env, tmpl_vars')+          = mapAccumL rnBndrL (mkRnEnv2 in_scope) tmpl_vars+        init_menv+          = ME{me_tmpls = mkVarSet tmpl_vars', me_env = init_rn_env}+        go menv subst [] es = Just subst+        go menv subst ts [] = Nothing+        go menv subst (t : ts) (e : es)+          = do subst1 <- match menv subst t e+               go menv subst1 ts es+        +        lookup_tmpl :: TvSubstEnv -> IdSubstEnv -> Var -> CoreExpr+        lookup_tmpl tv_subst id_subst tmpl_var'+          | isTyVar tmpl_var' =+            case lookupVarEnv tv_subst tmpl_var' of+                Just ty -> Type ty+                Nothing -> unbound tmpl_var'+          | otherwise =+            case lookupVarEnv id_subst tmpl_var' of+                Just e -> e+                other -> unbound tmpl_var'+        unbound var+          = pprPanic "Template variable unbound in rewrite rule"+              (ppr var $$ ppr tmpl_vars $$ ppr tmpl_vars' $$ ppr tmpl_es $$+                 ppr target_es)++type SubstEnv = (TvSubstEnv, IdSubstEnv, OrdList CoreBind)++type IdSubstEnv = IdEnv CoreExpr++emptySubstEnv :: SubstEnv+emptySubstEnv = (emptyVarEnv, emptyVarEnv, nilOL)++match ::+      MatchEnv -> SubstEnv -> CoreExpr -> CoreExpr -> Maybe SubstEnv+match menv subst (Var v1) e2+  | Just subst <- match_var menv subst v1 e2 = Just subst+match menv subst e1 (Note n e2) = match menv subst e1 e2+match menv subst e1 (Var v2)+  | isCheapUnfolding unfolding =+    match menv subst e1 (unfoldingTemplate unfolding)+  where rn_env = me_env menv+        unfolding = idUnfolding (lookupRnInScope rn_env (rnOccR rn_env v2))+match menv subst@(tv_subst, id_subst, binds) e1 (Let bind e2)+  | all freshly_bound bndrs, not (any locally_bound bind_fvs) =+    match (menv{me_env = rn_env'})+      (tv_subst, id_subst, binds `snocOL` bind')+      e1+      e2'+  where rn_env = me_env menv+        bndrs = bindersOf bind+        bind_fvs = varSetElems (bindFreeVars bind)+        locally_bound x = inRnEnvR rn_env x+        freshly_bound x = not (x `rnInScope` rn_env)+        bind' = bind+        e2' = e2+        rn_env' = extendRnInScopeList rn_env bndrs+match menv subst (Lit lit1) (Lit lit2) | lit1 == lit2 = Just subst+match menv subst (App f1 a1) (App f2 a2)+  = do subst' <- match menv subst f1 f2+       match menv subst' a1 a2+match menv subst (Lam x1 e1) (Lam x2 e2) = match menv' subst e1 e2+  where menv' = menv{me_env = rnBndr2 (me_env menv) x1 x2}+match menv subst (Lam x1 e1) e2+  = match menv' subst e1 (App e2 (varToCoreExpr new_x))+  where (rn_env', new_x) = rnBndrL (me_env menv) x1+        menv' = menv{me_env = rn_env'}+match menv subst e1 (Lam x2 e2)+  = match menv' subst (App e1 (varToCoreExpr new_x)) e2+  where (rn_env', new_x) = rnBndrR (me_env menv) x2+        menv' = menv{me_env = rn_env'}+match menv subst (Case e1 x1 ty1 alts1) (Case e2 x2 ty2 alts2)+  = do subst1 <- match_ty menv subst ty1 ty2+       subst2 <- match menv subst1 e1 e2+       let menv' = menv{me_env = rnBndr2 (me_env menv) x1 x2}+       match_alts menv' subst2 alts1 alts2+match menv subst (Type ty1) (Type ty2)+  = match_ty menv subst ty1 ty2+match menv subst (Cast e1 co1) (Cast e2 co2)+  = do subst1 <- match_ty menv subst co1 co2+       match menv subst1 e1 e2+match menv subst e1 e2 = Nothing++match_var ::+          MatchEnv -> SubstEnv -> Var -> CoreExpr -> Maybe SubstEnv+match_var menv subst@(tv_subst, id_subst, binds) v1 e2+  | v1' `elemVarSet` me_tmpls menv =+    case lookupVarEnv id_subst v1' of+        Nothing | any (inRnEnvR rn_env) (varSetElems (exprFreeVars e2)) ->+                  Nothing+                | otherwise ->+                  do tv_subst' <- Unify.ruleMatchTyX menv tv_subst (idType v1')+                                    (exprType e2)+                     return (tv_subst', extendVarEnv id_subst v1' e2, binds)+        Just e1' | tcEqExprX (nukeRnEnvL rn_env) e1' e2 -> Just subst+                 | otherwise -> Nothing+  | otherwise =+    case e2 of+        Var v2 | v1' == rnOccR rn_env v2 -> Just subst+        other -> Nothing+  where rn_env = me_env menv+        v1' = rnOccL rn_env v1++match_alts ::+           MatchEnv -> SubstEnv -> [CoreAlt] -> [CoreAlt] -> Maybe SubstEnv+match_alts menv subst [] [] = return subst+match_alts menv subst ((c1, vs1, r1) : alts1)+  ((c2, vs2, r2) : alts2)+  | c1 == c2 =+    do subst1 <- match menv' subst r1 r2+       match_alts menv subst1 alts1 alts2+  where menv' :: MatchEnv+        menv' = menv{me_env = rnBndrs2 (me_env menv) vs1 vs2}+match_alts menv subst alts1 alts2 = Nothing++match_ty :: MatchEnv -> SubstEnv -> Type -> Type -> Maybe SubstEnv+match_ty menv (tv_subst, id_subst, binds) ty1 ty2+  = do tv_subst' <- Unify.ruleMatchTyX menv tv_subst ty1 ty2+       return (tv_subst', id_subst, binds)++ruleCheckProgram ::+                 (Activation -> Bool) -> String -> RuleBase -> [CoreBind] -> SDoc+ruleCheckProgram is_active rule_pat rule_base binds+  | isEmptyBag results =+    text "Rule check results: no rule application sites"+  | otherwise =+    vcat+      [text "Rule check results:", line,+       vcat [p $$ line | p <- bagToList results]]+  where results+          = unionManyBags+              (map (ruleCheckBind (RuleCheckEnv is_active rule_pat rule_base))+                 binds)+        line = text (replicate 20 '-')++data RuleCheckEnv = RuleCheckEnv{rc_is_active ::+                                 Activation -> Bool,+                                 rc_pattern :: String, rc_rule_base :: RuleBase}++ruleCheckBind :: RuleCheckEnv -> CoreBind -> Bag SDoc+ruleCheckBind env (NonRec b r) = ruleCheck env r+ruleCheckBind env (Rec prs)+  = unionManyBags [ruleCheck env r | (b, r) <- prs]++ruleCheck :: RuleCheckEnv -> CoreExpr -> Bag SDoc+ruleCheck env (Var v) = emptyBag+ruleCheck env (Lit l) = emptyBag+ruleCheck env (Type ty) = emptyBag+ruleCheck env (App f a) = ruleCheckApp env (App f a) []+ruleCheck env (Note n e) = ruleCheck env e+ruleCheck env (Cast e co) = ruleCheck env e+ruleCheck env (Let bd e)+  = ruleCheckBind env bd `unionBags` ruleCheck env e+ruleCheck env (Lam b e) = ruleCheck env e+ruleCheck env (Case e _ _ as)+  = ruleCheck env e `unionBags`+      unionManyBags [ruleCheck env r | (_, _, r) <- as]+ruleCheckApp env (App f a) as+  = ruleCheck env a `unionBags` ruleCheckApp env f (a : as)+ruleCheckApp env (Var f) as = ruleCheckFun env f as+ruleCheckApp env other as = ruleCheck env other++ruleCheckFun :: RuleCheckEnv -> Id -> [CoreExpr] -> Bag SDoc+ruleCheckFun env fn args+  | null name_match_rules = emptyBag+  | otherwise =+    unitBag+      (ruleAppCheck_help (rc_is_active env) fn args name_match_rules)+  where name_match_rules+          = filter match (getRules (rc_rule_base env) fn)+        match rule = (rc_pattern env) `isPrefixOf` unpackFS (ruleName rule)++ruleAppCheck_help ::+                  (Activation -> Bool) -> Id -> [CoreExpr] -> [CoreRule] -> SDoc+ruleAppCheck_help is_active fn args rules+  = vcat+      [text "Expression:" <+> ppr (mkApps (Var fn) args),+       vcat (map check_rule rules)]+  where n_args = length args+        i_args = args `zip` [1 :: Int ..]+        rough_args = map roughTopName args+        check_rule rule = rule_herald rule <> colon <+> rule_info rule+        rule_herald (BuiltinRule{ru_name = name})+          = ptext (sLit "Builtin rule") <+> doubleQuotes (ftext name)+        rule_herald (Rule{ru_name = name})+          = ptext (sLit "Rule") <+> doubleQuotes (ftext name)+        rule_info rule+          | Just _ <- matchRule noBlackList emptyInScopeSet args rough_args+                        rule+            = text "matches (which is very peculiar!)"+        rule_info (BuiltinRule{}) = text "does not match"+        rule_info+          (Rule{ru_name = name, ru_act = act, ru_bndrs = rule_bndrs,+                ru_args = rule_args})+          | not (is_active act) = text "active only in later phase"+          | n_args < n_rule_args = text "too few arguments"+          | n_mismatches == n_rule_args = text "no arguments match"+          | n_mismatches == 0 =+            text+              "all arguments match (considered individually), but rule as a whole does not"+          | otherwise =+            text "arguments" <+> ppr mismatches <+>+              text "do not match (1-indexing)"+          where n_rule_args = length rule_args+                n_mismatches = length mismatches+                mismatches+                  = [i | (rule_arg, (arg, i)) <- rule_args `zip` i_args,+                     not (isJust (match_fn rule_arg arg))]+                lhs_fvs = exprsFreeVars rule_args+                match_fn rule_arg arg = match menv emptySubstEnv rule_arg arg+                  where in_scope = lhs_fvs `unionVarSet` exprFreeVars arg+                        menv+                          = ME{me_env = mkRnEnv2 (mkInScopeSet in_scope),+                               me_tmpls = mkVarSet rule_bndrs}
+ tests/examples/RecordInfixSelector.hs view
@@ -0,0 +1,3 @@+data RecordWithInfixSelector = Cons { (<>) :: Int -> Int }++idRecord = Cons { (<>) = id }
+ tests/examples/RecordInfixSelector.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordInfixSelector.hs.parser.golden view
@@ -0,0 +1,234 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 1+            , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 1+            , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 1+            , SrcSpan "tests/examples/RecordInfixSelector.hs" 3 1 3 1+            , SrcSpan "tests/examples/RecordInfixSelector.hs" 4 1 4 1+            , SrcSpan "tests/examples/RecordInfixSelector.hs" 4 1 4 1+            ]+        }+      Nothing+      []+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 59+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 30 1 31 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordInfixSelector.hs" 1 6 1 29+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordInfixSelector.hs" 1 6 1 29+                  , srcInfoPoints = []+                  }+                "RecordWithInfixSelector"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RecordInfixSelector.hs" 1 32 1 59+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 37 1 38+                    , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 58 1 59+                    ]+                }+              Nothing+              Nothing+              (RecDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordInfixSelector.hs" 1 32 1 59+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 37 1 38+                       , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 58 1 59+                       ]+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordInfixSelector.hs" 1 32 1 36+                      , srcInfoPoints = []+                      }+                    "Cons")+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/RecordInfixSelector.hs" 1 39 1 57+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 44 1 46 ]+                       }+                     [ Symbol+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RecordInfixSelector.hs" 1 39 1 43+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 39 1 40+                               , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 40 1 42+                               , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 42 1 43+                               ]+                           }+                         "<>"+                     ]+                     (TyFun+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/RecordInfixSelector.hs" 1 47 1 57+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 51 1 53 ]+                          }+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/RecordInfixSelector.hs" 1 47 1 50+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/RecordInfixSelector.hs" 1 47 1 50+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/RecordInfixSelector.hs" 1 47 1 50+                                   , srcInfoPoints = []+                                   }+                                 "Int")))+                        (TyCon+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/RecordInfixSelector.hs" 1 54 1 57+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/RecordInfixSelector.hs" 1 54 1 57+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/RecordInfixSelector.hs" 1 54 1 57+                                   , srcInfoPoints = []+                                   }+                                 "Int"))))+                 ])+          ]+          []+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordInfixSelector.hs" 3 1 3 30+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordInfixSelector.hs" 3 1 3 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordInfixSelector.hs" 3 1 3 9+                  , srcInfoPoints = []+                  }+                "idRecord"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordInfixSelector.hs" 3 10 3 30+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 10 3 11 ]+               }+             (RecConstr+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordInfixSelector.hs" 3 12 3 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 17 3 18+                      , SrcSpan "tests/examples/RecordInfixSelector.hs" 3 29 3 30+                      ]+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RecordInfixSelector.hs" 3 12 3 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RecordInfixSelector.hs" 3 12 3 16+                        , srcInfoPoints = []+                        }+                      "Cons"))+                [ FieldUpdate+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordInfixSelector.hs" 3 19 3 28+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 24 3 25 ]+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordInfixSelector.hs" 3 19 3 23+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 19 3 20+                             , SrcSpan "tests/examples/RecordInfixSelector.hs" 3 20 3 22+                             , SrcSpan "tests/examples/RecordInfixSelector.hs" 3 22 3 23+                             ]+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RecordInfixSelector.hs" 3 20 3 22+                            , srcInfoPoints = []+                            }+                          "<>"))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordInfixSelector.hs" 3 26 3 28+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RecordInfixSelector.hs" 3 26 3 28+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/RecordInfixSelector.hs" 3 26 3 28+                               , srcInfoPoints = []+                               }+                             "id")))+                ]))+          Nothing+      ]+  , []+  )
+ tests/examples/RecordInfixSelector.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordInfixSelector.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+data RecordWithInfixSelector = Cons{(<>) :: Int -> Int}+idRecord = Cons{(<>) = id}
+ tests/examples/RecordPatternSynonyms.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE PatternSynonyms #-}+module ShouldCompile where++pattern Single{x} = [x]++pattern Double{y,z} = (y,z)++pattern More{x} <- (x,_) where+  More x = (x, Nothing)++-- Selector+selector :: Int+selector = x [5]++update :: [String]+update = ["String"] { x = "updated" }
+ tests/examples/RecordPatternSynonyms.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordPatternSynonyms.hs.parser.golden view
@@ -0,0 +1,688 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 1 17 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 1 1 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 1 2 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 1 2 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 1 4 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 1 6 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 1 8 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 1 12 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 1 13 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 1 15 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 1 16 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 17 1 17 1+            , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 17 1 17 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 1 2 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 1 2 7+                  , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 22 2 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 8 2 21+                 , srcInfoPoints = []+                 }+               "ShouldCompile")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 1 1 13+                , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      ]+      []+      [ PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 1 4 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 1 4 8+                , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 19 4 20+                ]+            }+          (PRec+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 9 4 18+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 15 4 16+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 17 4 18+                   ]+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 9 4 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 9 4 15+                     , srcInfoPoints = []+                     }+                   "Single"))+             [ PFieldPun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 16 4 17+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 16 4 17+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 16 4 17+                         , srcInfoPoints = []+                         }+                       "x"))+             ])+          (PList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 21 4 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 21 4 22+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 23 4 24+                   ]+               }+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 22 4 23+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 22 4 23+                      , srcInfoPoints = []+                      }+                    "x")+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 1 6 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 1 6 8+                , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 21 6 22+                ]+            }+          (PRec+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 9 6 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 15 6 16+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 17 6 18+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 19 6 20+                   ]+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 9 6 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 9 6 15+                     , srcInfoPoints = []+                     }+                   "Double"))+             [ PFieldPun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 16 6 17+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 16 6 17+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 16 6 17+                         , srcInfoPoints = []+                         }+                       "y"))+             , PFieldPun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 18 6 19+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 18 6 19+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 18 6 19+                         , srcInfoPoints = []+                         }+                       "z"))+             ])+          (PTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 23 6 28+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 23 6 24+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 25 6 26+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 27 6 28+                   ]+               }+             Boxed+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 24 6 25+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 24 6 25+                      , srcInfoPoints = []+                      }+                    "y")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 26 6 27+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 26 6 27+                      , srcInfoPoints = []+                      }+                    "z")+             ])+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 1 8 25+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 1 8 8+                , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 17 8 19+                ]+            }+          (PRec+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 9 8 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 13 8 14+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 15 8 16+                   ]+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 9 8 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 9 8 13+                     , srcInfoPoints = []+                     }+                   "More"))+             [ PFieldPun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 14 8 15+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 14 8 15+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 14 8 15+                         , srcInfoPoints = []+                         }+                       "x"))+             ])+          (PTuple+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 20 8 25+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 20 8 21+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 22 8 23+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 24 8 25+                   ]+               }+             Boxed+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 21 8 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 21 8 22+                      , srcInfoPoints = []+                      }+                    "x")+             , PWildCard+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 23 8 24+                   , srcInfoPoints = []+                   }+             ])+          (ExplicitBidirectional+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 26 12 0+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 26 8 31+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 3+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 1 12 0+                   ]+               }+             [ PatBind+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 24+                   , srcInfoPoints = []+                   }+                 (PApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 9+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 7+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 7+                            , srcInfoPoints = []+                            }+                          "More"))+                    [ PVar+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 8 9 9+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 8 9 9+                             , srcInfoPoints = []+                             }+                           "x")+                    ])+                 (UnGuardedRhs+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 10 9 24+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 10 9 11 ]+                      }+                    (Tuple+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 12 9 24+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 12 9 13+                             , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 14 9 15+                             , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 23 9 24+                             ]+                         }+                       Boxed+                       [ Var+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 13 9 14+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 13 9 14+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 13 9 14+                                   , srcInfoPoints = []+                                   }+                                 "x"))+                       , Con+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 16 9 23+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 16 9 23+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 16 9 23+                                   , srcInfoPoints = []+                                   }+                                 "Nothing"))+                       ]))+                 Nothing+             ])+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 1 12 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 10 12 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 1 12 9+                , srcInfoPoints = []+                }+              "selector"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 13 12 16+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 13 12 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 13 12 16+                     , srcInfoPoints = []+                     }+                   "Int")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 1 13 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 1 13 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 1 13 9+                  , srcInfoPoints = []+                  }+                "selector"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 10 13 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 10 13 11 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 12 13 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 12 13 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 12 13 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 12 13 13+                           , srcInfoPoints = []+                           }+                         "x")))+                (List+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 14 13 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 14 13 15+                         , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 16 13 17+                         ]+                     }+                   [ Lit+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 15 13 16+                         , srcInfoPoints = []+                         }+                       (Int+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 15 13 16+                            , srcInfoPoints = []+                            }+                          5+                          "5")+                   ])))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 1 15 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 8 15 10 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 1 15 7+                , srcInfoPoints = []+                }+              "update"+          ]+          (TyList+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 11 15 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 11 15 12+                   , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 18 15 19+                   ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 12 15 18+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 12 15 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 12 15 18+                        , srcInfoPoints = []+                        }+                      "String"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 1 16 38+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 1 16 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 1 16 7+                  , srcInfoPoints = []+                  }+                "update"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 8 16 38+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 8 16 9 ]+               }+             (RecUpdate+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 10 16 38+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 21 16 22+                      , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 37 16 38+                      ]+                  }+                (List+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 10 16 20+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 10 16 11+                         , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 19 16 20+                         ]+                     }+                   [ Lit+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 11 16 19+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 11 16 19+                            , srcInfoPoints = []+                            }+                          "String"+                          "String")+                   ])+                [ FieldUpdate+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 23 16 36+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 25 16 26 ]+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 23 16 24+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 23 16 24+                            , srcInfoPoints = []+                            }+                          "x"))+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 27 16 36+                         , srcInfoPoints = []+                         }+                       (String+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 27 16 36+                            , srcInfoPoints = []+                            }+                          "updated"+                          "updated"))+                ]))+          Nothing+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/RecordPatternSynonyms.hs" 11 1 11 12)+        " Selector"+    ]+  )
+ tests/examples/RecordPatternSynonyms.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordPatternSynonyms.hs.prettyprinter.golden view
@@ -0,0 +1,15 @@+{-# LANGUAGE PatternSynonyms #-}+module ShouldCompile where++pattern Single{x} = [x]++pattern Double{y, z} = (y, z)++pattern More{x} <- (x, _)+  where More x = (x, Nothing)++selector :: Int+selector = x [5]++update :: [String]+update = ["String"]{x = "updated"}
+ tests/examples/RecordPuns.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE NamedFieldPuns #-}+module RecordPuns where++cotile = tile {Kind.ospeedup}
+ tests/examples/RecordPuns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordPuns.hs.parser.golden view
@@ -0,0 +1,120 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RecordPuns.hs" 1 1 1 1+            , SrcSpan "tests/examples/RecordPuns.hs" 2 1 2 1+            , SrcSpan "tests/examples/RecordPuns.hs" 2 1 2 1+            , SrcSpan "tests/examples/RecordPuns.hs" 4 1 4 1+            , SrcSpan "tests/examples/RecordPuns.hs" 5 1 5 1+            , SrcSpan "tests/examples/RecordPuns.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 2 1 2 24+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/RecordPuns.hs" 2 1 2 7+                  , SrcSpan "tests/examples/RecordPuns.hs" 2 19 2 24+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 2 8 2 18+                 , srcInfoPoints = []+                 }+               "RecordPuns")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 1 1 1 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RecordPuns.hs" 1 1 1 13+                , SrcSpan "tests/examples/RecordPuns.hs" 1 29 1 32+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 1 14 1 28+                , srcInfoPoints = []+                }+              "NamedFieldPuns"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 1 4 30+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 1 4 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 1 4 7+                  , srcInfoPoints = []+                  }+                "cotile"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 8 4 30+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecordPuns.hs" 4 8 4 9 ]+               }+             (RecUpdate+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 10 4 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RecordPuns.hs" 4 15 4 16+                      , SrcSpan "tests/examples/RecordPuns.hs" 4 29 4 30+                      ]+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 10 4 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 10 4 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 10 4 14+                           , srcInfoPoints = []+                           }+                         "tile")))+                [ FieldPun+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 16 4 29+                      , srcInfoPoints = []+                      }+                    (Qual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 16 4 29+                         , srcInfoPoints = []+                         }+                       (ModuleName+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 16 4 29+                            , srcInfoPoints = []+                            }+                          "Kind")+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 16 4 29+                            , srcInfoPoints = []+                            }+                          "ospeedup"))+                ]))+          Nothing+      ]+  , []+  )
+ tests/examples/RecordPuns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordPuns.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+module RecordPuns where+cotile = tile{Kind.ospeedup}
+ tests/examples/RecordWildcard.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE RecordWildCards #-}+-- Should fail.+f A { .., b = v, .. } = v+
+ tests/examples/RecordWildcard.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcard.hs" 3 9) "Parse error: ,"
+ tests/examples/RecordWildcard.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+  (SrcLoc "tests/examples/RecordWildcard.hs" 3 9) "Parse error: ,"
+ tests/examples/RecordWildcard.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcard.hs" 3 9) "Parse error: ,"
+ tests/examples/RecordWildcard.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcard.hs" 3 9) "Parse error: ,"
+ tests/examples/RecordWildcardError.hs view
@@ -0,0 +1,1 @@+foo Record{..} = xs
+ tests/examples/RecordWildcardError.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcardError.hs" 1 12) "RecordWildCards language extension is not enabled. Please add {-# LANGUAGE RecordWildCards #-} pragma at the top of your module."
+ tests/examples/RecordWildcardError.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/RecordWildcardError.hs" 1 12)+  "RecordWildCards language extension is not enabled. Please add {-# LANGUAGE RecordWildCards #-} pragma at the top of your module."
+ tests/examples/RecordWildcardError.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcardError.hs" 1 12) "RecordWildCards language extension is not enabled. Please add {-# LANGUAGE RecordWildCards #-} pragma at the top of your module."
+ tests/examples/RecordWildcardError.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcardError.hs" 1 12) "RecordWildCards language extension is not enabled. Please add {-# LANGUAGE RecordWildCards #-} pragma at the top of your module."
+ tests/examples/RecursiveDo.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE RecursiveDo #-}+justOnes = do+    rec xs <- Just (1:xs)+    return (map negate xs)+
+ tests/examples/RecursiveDo.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecursiveDo.hs.parser.golden view
@@ -0,0 +1,281 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RecursiveDo.hs" 1 1 1 1+            , SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 1+            , SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 1+            , SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 1+            , SrcSpan "tests/examples/RecursiveDo.hs" 6 1 6 1+            , SrcSpan "tests/examples/RecursiveDo.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RecursiveDo.hs" 1 1 1 13+                , SrcSpan "tests/examples/RecursiveDo.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "RecursiveDo"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 1 4 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 9+                  , srcInfoPoints = []+                  }+                "justOnes"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 10 4 27+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RecursiveDo.hs" 2 10 2 11 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 12 4 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RecursiveDo.hs" 2 12 2 14+                      , SrcSpan "tests/examples/RecursiveDo.hs" 3 5 3 5+                      , SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 5+                      , SrcSpan "tests/examples/RecursiveDo.hs" 6 1 6 0+                      ]+                  }+                [ RecStmt+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 5 3 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RecursiveDo.hs" 3 5 3 8+                          , SrcSpan "tests/examples/RecursiveDo.hs" 3 9 3 9+                          , SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 0+                          ]+                      }+                    [ Generator+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 9 3 26+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/RecursiveDo.hs" 3 12 3 14 ]+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 9 3 11+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 9 3 11+                                , srcInfoPoints = []+                                }+                              "xs"))+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 15 3 26+                             , srcInfoPoints = []+                             }+                           (Con+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 15 3 19+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 15 3 19+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RecursiveDo.hs" 3 15 3 19+                                      , srcInfoPoints = []+                                      }+                                    "Just")))+                           (Paren+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 20 3 26+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/RecursiveDo.hs" 3 20 3 21+                                    , SrcSpan "tests/examples/RecursiveDo.hs" 3 25 3 26+                                    ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 21 3 25+                                   , srcInfoPoints = []+                                   }+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RecursiveDo.hs" 3 21 3 22+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RecursiveDo.hs" 3 21 3 22+                                         , srcInfoPoints = []+                                         }+                                       1+                                       "1"))+                                 (QConOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RecursiveDo.hs" 3 22 3 23+                                      , srcInfoPoints = []+                                      }+                                    (Special+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RecursiveDo.hs" 3 22 3 23+                                         , srcInfoPoints = []+                                         }+                                       (Cons+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RecursiveDo.hs" 3 22 3 23+                                            , srcInfoPoints = []+                                            })))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RecursiveDo.hs" 3 23 3 25+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RecursiveDo.hs" 3 23 3 25+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RecursiveDo.hs" 3 23 3 25+                                            , srcInfoPoints = []+                                            }+                                          "xs"))))))+                    ]+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 27+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 27+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 11+                                  , srcInfoPoints = []+                                  }+                                "return")))+                       (Paren+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 12 4 27+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/RecursiveDo.hs" 4 12 4 13+                                , SrcSpan "tests/examples/RecursiveDo.hs" 4 26 4 27+                                ]+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 26+                               , srcInfoPoints = []+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 23+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 16+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 16+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 16+                                           , srcInfoPoints = []+                                           }+                                         "map")))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RecursiveDo.hs" 4 17 4 23+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RecursiveDo.hs" 4 17 4 23+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RecursiveDo.hs" 4 17 4 23+                                           , srcInfoPoints = []+                                           }+                                         "negate"))))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 24 4 26+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RecursiveDo.hs" 4 24 4 26+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RecursiveDo.hs" 4 24 4 26+                                        , srcInfoPoints = []+                                        }+                                      "xs"))))))+                ]))+          Nothing+      ]+  , []+  )
+ tests/examples/RecursiveDo.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecursiveDo.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE RecursiveDo #-}+justOnes+  = do rec xs <- Just (1 : xs)+       return (map negate xs)
+ tests/examples/RegularPatterns.hs view
@@ -0,0 +1,9 @@+{-# OPTIONS_GHC -F -pgmFhsx2hs #-}+{-# LANGUAGE RegularPatterns #-}+module RegularPatterns where++f :: [Int] -> [[Int]]+f [ 0+!, b+, 1?, (| 2,3 |) ] = [b]+f [ 1+, (| x | x `mod` 2 == 0 |) ] = [[x]]+f [ 2, a@(| b@:_, _ |)* ] = b:a+f _ = []
+ tests/examples/RegularPatterns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RegularPatterns.hs.parser.golden view
@@ -0,0 +1,851 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/RegularPatterns.hs" 1 1 10 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RegularPatterns.hs" 1 1 1 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 2 1 2 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 3 1 3 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 3 1 3 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 5 1 5 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 6 1 6 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 7 1 7 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 8 1 8 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 9 1 9 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 10 1 10 1+            , SrcSpan "tests/examples/RegularPatterns.hs" 10 1 10 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/RegularPatterns.hs" 3 1 3 29+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/RegularPatterns.hs" 3 1 3 7+                  , SrcSpan "tests/examples/RegularPatterns.hs" 3 24 3 29+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/RegularPatterns.hs" 3 8 3 23+                 , srcInfoPoints = []+                 }+               "RegularPatterns")+            Nothing+            Nothing))+      [ OptionsPragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RegularPatterns.hs" 1 1 1 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RegularPatterns.hs" 1 1 1 32+                , SrcSpan "tests/examples/RegularPatterns.hs" 1 32 1 35+                ]+            }+          (Just GHC)+          "-F -pgmFhsx2hs "+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RegularPatterns.hs" 2 1 2 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RegularPatterns.hs" 2 1 2 13+                , SrcSpan "tests/examples/RegularPatterns.hs" 2 30 2 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RegularPatterns.hs" 2 14 2 29+                , srcInfoPoints = []+                }+              "RegularPatterns"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RegularPatterns.hs" 5 1 5 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RegularPatterns.hs" 5 3 5 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 5 1 5 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RegularPatterns.hs" 5 6 5 22+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RegularPatterns.hs" 5 12 5 14 ]+               }+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RegularPatterns.hs" 5 6 5 11+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RegularPatterns.hs" 5 6 5 7+                      , SrcSpan "tests/examples/RegularPatterns.hs" 5 10 5 11+                      ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RegularPatterns.hs" 5 7 5 10+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RegularPatterns.hs" 5 7 5 10+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RegularPatterns.hs" 5 7 5 10+                           , srcInfoPoints = []+                           }+                         "Int"))))+             (TyList+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RegularPatterns.hs" 5 15 5 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RegularPatterns.hs" 5 15 5 16+                      , SrcSpan "tests/examples/RegularPatterns.hs" 5 21 5 22+                      ]+                  }+                (TyList+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RegularPatterns.hs" 5 16 5 21+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RegularPatterns.hs" 5 16 5 17+                         , SrcSpan "tests/examples/RegularPatterns.hs" 5 20 5 21+                         ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RegularPatterns.hs" 5 17 5 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RegularPatterns.hs" 5 17 5 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/RegularPatterns.hs" 5 17 5 20+                              , srcInfoPoints = []+                              }+                            "Int"))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 1 9 9+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RegularPatterns.hs" 6 1 6 35+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 1 6 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PRPat+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/RegularPatterns.hs" 6 3 6 29+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/RegularPatterns.hs" 6 3 6 4+                        , SrcSpan "tests/examples/RegularPatterns.hs" 6 8 6 9+                        , SrcSpan "tests/examples/RegularPatterns.hs" 6 12 6 13+                        , SrcSpan "tests/examples/RegularPatterns.hs" 6 16 6 17+                        , SrcSpan "tests/examples/RegularPatterns.hs" 6 28 6 29+                        ]+                    }+                  [ RPOp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 8+                        , srcInfoPoints = []+                        }+                      (RPPat+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 6+                           , srcInfoPoints = []+                           }+                         (PLit+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 6+                              , srcInfoPoints = []+                              }+                            (Signless+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 6+                                 , srcInfoPoints = []+                                 })+                            (Int+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 6+                                 , srcInfoPoints = []+                                 }+                               0+                               "0")))+                      (RPPlusG+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 6 6 8+                           , srcInfoPoints = []+                           })+                  , RPOp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RegularPatterns.hs" 6 10 6 12+                        , srcInfoPoints = []+                        }+                      (RPPat+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RegularPatterns.hs" 6 10 6 11+                           , srcInfoPoints = []+                           }+                         (PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/RegularPatterns.hs" 6 10 6 11+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/RegularPatterns.hs" 6 10 6 11+                                 , srcInfoPoints = []+                                 }+                               "b")))+                      (RPPlus+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RegularPatterns.hs" 6 11 6 12+                           , srcInfoPoints = []+                           })+                  , RPOp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 16+                        , srcInfoPoints = []+                        }+                      (RPPat+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 15+                           , srcInfoPoints = []+                           }+                         (PLit+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 15+                              , srcInfoPoints = []+                              }+                            (Signless+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 15+                                 , srcInfoPoints = []+                                 })+                            (Int+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 15+                                 , srcInfoPoints = []+                                 }+                               1+                               "1")))+                      (RPOpt+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RegularPatterns.hs" 6 15 6 16+                           , srcInfoPoints = []+                           })+                  , RPSeq+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RegularPatterns.hs" 6 18 6 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/RegularPatterns.hs" 6 18 6 20+                            , SrcSpan "tests/examples/RegularPatterns.hs" 6 22 6 23+                            , SrcSpan "tests/examples/RegularPatterns.hs" 6 25 6 27+                            ]+                        }+                      [ RPPat+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RegularPatterns.hs" 6 21 6 22+                            , srcInfoPoints = []+                            }+                          (PLit+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/RegularPatterns.hs" 6 21 6 22+                               , srcInfoPoints = []+                               }+                             (Signless+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/RegularPatterns.hs" 6 21 6 22+                                  , srcInfoPoints = []+                                  })+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/RegularPatterns.hs" 6 21 6 22+                                  , srcInfoPoints = []+                                  }+                                2+                                "2"))+                      , RPPat+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RegularPatterns.hs" 6 23 6 24+                            , srcInfoPoints = []+                            }+                          (PLit+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/RegularPatterns.hs" 6 23 6 24+                               , srcInfoPoints = []+                               }+                             (Signless+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/RegularPatterns.hs" 6 23 6 24+                                  , srcInfoPoints = []+                                  })+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/RegularPatterns.hs" 6 23 6 24+                                  , srcInfoPoints = []+                                  }+                                3+                                "3"))+                      ]+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RegularPatterns.hs" 6 30 6 35+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RegularPatterns.hs" 6 30 6 31 ]+                   }+                 (List+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RegularPatterns.hs" 6 32 6 35+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RegularPatterns.hs" 6 32 6 33+                          , SrcSpan "tests/examples/RegularPatterns.hs" 6 34 6 35+                          ]+                      }+                    [ Var+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/RegularPatterns.hs" 6 33 6 34+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/RegularPatterns.hs" 6 33 6 34+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/RegularPatterns.hs" 6 33 6 34+                                , srcInfoPoints = []+                                }+                              "b"))+                    ]))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RegularPatterns.hs" 7 1 7 43+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 1 7 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PRPat+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/RegularPatterns.hs" 7 3 7 35+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/RegularPatterns.hs" 7 3 7 4+                        , SrcSpan "tests/examples/RegularPatterns.hs" 7 7 7 8+                        , SrcSpan "tests/examples/RegularPatterns.hs" 7 34 7 35+                        ]+                    }+                  [ RPOp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 7+                        , srcInfoPoints = []+                        }+                      (RPPat+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 6+                           , srcInfoPoints = []+                           }+                         (PLit+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 6+                              , srcInfoPoints = []+                              }+                            (Signless+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 6+                                 , srcInfoPoints = []+                                 })+                            (Int+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 6+                                 , srcInfoPoints = []+                                 }+                               1+                               "1")))+                      (RPPlus+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 6 7 7+                           , srcInfoPoints = []+                           })+                  , RPGuard+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RegularPatterns.hs" 7 9 7 33+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/RegularPatterns.hs" 7 9 7 11+                            , SrcSpan "tests/examples/RegularPatterns.hs" 7 14 7 15+                            , SrcSpan "tests/examples/RegularPatterns.hs" 7 31 7 33+                            ]+                        }+                      (PVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RegularPatterns.hs" 7 12 7 13+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/RegularPatterns.hs" 7 12 7 13+                              , srcInfoPoints = []+                              }+                            "x"))+                      [ Qualifier+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 30+                            , srcInfoPoints = []+                            }+                          (InfixApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 30+                               , srcInfoPoints = []+                               }+                             (InfixApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 25+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 17+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 17+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 17+                                           , srcInfoPoints = []+                                           }+                                         "x")))+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RegularPatterns.hs" 7 18 7 23+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/RegularPatterns.hs" 7 18 7 19+                                         , SrcSpan "tests/examples/RegularPatterns.hs" 7 19 7 22+                                         , SrcSpan "tests/examples/RegularPatterns.hs" 7 22 7 23+                                         ]+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RegularPatterns.hs" 7 18 7 23+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/RegularPatterns.hs" 7 18 7 19+                                            , SrcSpan "tests/examples/RegularPatterns.hs" 7 19 7 22+                                            , SrcSpan "tests/examples/RegularPatterns.hs" 7 22 7 23+                                            ]+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RegularPatterns.hs" 7 19 7 22+                                           , srcInfoPoints = []+                                           }+                                         "mod")))+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RegularPatterns.hs" 7 24 7 25+                                     , srcInfoPoints = []+                                     }+                                   (Int+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RegularPatterns.hs" 7 24 7 25+                                        , srcInfoPoints = []+                                        }+                                      2+                                      "2")))+                             (QVarOp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/RegularPatterns.hs" 7 26 7 28+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RegularPatterns.hs" 7 26 7 28+                                     , srcInfoPoints = []+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RegularPatterns.hs" 7 26 7 28+                                        , srcInfoPoints = []+                                        }+                                      "==")))+                             (Lit+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/RegularPatterns.hs" 7 29 7 30+                                  , srcInfoPoints = []+                                  }+                                (Int+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RegularPatterns.hs" 7 29 7 30+                                     , srcInfoPoints = []+                                     }+                                   0+                                   "0")))+                      ]+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RegularPatterns.hs" 7 36 7 43+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RegularPatterns.hs" 7 36 7 37 ]+                   }+                 (List+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RegularPatterns.hs" 7 38 7 43+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RegularPatterns.hs" 7 38 7 39+                          , SrcSpan "tests/examples/RegularPatterns.hs" 7 42 7 43+                          ]+                      }+                    [ List+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/RegularPatterns.hs" 7 39 7 42+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/RegularPatterns.hs" 7 39 7 40+                              , SrcSpan "tests/examples/RegularPatterns.hs" 7 41 7 42+                              ]+                          }+                        [ Var+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/RegularPatterns.hs" 7 40 7 41+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/RegularPatterns.hs" 7 40 7 41+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/RegularPatterns.hs" 7 40 7 41+                                    , srcInfoPoints = []+                                    }+                                  "x"))+                        ]+                    ]))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RegularPatterns.hs" 8 1 8 32+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 1 8 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PRPat+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/RegularPatterns.hs" 8 3 8 26+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/RegularPatterns.hs" 8 3 8 4+                        , SrcSpan "tests/examples/RegularPatterns.hs" 8 6 8 7+                        , SrcSpan "tests/examples/RegularPatterns.hs" 8 25 8 26+                        ]+                    }+                  [ RPPat+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 5 8 6+                        , srcInfoPoints = []+                        }+                      (PLit+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 5 8 6+                           , srcInfoPoints = []+                           }+                         (Signless+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 5 8 6+                              , srcInfoPoints = []+                              })+                         (Int+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 5 8 6+                              , srcInfoPoints = []+                              }+                            2+                            "2"))+                  , RPAs+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RegularPatterns.hs" 8 8 8 23+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/RegularPatterns.hs" 8 9 8 10 ]+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 8 8 9+                           , srcInfoPoints = []+                           }+                         "a")+                      (RPOp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RegularPatterns.hs" 8 8 8 24+                           , srcInfoPoints = []+                           }+                         (RPSeq+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/RegularPatterns.hs" 8 10 8 23+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/RegularPatterns.hs" 8 10 8 12+                                  , SrcSpan "tests/examples/RegularPatterns.hs" 8 17 8 18+                                  , SrcSpan "tests/examples/RegularPatterns.hs" 8 21 8 23+                                  ]+                              }+                            [ RPCAs+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/RegularPatterns.hs" 8 13 8 17+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/RegularPatterns.hs" 8 14 8 16 ]+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RegularPatterns.hs" 8 13 8 14+                                     , srcInfoPoints = []+                                     }+                                   "b")+                                (RPPat+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RegularPatterns.hs" 8 16 8 17+                                     , srcInfoPoints = []+                                     }+                                   (PWildCard+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RegularPatterns.hs" 8 16 8 17+                                        , srcInfoPoints = []+                                        }))+                            , RPPat+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/RegularPatterns.hs" 8 19 8 20+                                  , srcInfoPoints = []+                                  }+                                (PWildCard+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RegularPatterns.hs" 8 19 8 20+                                     , srcInfoPoints = []+                                     })+                            ])+                         (RPStar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/RegularPatterns.hs" 8 23 8 24+                              , srcInfoPoints = []+                              }))+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RegularPatterns.hs" 8 27 8 32+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RegularPatterns.hs" 8 27 8 28 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RegularPatterns.hs" 8 29 8 32+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RegularPatterns.hs" 8 29 8 30+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RegularPatterns.hs" 8 29 8 30+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/RegularPatterns.hs" 8 29 8 30+                               , srcInfoPoints = []+                               }+                             "b")))+                    (QConOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RegularPatterns.hs" 8 30 8 31+                         , srcInfoPoints = []+                         }+                       (Special+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RegularPatterns.hs" 8 30 8 31+                            , srcInfoPoints = []+                            }+                          (Cons+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/RegularPatterns.hs" 8 30 8 31+                               , srcInfoPoints = []+                               })))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RegularPatterns.hs" 8 31 8 32+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/RegularPatterns.hs" 8 31 8 32+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/RegularPatterns.hs" 8 31 8 32+                               , srcInfoPoints = []+                               }+                             "a")))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 1 9 9+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 1 9 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 3 9 4+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 5 9 9+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RegularPatterns.hs" 9 5 9 6 ]+                   }+                 (List+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 7 9 9+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/RegularPatterns.hs" 9 7 9 8+                          , SrcSpan "tests/examples/RegularPatterns.hs" 9 8 9 9+                          ]+                      }+                    []))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/RegularPatterns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RegularPatterns.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# OPTIONS_GHC -F -pgmFhsx2hs #-}+{-# LANGUAGE RegularPatterns #-}+module RegularPatterns where++f :: [Int] -> [[Int]]+f [0+!, b+, 1?, (| 2, 3 |)] = [b]+f [1+, (| x | x `mod` 2 == 0 |)] = [[x]]+f [2, a@(| b@:_, _ |)*] = b : a+f _ = []
+ tests/examples/RelaxedDo.hs view
@@ -0,0 +1,14 @@+{-# LANGUAGE NondecreasingIndentation #-}+module Main where++import Control.Monad++main :: IO ()+main = do+  when ( 2 > 1) $ do+  putStrLn "a"+  putStrLn "b"++nestedDoBlocks = getChar >>= (\c1 -> do+                 getChar >>= (\c2 -> do+                 getChar >>= (\c3 -> return [c1,c2,c3])))
+ tests/examples/RelaxedDo.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RelaxedDo.hs.parser.golden view
@@ -0,0 +1,878 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 1 1 15 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RelaxedDo.hs" 1 1 1 1+            , SrcSpan "tests/examples/RelaxedDo.hs" 2 1 2 1+            , SrcSpan "tests/examples/RelaxedDo.hs" 2 1 2 1+            , SrcSpan "tests/examples/RelaxedDo.hs" 4 1 4 1+            , SrcSpan "tests/examples/RelaxedDo.hs" 6 1 6 1+            , SrcSpan "tests/examples/RelaxedDo.hs" 7 1 7 1+            , SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 1+            , SrcSpan "tests/examples/RelaxedDo.hs" 15 1 15 1+            , SrcSpan "tests/examples/RelaxedDo.hs" 15 1 15 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 2 1 2 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/RelaxedDo.hs" 2 1 2 7+                  , SrcSpan "tests/examples/RelaxedDo.hs" 2 13 2 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 2 8 2 12+                 , srcInfoPoints = []+                 }+               "Main")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 1 1 1 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RelaxedDo.hs" 1 1 1 13+                , SrcSpan "tests/examples/RelaxedDo.hs" 1 39 1 42+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 1 14 1 38+                , srcInfoPoints = []+                }+              "NondecreasingIndentation"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 4 1 4 21+                , srcInfoPoints = [ SrcSpan "tests/examples/RelaxedDo.hs" 4 1 4 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 4 8 4 21+                  , srcInfoPoints = []+                  }+                "Control.Monad"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 1 6 14+            , srcInfoPoints = [ SrcSpan "tests/examples/RelaxedDo.hs" 6 6 6 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 1 6 5+                , srcInfoPoints = []+                }+              "main"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 9 6 14+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 9 6 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 9 6 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 9 6 11+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 13+                      , SrcSpan "tests/examples/RelaxedDo.hs" 6 13 6 14+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 13+                         , SrcSpan "tests/examples/RelaxedDo.hs" 6 13 6 14+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 13+                            , SrcSpan "tests/examples/RelaxedDo.hs" 6 13 6 14+                            ]+                        }))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 1 10 15+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 1 7 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 1 7 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 6 10 15+               , srcInfoPoints = [ SrcSpan "tests/examples/RelaxedDo.hs" 7 6 7 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 8 10 15+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/RelaxedDo.hs" 7 8 7 10+                      , SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 3+                      , SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 0+                      ]+                  }+                [ Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 10 15+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 10 15+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 16+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 7+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 7+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 7+                                     , srcInfoPoints = []+                                     }+                                   "when")))+                          (Paren+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 8 8 16+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/RelaxedDo.hs" 8 8 8 9+                                   , SrcSpan "tests/examples/RelaxedDo.hs" 8 15 8 16+                                   ]+                               }+                             (InfixApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 10 8 15+                                  , srcInfoPoints = []+                                  }+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 10 8 11+                                     , srcInfoPoints = []+                                     }+                                   (Int+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RelaxedDo.hs" 8 10 8 11+                                        , srcInfoPoints = []+                                        }+                                      2+                                      "2"))+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 12 8 13+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RelaxedDo.hs" 8 12 8 13+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RelaxedDo.hs" 8 12 8 13+                                           , srcInfoPoints = []+                                           }+                                         ">")))+                                (Lit+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 14 8 15+                                     , srcInfoPoints = []+                                     }+                                   (Int+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RelaxedDo.hs" 8 14 8 15+                                        , srcInfoPoints = []+                                        }+                                      1+                                      "1")))))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 17 8 18+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 17 8 18+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 17 8 18+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (Do+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 19 10 15+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/RelaxedDo.hs" 8 19 8 21+                                , SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 3+                                , SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 3+                                , SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 3+                                , SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 0+                                ]+                            }+                          [ Qualifier+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 15+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 15+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 11+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 11+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 11+                                            , srcInfoPoints = []+                                            }+                                          "putStrLn")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RelaxedDo.hs" 9 12 9 15+                                      , srcInfoPoints = []+                                      }+                                    (String+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RelaxedDo.hs" 9 12 9 15+                                         , srcInfoPoints = []+                                         }+                                       "a"+                                       "a")))+                          , Qualifier+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 15+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 15+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 11+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 11+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 11+                                            , srcInfoPoints = []+                                            }+                                          "putStrLn")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/RelaxedDo.hs" 10 12 10 15+                                      , srcInfoPoints = []+                                      }+                                    (String+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/RelaxedDo.hs" 10 12 10 15+                                         , srcInfoPoints = []+                                         }+                                       "b"+                                       "b")))+                          ]))+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 1 14 58+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 15+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 15+                  , srcInfoPoints = []+                  }+                "nestedDoBlocks"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 16 14 58+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RelaxedDo.hs" 12 16 12 17 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 18 14 58+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 18 12 25+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 18 12 25+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 18 12 25+                           , srcInfoPoints = []+                           }+                         "getChar")))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 26 12 29+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 26 12 29+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 26 12 29+                           , srcInfoPoints = []+                           }+                         ">>=")))+                (Paren+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 30 14 58+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/RelaxedDo.hs" 12 30 12 31+                         , SrcSpan "tests/examples/RelaxedDo.hs" 14 57 14 58+                         ]+                     }+                   (Lambda+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 31 14 57+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/RelaxedDo.hs" 12 31 12 32+                            , SrcSpan "tests/examples/RelaxedDo.hs" 12 35 12 37+                            ]+                        }+                      [ PVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 32 12 34+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 32 12 34+                               , srcInfoPoints = []+                               }+                             "c1")+                      ]+                      (Do+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 38 14 57+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/RelaxedDo.hs" 12 38 12 40+                               , SrcSpan "tests/examples/RelaxedDo.hs" 13 18 13 18+                               , SrcSpan "tests/examples/RelaxedDo.hs" 14 57 14 57+                               ]+                           }+                         [ Qualifier+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 13 18 14 57+                               , srcInfoPoints = []+                               }+                             (InfixApp+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 13 18 14 57+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RelaxedDo.hs" 13 18 13 25+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RelaxedDo.hs" 13 18 13 25+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RelaxedDo.hs" 13 18 13 25+                                           , srcInfoPoints = []+                                           }+                                         "getChar")))+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RelaxedDo.hs" 13 26 13 29+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RelaxedDo.hs" 13 26 13 29+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RelaxedDo.hs" 13 26 13 29+                                           , srcInfoPoints = []+                                           }+                                         ">>=")))+                                (Paren+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/RelaxedDo.hs" 13 30 14 57+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/RelaxedDo.hs" 13 30 13 31+                                         , SrcSpan "tests/examples/RelaxedDo.hs" 14 56 14 57+                                         ]+                                     }+                                   (Lambda+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/RelaxedDo.hs" 13 31 14 56+                                        , srcInfoPoints =+                                            [ SrcSpan "tests/examples/RelaxedDo.hs" 13 31 13 32+                                            , SrcSpan "tests/examples/RelaxedDo.hs" 13 35 13 37+                                            ]+                                        }+                                      [ PVar+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/RelaxedDo.hs" 13 32 13 34+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RelaxedDo.hs" 13 32 13 34+                                               , srcInfoPoints = []+                                               }+                                             "c2")+                                      ]+                                      (Do+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/RelaxedDo.hs" 13 38 14 56+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/RelaxedDo.hs" 13 38 13 40+                                               , SrcSpan "tests/examples/RelaxedDo.hs" 14 18 14 18+                                               , SrcSpan "tests/examples/RelaxedDo.hs" 14 18 14 18+                                               , SrcSpan "tests/examples/RelaxedDo.hs" 14 56 14 56+                                               ]+                                           }+                                         [ Qualifier+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/RelaxedDo.hs" 14 18 14 56+                                               , srcInfoPoints = []+                                               }+                                             (InfixApp+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/RelaxedDo.hs" 14 18 14 56+                                                  , srcInfoPoints = []+                                                  }+                                                (Var+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/RelaxedDo.hs" 14 18 14 25+                                                     , srcInfoPoints = []+                                                     }+                                                   (UnQual+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/RelaxedDo.hs"+                                                              14+                                                              18+                                                              14+                                                              25+                                                        , srcInfoPoints = []+                                                        }+                                                      (Ident+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/RelaxedDo.hs"+                                                                 14+                                                                 18+                                                                 14+                                                                 25+                                                           , srcInfoPoints = []+                                                           }+                                                         "getChar")))+                                                (QVarOp+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/RelaxedDo.hs" 14 26 14 29+                                                     , srcInfoPoints = []+                                                     }+                                                   (UnQual+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/RelaxedDo.hs"+                                                              14+                                                              26+                                                              14+                                                              29+                                                        , srcInfoPoints = []+                                                        }+                                                      (Symbol+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/RelaxedDo.hs"+                                                                 14+                                                                 26+                                                                 14+                                                                 29+                                                           , srcInfoPoints = []+                                                           }+                                                         ">>=")))+                                                (Paren+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/RelaxedDo.hs" 14 30 14 56+                                                     , srcInfoPoints =+                                                         [ SrcSpan+                                                             "tests/examples/RelaxedDo.hs"+                                                             14+                                                             30+                                                             14+                                                             31+                                                         , SrcSpan+                                                             "tests/examples/RelaxedDo.hs"+                                                             14+                                                             55+                                                             14+                                                             56+                                                         ]+                                                     }+                                                   (Lambda+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/RelaxedDo.hs"+                                                              14+                                                              31+                                                              14+                                                              55+                                                        , srcInfoPoints =+                                                            [ SrcSpan+                                                                "tests/examples/RelaxedDo.hs"+                                                                14+                                                                31+                                                                14+                                                                32+                                                            , SrcSpan+                                                                "tests/examples/RelaxedDo.hs"+                                                                14+                                                                35+                                                                14+                                                                37+                                                            ]+                                                        }+                                                      [ PVar+                                                          SrcSpanInfo+                                                            { srcInfoSpan =+                                                                SrcSpan+                                                                  "tests/examples/RelaxedDo.hs"+                                                                  14+                                                                  32+                                                                  14+                                                                  34+                                                            , srcInfoPoints = []+                                                            }+                                                          (Ident+                                                             SrcSpanInfo+                                                               { srcInfoSpan =+                                                                   SrcSpan+                                                                     "tests/examples/RelaxedDo.hs"+                                                                     14+                                                                     32+                                                                     14+                                                                     34+                                                               , srcInfoPoints = []+                                                               }+                                                             "c3")+                                                      ]+                                                      (App+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/RelaxedDo.hs"+                                                                 14+                                                                 38+                                                                 14+                                                                 55+                                                           , srcInfoPoints = []+                                                           }+                                                         (Var+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/RelaxedDo.hs"+                                                                    14+                                                                    38+                                                                    14+                                                                    44+                                                              , srcInfoPoints = []+                                                              }+                                                            (UnQual+                                                               SrcSpanInfo+                                                                 { srcInfoSpan =+                                                                     SrcSpan+                                                                       "tests/examples/RelaxedDo.hs"+                                                                       14+                                                                       38+                                                                       14+                                                                       44+                                                                 , srcInfoPoints = []+                                                                 }+                                                               (Ident+                                                                  SrcSpanInfo+                                                                    { srcInfoSpan =+                                                                        SrcSpan+                                                                          "tests/examples/RelaxedDo.hs"+                                                                          14+                                                                          38+                                                                          14+                                                                          44+                                                                    , srcInfoPoints = []+                                                                    }+                                                                  "return")))+                                                         (List+                                                            SrcSpanInfo+                                                              { srcInfoSpan =+                                                                  SrcSpan+                                                                    "tests/examples/RelaxedDo.hs"+                                                                    14+                                                                    45+                                                                    14+                                                                    55+                                                              , srcInfoPoints =+                                                                  [ SrcSpan+                                                                      "tests/examples/RelaxedDo.hs"+                                                                      14+                                                                      45+                                                                      14+                                                                      46+                                                                  , SrcSpan+                                                                      "tests/examples/RelaxedDo.hs"+                                                                      14+                                                                      48+                                                                      14+                                                                      49+                                                                  , SrcSpan+                                                                      "tests/examples/RelaxedDo.hs"+                                                                      14+                                                                      51+                                                                      14+                                                                      52+                                                                  , SrcSpan+                                                                      "tests/examples/RelaxedDo.hs"+                                                                      14+                                                                      54+                                                                      14+                                                                      55+                                                                  ]+                                                              }+                                                            [ Var+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/RelaxedDo.hs"+                                                                        14+                                                                        46+                                                                        14+                                                                        48+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/RelaxedDo.hs"+                                                                           14+                                                                           46+                                                                           14+                                                                           48+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Ident+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/RelaxedDo.hs"+                                                                              14+                                                                              46+                                                                              14+                                                                              48+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "c1"))+                                                            , Var+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/RelaxedDo.hs"+                                                                        14+                                                                        49+                                                                        14+                                                                        51+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/RelaxedDo.hs"+                                                                           14+                                                                           49+                                                                           14+                                                                           51+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Ident+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/RelaxedDo.hs"+                                                                              14+                                                                              49+                                                                              14+                                                                              51+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "c2"))+                                                            , Var+                                                                SrcSpanInfo+                                                                  { srcInfoSpan =+                                                                      SrcSpan+                                                                        "tests/examples/RelaxedDo.hs"+                                                                        14+                                                                        52+                                                                        14+                                                                        54+                                                                  , srcInfoPoints = []+                                                                  }+                                                                (UnQual+                                                                   SrcSpanInfo+                                                                     { srcInfoSpan =+                                                                         SrcSpan+                                                                           "tests/examples/RelaxedDo.hs"+                                                                           14+                                                                           52+                                                                           14+                                                                           54+                                                                     , srcInfoPoints = []+                                                                     }+                                                                   (Ident+                                                                      SrcSpanInfo+                                                                        { srcInfoSpan =+                                                                            SrcSpan+                                                                              "tests/examples/RelaxedDo.hs"+                                                                              14+                                                                              52+                                                                              14+                                                                              54+                                                                        , srcInfoPoints = []+                                                                        }+                                                                      "c3"))+                                                            ])))))+                                         ]))))+                         ])))))+          Nothing+      ]+  , []+  )
+ tests/examples/RelaxedDo.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RelaxedDo.hs.prettyprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE NondecreasingIndentation #-}+module Main where+import Control.Monad++main :: IO ()+main+  = do when (2 > 1) $+         do putStrLn "a"+            putStrLn "b"+nestedDoBlocks+  = getChar >>=+      (\ c1 ->+         do getChar >>=+              (\ c2 -> do getChar >>= (\ c3 -> return [c1, c2, c3])))
+ tests/examples/RoleAnnotations.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE RoleAnnotations, PolyKinds, KindSignatures #-}++module Roles where++data T1 a = K1 a+data T2 a = K2 a++data T5 a = K5 a+data T6 a = K6+data T7 a b = K7 b++type role T1 nominal+type role T2 representational+type role T3 phantom+type role T4 nominal _+type role T5   _
+ tests/examples/RoleAnnotations.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RoleAnnotations.hs.parser.golden view
@@ -0,0 +1,640 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/RoleAnnotations.hs" 1 1 17 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RoleAnnotations.hs" 1 1 1 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 3 1 3 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 3 1 3 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 5 1 5 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 6 1 6 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 8 1 8 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 9 1 9 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 10 1 10 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 12 1 12 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 13 1 13 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 14 1 14 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 15 1 15 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 16 1 16 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 17 1 17 1+            , SrcSpan "tests/examples/RoleAnnotations.hs" 17 1 17 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/RoleAnnotations.hs" 3 1 3 19+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/RoleAnnotations.hs" 3 1 3 7+                  , SrcSpan "tests/examples/RoleAnnotations.hs" 3 14 3 19+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/RoleAnnotations.hs" 3 8 3 13+                 , srcInfoPoints = []+                 }+               "Roles")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 1 1 1 60+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 1 1 1 13+                , SrcSpan "tests/examples/RoleAnnotations.hs" 1 29 1 30+                , SrcSpan "tests/examples/RoleAnnotations.hs" 1 40 1 41+                , SrcSpan "tests/examples/RoleAnnotations.hs" 1 57 1 60+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "RoleAnnotations"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 1 31 1 40+                , srcInfoPoints = []+                }+              "PolyKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 1 42 1 56+                , srcInfoPoints = []+                }+              "KindSignatures"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 5 1 5 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 5 11 5 12 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 5 1 5 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 5 6 5 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 5 6 5 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 5 6 5 8+                     , srcInfoPoints = []+                     }+                   "T1"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 5 9 5 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations.hs" 5 9 5 10+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 5 13 5 17+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RoleAnnotations.hs" 5 13 5 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RoleAnnotations.hs" 5 13 5 15+                      , srcInfoPoints = []+                      }+                    "K1")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/RoleAnnotations.hs" 5 16 5 17+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/RoleAnnotations.hs" 5 16 5 17+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 6 1 6 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 6 11 6 12 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 6 1 6 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 6 6 6 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 6 6 6 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 6 6 6 8+                     , srcInfoPoints = []+                     }+                   "T2"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 6 9 6 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations.hs" 6 9 6 10+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 6 13 6 17+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RoleAnnotations.hs" 6 13 6 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RoleAnnotations.hs" 6 13 6 15+                      , srcInfoPoints = []+                      }+                    "K2")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/RoleAnnotations.hs" 6 16 6 17+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/RoleAnnotations.hs" 6 16 6 17+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 8 1 8 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 8 11 8 12 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 8 1 8 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 8 6 8 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 8 6 8 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 8 6 8 8+                     , srcInfoPoints = []+                     }+                   "T5"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 8 9 8 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations.hs" 8 9 8 10+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 8 13 8 17+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RoleAnnotations.hs" 8 13 8 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RoleAnnotations.hs" 8 13 8 15+                      , srcInfoPoints = []+                      }+                    "K5")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/RoleAnnotations.hs" 8 16 8 17+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/RoleAnnotations.hs" 8 16 8 17+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 9 1 9 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 9 11 9 12 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 9 1 9 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 9 6 9 10+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 9 6 9 8+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 9 6 9 8+                     , srcInfoPoints = []+                     }+                   "T6"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 9 9 9 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations.hs" 9 9 9 10+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 9 13 9 15+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RoleAnnotations.hs" 9 13 9 15+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RoleAnnotations.hs" 9 13 9 15+                      , srcInfoPoints = []+                      }+                    "K6")+                 [])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 10 1 10 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 10 13 10 14 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 10 1 10 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 10 6 10 12+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 10 6 10 10+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations.hs" 10 6 10 8+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RoleAnnotations.hs" 10 6 10 8+                        , srcInfoPoints = []+                        }+                      "T7"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations.hs" 10 9 10 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RoleAnnotations.hs" 10 9 10 10+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 10 11 10 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations.hs" 10 11 10 12+                     , srcInfoPoints = []+                     }+                   "b")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 10 15 10 19+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RoleAnnotations.hs" 10 15 10 19+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RoleAnnotations.hs" 10 15 10 17+                      , srcInfoPoints = []+                      }+                    "K7")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/RoleAnnotations.hs" 10 18 10 19+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/RoleAnnotations.hs" 10 18 10 19+                          , srcInfoPoints = []+                          }+                        "b")+                 ])+          ]+          []+      , RoleAnnotDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 12 1 12 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 12 1 12 5+                , SrcSpan "tests/examples/RoleAnnotations.hs" 12 6 12 10+                ]+            }+          (UnQual+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 12 11 12 13+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 12 11 12 13+                  , srcInfoPoints = []+                  }+                "T1"))+          [ Nominal+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 12 14 12 21+                , srcInfoPoints = []+                }+          ]+      , RoleAnnotDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 13 1 13 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 13 1 13 5+                , SrcSpan "tests/examples/RoleAnnotations.hs" 13 6 13 10+                ]+            }+          (UnQual+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 13 11 13 13+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 13 11 13 13+                  , srcInfoPoints = []+                  }+                "T2"))+          [ Representational+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 13 14 13 30+                , srcInfoPoints = []+                }+          ]+      , RoleAnnotDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 14 1 14 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 14 1 14 5+                , SrcSpan "tests/examples/RoleAnnotations.hs" 14 6 14 10+                ]+            }+          (UnQual+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 14 11 14 13+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 14 11 14 13+                  , srcInfoPoints = []+                  }+                "T3"))+          [ Phantom+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 14 14 14 21+                , srcInfoPoints = []+                }+          ]+      , RoleAnnotDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 15 1 15 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 15 1 15 5+                , SrcSpan "tests/examples/RoleAnnotations.hs" 15 6 15 10+                ]+            }+          (UnQual+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 15 11 15 13+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 15 11 15 13+                  , srcInfoPoints = []+                  }+                "T4"))+          [ Nominal+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 15 14 15 21+                , srcInfoPoints = []+                }+          , RoleWildcard+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 15 22 15 23+                , srcInfoPoints = []+                }+          ]+      , RoleAnnotDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations.hs" 16 1 16 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations.hs" 16 1 16 5+                , SrcSpan "tests/examples/RoleAnnotations.hs" 16 6 16 10+                ]+            }+          (UnQual+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations.hs" 16 11 16 13+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations.hs" 16 11 16 13+                  , srcInfoPoints = []+                  }+                "T5"))+          [ RoleWildcard+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations.hs" 16 16 16 17+                , srcInfoPoints = []+                }+          ]+      ]+  , []+  )
+ tests/examples/RoleAnnotations.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RoleAnnotations.hs.prettyprinter.golden view
@@ -0,0 +1,22 @@+{-# LANGUAGE RoleAnnotations, PolyKinds, KindSignatures #-}+module Roles where++data T1 a = K1 a++data T2 a = K2 a++data T5 a = K5 a++data T6 a = K6++data T7 a b = K7 b++type role T1 nominal++type role T2 representational++type role T3 phantom++type role T4 nominal _++type role T5 _
+ tests/examples/RoleAnnotations2.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE RoleAnnotations #-}++data Foo a = Foo a+type role Foo representational++main = print $ foo 1++foo :: Int -> Int+foo role = 42
+ tests/examples/RoleAnnotations2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RoleAnnotations2.hs.parser.golden view
@@ -0,0 +1,379 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/RoleAnnotations2.hs" 1 1 10 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/RoleAnnotations2.hs" 1 1 1 1+            , SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 1+            , SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 1+            , SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 1+            , SrcSpan "tests/examples/RoleAnnotations2.hs" 4 1 4 1+            , SrcSpan "tests/examples/RoleAnnotations2.hs" 6 1 6 1+            , SrcSpan "tests/examples/RoleAnnotations2.hs" 8 1 8 1+            , SrcSpan "tests/examples/RoleAnnotations2.hs" 9 1 9 1+            , SrcSpan "tests/examples/RoleAnnotations2.hs" 10 1 10 1+            , SrcSpan "tests/examples/RoleAnnotations2.hs" 10 1 10 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations2.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations2.hs" 1 1 1 13+                , SrcSpan "tests/examples/RoleAnnotations2.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations2.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "RoleAnnotations"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 12 3 13 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations2.hs" 3 6 3 11+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations2.hs" 3 6 3 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations2.hs" 3 6 3 9+                     , srcInfoPoints = []+                     }+                   "Foo"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations2.hs" 3 10 3 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations2.hs" 3 10 3 11+                     , srcInfoPoints = []+                     }+                   "a")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations2.hs" 3 14 3 19+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RoleAnnotations2.hs" 3 14 3 19+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RoleAnnotations2.hs" 3 14 3 17+                      , srcInfoPoints = []+                      }+                    "Foo")+                 [ TyVar+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/RoleAnnotations2.hs" 3 18 3 19+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/RoleAnnotations2.hs" 3 18 3 19+                          , srcInfoPoints = []+                          }+                        "a")+                 ])+          ]+          []+      , RoleAnnotDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations2.hs" 4 1 4 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations2.hs" 4 1 4 5+                , SrcSpan "tests/examples/RoleAnnotations2.hs" 4 6 4 10+                ]+            }+          (UnQual+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations2.hs" 4 11 4 14+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations2.hs" 4 11 4 14+                  , srcInfoPoints = []+                  }+                "Foo"))+          [ Representational+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations2.hs" 4 15 4 31+                , srcInfoPoints = []+                }+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations2.hs" 6 1 6 21+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations2.hs" 6 1 6 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations2.hs" 6 1 6 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations2.hs" 6 6 6 21+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 6 6 7 ]+               }+             (InfixApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations2.hs" 6 8 6 21+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations2.hs" 6 8 6 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RoleAnnotations2.hs" 6 8 6 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RoleAnnotations2.hs" 6 8 6 13+                           , srcInfoPoints = []+                           }+                         "print")))+                (QVarOp+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations2.hs" 6 14 6 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RoleAnnotations2.hs" 6 14 6 15+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RoleAnnotations2.hs" 6 14 6 15+                           , srcInfoPoints = []+                           }+                         "$")))+                (App+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations2.hs" 6 16 6 21+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RoleAnnotations2.hs" 6 16 6 19+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RoleAnnotations2.hs" 6 16 6 19+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/RoleAnnotations2.hs" 6 16 6 19+                              , srcInfoPoints = []+                              }+                            "foo")))+                   (Lit+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RoleAnnotations2.hs" 6 20 6 21+                        , srcInfoPoints = []+                        }+                      (Int+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/RoleAnnotations2.hs" 6 20 6 21+                           , srcInfoPoints = []+                           }+                         1+                         "1")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations2.hs" 8 1 8 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 5 8 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations2.hs" 8 1 8 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/RoleAnnotations2.hs" 8 8 8 18+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 12 8 14 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations2.hs" 8 8 8 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations2.hs" 8 8 8 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RoleAnnotations2.hs" 8 8 8 11+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/RoleAnnotations2.hs" 8 15 8 18+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/RoleAnnotations2.hs" 8 15 8 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/RoleAnnotations2.hs" 8 15 8 18+                        , srcInfoPoints = []+                        }+                      "Int"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/RoleAnnotations2.hs" 9 1 9 14+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/RoleAnnotations2.hs" 9 1 9 14+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RoleAnnotations2.hs" 9 1 9 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/RoleAnnotations2.hs" 9 5 9 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/RoleAnnotations2.hs" 9 5 9 9+                       , srcInfoPoints = []+                       }+                     "role")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/RoleAnnotations2.hs" 9 10 9 14+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 10 9 11 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/RoleAnnotations2.hs" 9 12 9 14+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/RoleAnnotations2.hs" 9 12 9 14+                         , srcInfoPoints = []+                         }+                       42+                       "42")))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/RoleAnnotations2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RoleAnnotations2.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE RoleAnnotations #-}++data Foo a = Foo a++type role Foo representational+main = print $ foo 1++foo :: Int -> Int+foo role = 42
+ tests/examples/Rules.hs view
@@ -0,0 +1,1 @@+{-# RULES "head/build" forall (g::forall b.(a->b->b)->b->b) . head (build g) = g (\x _ -> x) badHead #-}
+ tests/examples/Rules.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Rules.hs.parser.golden view
@@ -0,0 +1,321 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 1 2 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Rules.hs" 1 1 1 1+            , SrcSpan "tests/examples/Rules.hs" 1 1 1 1+            , SrcSpan "tests/examples/Rules.hs" 1 1 1 1+            , SrcSpan "tests/examples/Rules.hs" 2 1 2 1+            , SrcSpan "tests/examples/Rules.hs" 2 1 2 1+            ]+        }+      Nothing+      []+      []+      [ RulePragmaDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 1 1 105+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Rules.hs" 1 1 1 10+                , SrcSpan "tests/examples/Rules.hs" 1 102 1 105+                ]+            }+          [ Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 11 1 101+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Rules.hs" 1 11 1 23+                    , SrcSpan "tests/examples/Rules.hs" 1 24 1 30+                    , SrcSpan "tests/examples/Rules.hs" 1 61 1 62+                    , SrcSpan "tests/examples/Rules.hs" 1 78 1 79+                    ]+                }+              "head/build"+              Nothing+              (Just+                 [ TypedRuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 31 1 60+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/Rules.hs" 1 31 1 32+                           , SrcSpan "tests/examples/Rules.hs" 1 33 1 35+                           , SrcSpan "tests/examples/Rules.hs" 1 59 1 60+                           ]+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 32 1 33+                          , srcInfoPoints = []+                          }+                        "g")+                     (TyForall+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 35 1 59+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Rules.hs" 1 35 1 41+                              , SrcSpan "tests/examples/Rules.hs" 1 43 1 44+                              ]+                          }+                        (Just+                           [ UnkindedVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 42 1 43+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 42 1 43+                                    , srcInfoPoints = []+                                    }+                                  "b")+                           ])+                        Nothing+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 44 1 59+                             , srcInfoPoints = [ SrcSpan "tests/examples/Rules.hs" 1 53 1 55 ]+                             }+                           (TyParen+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 44 1 53+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Rules.hs" 1 44 1 45+                                    , SrcSpan "tests/examples/Rules.hs" 1 52 1 53+                                    ]+                                }+                              (TyFun+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 45 1 52+                                   , srcInfoPoints = [ SrcSpan "tests/examples/Rules.hs" 1 46 1 48 ]+                                   }+                                 (TyVar+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 45 1 46+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 45 1 46+                                         , srcInfoPoints = []+                                         }+                                       "a"))+                                 (TyFun+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 48 1 52+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Rules.hs" 1 49 1 51 ]+                                      }+                                    (TyVar+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 48 1 49+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Rules.hs" 1 48 1 49+                                            , srcInfoPoints = []+                                            }+                                          "b"))+                                    (TyVar+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 51 1 52+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Rules.hs" 1 51 1 52+                                            , srcInfoPoints = []+                                            }+                                          "b")))))+                           (TyFun+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 55 1 59+                                , srcInfoPoints = [ SrcSpan "tests/examples/Rules.hs" 1 56 1 58 ]+                                }+                              (TyVar+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 55 1 56+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 55 1 56+                                      , srcInfoPoints = []+                                      }+                                    "b"))+                              (TyVar+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 58 1 59+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 58 1 59+                                      , srcInfoPoints = []+                                      }+                                    "b")))))+                 ])+              (App+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 77+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 67+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 67+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 67+                            , srcInfoPoints = []+                            }+                          "head")))+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 68 1 77+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Rules.hs" 1 68 1 69+                          , SrcSpan "tests/examples/Rules.hs" 1 76 1 77+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 76+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 74+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 74+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 74+                                  , srcInfoPoints = []+                                  }+                                "build")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 75 1 76+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 75 1 76+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 75 1 76+                                  , srcInfoPoints = []+                                  }+                                "g"))))))+              (App+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 101+                   , srcInfoPoints = []+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 93+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 81+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 81+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 81+                               , srcInfoPoints = []+                               }+                             "g")))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 82 1 93+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Rules.hs" 1 82 1 83+                             , SrcSpan "tests/examples/Rules.hs" 1 92 1 93+                             ]+                         }+                       (Lambda+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 83 1 92+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Rules.hs" 1 83 1 84+                                , SrcSpan "tests/examples/Rules.hs" 1 88 1 90+                                ]+                            }+                          [ PVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 84 1 85+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 84 1 85+                                   , srcInfoPoints = []+                                   }+                                 "x")+                          , PWildCard+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 86 1 87+                                , srcInfoPoints = []+                                }+                          ]+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 91 1 92+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 91 1 92+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 91 1 92+                                     , srcInfoPoints = []+                                     }+                                   "x"))))))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 94 1 101+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 94 1 101+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 94 1 101+                            , srcInfoPoints = []+                            }+                          "badHead"))))+          ]+      ]+  , []+  )
+ tests/examples/Rules.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Rules.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# RULES+"head/build" forall (g :: forall b . (a -> b -> b) -> b -> b) .+             head (build g) = g (\ x _ -> x) badHead+ #-}
+ tests/examples/SCCPragmas.hs view
@@ -0,0 +1,3 @@+module SCCPragmas where++x = {-# SCC "wibble" #-} 3
+ tests/examples/SCCPragmas.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SCCPragmas.hs.parser.golden view
@@ -0,0 +1,78 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/SCCPragmas.hs" 1 1 1 1+            , SrcSpan "tests/examples/SCCPragmas.hs" 1 1 1 1+            , SrcSpan "tests/examples/SCCPragmas.hs" 3 1 3 1+            , SrcSpan "tests/examples/SCCPragmas.hs" 4 1 4 1+            , SrcSpan "tests/examples/SCCPragmas.hs" 4 1 4 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 1 1 1 24+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/SCCPragmas.hs" 1 1 1 7+                  , SrcSpan "tests/examples/SCCPragmas.hs" 1 19 1 24+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 1 8 1 18+                 , srcInfoPoints = []+                 }+               "SCCPragmas")+            Nothing+            Nothing))+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 1 3 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 1 3 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 1 3 2+                  , srcInfoPoints = []+                  }+                "x"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 3 3 27+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/SCCPragmas.hs" 3 3 3 4 ]+               }+             (SCCPragma+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 5 3 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/SCCPragmas.hs" 3 13 3 21+                      , SrcSpan "tests/examples/SCCPragmas.hs" 3 22 3 25+                      ]+                  }+                "wibble"+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 26 3 27+                     , srcInfoPoints = []+                     }+                   (Int+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 26 3 27+                        , srcInfoPoints = []+                        }+                      3+                      "3"))))+          Nothing+      ]+  , []+  )
+ tests/examples/SCCPragmas.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SCCPragmas.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module SCCPragmas where+x = {-# SCC "wibble" #-} 3
+ tests/examples/SafeImports1.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE SafeImports #-}+import safe Prelude as P
+ tests/examples/SafeImports1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports1.hs.parser.golden view
@@ -0,0 +1,65 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/SafeImports1.hs" 1 1 1 1+            , SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 1+            , SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 1+            , SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 1+            , SrcSpan "tests/examples/SafeImports1.hs" 3 1 3 1+            , SrcSpan "tests/examples/SafeImports1.hs" 3 1 3 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SafeImports1.hs" 1 1 1 13+                , SrcSpan "tests/examples/SafeImports1.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "SafeImports"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 25+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 7+                    , SrcSpan "tests/examples/SafeImports1.hs" 2 8 2 12+                    , SrcSpan "tests/examples/SafeImports1.hs" 2 21 2 23+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 2 13 2 20+                  , srcInfoPoints = []+                  }+                "Prelude"+          , importQualified = False+          , importSrc = False+          , importSafe = True+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 2 24 2 25+                     , srcInfoPoints = []+                     }+                   "P")+          , importSpecs = Nothing+          }+      ]+      []+  , []+  )
+ tests/examples/SafeImports1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports1.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE SafeImports #-}+import safe Prelude as P
+ tests/examples/SafeImports2.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE Safe #-}+import safe Prelude as P
+ tests/examples/SafeImports2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports2.hs.parser.golden view
@@ -0,0 +1,65 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/SafeImports2.hs" 1 1 1 1+            , SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 1+            , SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 1+            , SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 1+            , SrcSpan "tests/examples/SafeImports2.hs" 3 1 3 1+            , SrcSpan "tests/examples/SafeImports2.hs" 3 1 3 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 1 1 1 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SafeImports2.hs" 1 1 1 13+                , SrcSpan "tests/examples/SafeImports2.hs" 1 19 1 22+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 1 14 1 18+                , srcInfoPoints = []+                }+              "Safe"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 25+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 7+                    , SrcSpan "tests/examples/SafeImports2.hs" 2 8 2 12+                    , SrcSpan "tests/examples/SafeImports2.hs" 2 21 2 23+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 2 13 2 20+                  , srcInfoPoints = []+                  }+                "Prelude"+          , importQualified = False+          , importSrc = False+          , importSafe = True+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 2 24 2 25+                     , srcInfoPoints = []+                     }+                   "P")+          , importSpecs = Nothing+          }+      ]+      []+  , []+  )
+ tests/examples/SafeImports2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports2.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE Safe #-}+import safe Prelude as P
+ tests/examples/SafeImports3.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE Trustworthy #-}+import safe Prelude as P
+ tests/examples/SafeImports3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports3.hs.parser.golden view
@@ -0,0 +1,65 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/SafeImports3.hs" 1 1 1 1+            , SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 1+            , SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 1+            , SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 1+            , SrcSpan "tests/examples/SafeImports3.hs" 3 1 3 1+            , SrcSpan "tests/examples/SafeImports3.hs" 3 1 3 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SafeImports3.hs" 1 1 1 13+                , SrcSpan "tests/examples/SafeImports3.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "Trustworthy"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 25+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 7+                    , SrcSpan "tests/examples/SafeImports3.hs" 2 8 2 12+                    , SrcSpan "tests/examples/SafeImports3.hs" 2 21 2 23+                    ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 2 13 2 20+                  , srcInfoPoints = []+                  }+                "Prelude"+          , importQualified = False+          , importSrc = False+          , importSafe = True+          , importPkg = Nothing+          , importAs =+              Just+                (ModuleName+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 2 24 2 25+                     , srcInfoPoints = []+                     }+                   "P")+          , importSpecs = Nothing+          }+      ]+      []+  , []+  )
+ tests/examples/SafeImports3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports3.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE Trustworthy #-}+import safe Prelude as P
+ tests/examples/ScopedTypeVariables.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE ScopedTypeVariables #-}++test :: IO Char+test = do+    x :: Char <- getChar+    return x+++value :: String = "Hello"++forallTest :: forall x . Eq x => x -> x+forallTest x = if x == x then (undefined :: x) else x
+ tests/examples/ScopedTypeVariables.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ScopedTypeVariables.hs.parser.golden view
@@ -0,0 +1,630 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 1 13 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 1 1 1+            , SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 1+            , SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 1+            , SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 1+            , SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 1 4 1+            , SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 1+            , SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 1 11 1+            , SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 1 12 1+            , SrcSpan "tests/examples/ScopedTypeVariables.hs" 13 1 13 1+            , SrcSpan "tests/examples/ScopedTypeVariables.hs" 13 1 13 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 1 1 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 1 1 13+                , SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 34 1 37+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 14 1 33+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 6 3 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 5+                , srcInfoPoints = []+                }+              "test"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 9 3 16+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 9 3 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 9 3 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 9 3 11+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 12 3 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 12 3 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 12 3 16+                        , srcInfoPoints = []+                        }+                      "Char"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 1 6 13+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 1 4 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 1 4 5+                  , srcInfoPoints = []+                  }+                "test"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 6 6 13+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 6 4 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 8 6 13+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 8 4 10+                      , SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 5+                      , SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 5+                      , SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 0+                      ]+                  }+                [ Generator+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 25+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 15 5 17 ]+                      }+                    (PatTypeSig+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 14+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 7 5 9 ]+                         }+                       (PVar+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 6+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 6+                               , srcInfoPoints = []+                               }+                             "x"))+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 10 5 14+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 10 5 14+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 10 5 14+                                  , srcInfoPoints = []+                                  }+                                "Char"))))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 18 5 25+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 18 5 25+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 18 5 25+                               , srcInfoPoints = []+                               }+                             "getChar")))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 13+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 13+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 11+                                  , srcInfoPoints = []+                                  }+                                "return")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 12 6 13+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 12 6 13+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 12 6 13+                                  , srcInfoPoints = []+                                  }+                                "x"))))+                ]))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 26+            , srcInfoPoints = []+            }+          (PatTypeSig+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 16+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 7 9 9 ]+               }+             (PVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 6+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 6+                     , srcInfoPoints = []+                     }+                   "value"))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 10 9 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 10 9 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 10 9 16+                        , srcInfoPoints = []+                        }+                      "String"))))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 17 9 26+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 17 9 18 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 19 9 26+                  , srcInfoPoints = []+                  }+                (String+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 19 9 26+                     , srcInfoPoints = []+                     }+                   "Hello"+                   "Hello")))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 1 11 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 12 11 14 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 1 11 11+                , srcInfoPoints = []+                }+              "forallTest"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 15 11 40+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 15 11 21+                   , SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 24 11 25+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 22 11 23+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 22 11 23+                         , srcInfoPoints = []+                         }+                       "x")+                ])+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28+                                    , srcInfoPoints = []+                                    }+                                  "Eq")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30+                                 , srcInfoPoints = []+                                 }+                               "x"))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 34 11 40+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 36 11 38 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 34 11 35+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 34 11 35+                        , srcInfoPoints = []+                        }+                      "x"))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 39 11 40+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 39 11 40+                        , srcInfoPoints = []+                        }+                      "x"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 1 12 54+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 1 12 54+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 1 12 11+                   , srcInfoPoints = []+                   }+                 "forallTest")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 12 12 13+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 12 12 13+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 14 12 54+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 14 12 15 ]+                   }+                 (If+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 16 12 54+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 16 12 18+                          , SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 26 12 30+                          , SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 48 12 52+                          ]+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 19 12 25+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 19 12 20+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 19 12 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 19 12 20+                                  , srcInfoPoints = []+                                  }+                                "x")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 21 12 23+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 21 12 23+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 21 12 23+                                  , srcInfoPoints = []+                                  }+                                "==")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 24 12 25+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 24 12 25+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 24 12 25+                                  , srcInfoPoints = []+                                  }+                                "x"))))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 31 12 47+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 31 12 32+                             , SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 46 12 47+                             ]+                         }+                       (ExpTypeSig+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 32 12 46+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 42 12 44 ]+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 32 12 41+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 32 12 41+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 32 12 41+                                     , srcInfoPoints = []+                                     }+                                   "undefined")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 45 12 46+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 45 12 46+                                  , srcInfoPoints = []+                                  }+                                "x"))))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 53 12 54+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 53 12 54+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 53 12 54+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/ScopedTypeVariables.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ScopedTypeVariables.hs.prettyprinter.golden view
@@ -0,0 +1,10 @@+{-# LANGUAGE ScopedTypeVariables #-}++test :: IO Char+test+  = do x :: Char <- getChar+       return x+value :: String = "Hello"++forallTest :: forall x . Eq x => x -> x+forallTest x = if x == x then (undefined :: x) else x
+ tests/examples/SimpleDeriving.hs view
@@ -0,0 +1,1 @@+data T = T deriving Eq
+ tests/examples/SimpleDeriving.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SimpleDeriving.hs.parser.golden view
@@ -0,0 +1,101 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 2 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 1+            , SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 1+            , SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 1+            , SrcSpan "tests/examples/SimpleDeriving.hs" 2 1 2 1+            , SrcSpan "tests/examples/SimpleDeriving.hs" 2 1 2 1+            ]+        }+      Nothing+      []+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SimpleDeriving.hs" 1 8 1 9 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 6 1 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 6 1 7+                  , srcInfoPoints = []+                  }+                "T"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SimpleDeriving.hs" 1 10 1 11+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SimpleDeriving.hs" 1 10 1 11+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SimpleDeriving.hs" 1 10 1 11+                      , srcInfoPoints = []+                      }+                    "T")+                 [])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SimpleDeriving.hs" 1 12 1 23+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SimpleDeriving.hs" 1 12 1 20 ]+                }+              Nothing+              [ IRule+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/SimpleDeriving.hs" 1 21 1 23+                    , srcInfoPoints = []+                    }+                  Nothing+                  Nothing+                  (IHCon+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/SimpleDeriving.hs" 1 21 1 23+                       , srcInfoPoints = []+                       }+                     (UnQual+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/SimpleDeriving.hs" 1 21 1 23+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/SimpleDeriving.hs" 1 21 1 23+                             , srcInfoPoints = []+                             }+                           "Eq")))+              ]+          ]+      ]+  , []+  )
+ tests/examples/SimpleDeriving.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SimpleDeriving.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+data T = T deriving Eq
+ tests/examples/SingleClassAsst.hs view
@@ -0,0 +1,4 @@+module Test where++foo :: (Eq a) => a -> a+foo x = x
+ tests/examples/SingleClassAsst.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SingleClassAsst.hs.parser.golden view
@@ -0,0 +1,214 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 1 1+            , SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 1 1+            , SrcSpan "tests/examples/SingleClassAsst.hs" 3 1 3 1+            , SrcSpan "tests/examples/SingleClassAsst.hs" 4 1 4 1+            , SrcSpan "tests/examples/SingleClassAsst.hs" 5 1 5 1+            , SrcSpan "tests/examples/SingleClassAsst.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 1 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 1 7+                  , SrcSpan "tests/examples/SingleClassAsst.hs" 1 13 1 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/SingleClassAsst.hs" 1 8 1 12+                 , srcInfoPoints = []+                 }+               "Test")+            Nothing+            Nothing))+      []+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/SingleClassAsst.hs" 3 1 3 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SingleClassAsst.hs" 3 5 3 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 3 1 3 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 24+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 9+                         , SrcSpan "tests/examples/SingleClassAsst.hs" 3 13 3 14+                         , SrcSpan "tests/examples/SingleClassAsst.hs" 3 15 3 17+                         ]+                     }+                   (ParenA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 9+                            , SrcSpan "tests/examples/SingleClassAsst.hs" 3 13 3 14+                            , SrcSpan "tests/examples/SingleClassAsst.hs" 3 15 3 17+                            ]+                        }+                      (TypeA+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13+                           , srcInfoPoints = []+                           }+                         (TyApp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13+                              , srcInfoPoints = []+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11+                                       , srcInfoPoints = []+                                       }+                                     "Eq")))+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13+                                    , srcInfoPoints = []+                                    }+                                  "a")))))))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SingleClassAsst.hs" 3 18 3 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/SingleClassAsst.hs" 3 20 3 22 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SingleClassAsst.hs" 3 18 3 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SingleClassAsst.hs" 3 18 3 19+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SingleClassAsst.hs" 3 23 3 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SingleClassAsst.hs" 3 23 3 24+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/SingleClassAsst.hs" 4 1 4 10+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SingleClassAsst.hs" 4 1 4 10+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 4 1 4 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 4 5 4 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 4 5 4 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SingleClassAsst.hs" 4 7 4 10+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/SingleClassAsst.hs" 4 7 4 8 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SingleClassAsst.hs" 4 9 4 10+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SingleClassAsst.hs" 4 9 4 10+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SingleClassAsst.hs" 4 9 4 10+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/SingleClassAsst.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SingleClassAsst.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+module Test where++foo :: (Eq a) => a -> a+foo x = x
+ tests/examples/SpecializeInstance.hs view
@@ -0,0 +1,4 @@+instance Sized a => Sized (Digit a) where+       {-# SPECIALIZE instance Sized (Digit (Elem a)) #-}+       {-# SPECIALIZE instance Sized (Digit (Node a)) #-}+       size xs = foldl (\ i x -> i + size x) 0 xs
+ tests/examples/SpecializeInstance.hs.exactprinter.golden view
@@ -0,0 +1,5 @@+instance Sized a => Sized (Digit a) where+       {-# SPECIALISE instance Sized (Digit (Elem a)) #-}+       {-# SPECIALISE instance Sized (Digit (Node a)) #-}+       size xs = foldl (\ i x -> i + size x) 0 xs+
+ tests/examples/SpecializeInstance.hs.parser.golden view
@@ -0,0 +1,813 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 1 1+            , SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 1 1+            , SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 1 1+            , SrcSpan "tests/examples/SpecializeInstance.hs" 5 1 5 1+            , SrcSpan "tests/examples/SpecializeInstance.hs" 5 1 5 1+            ]+        }+      Nothing+      []+      []+      [ InstDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 5 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 1 9+                , SrcSpan "tests/examples/SpecializeInstance.hs" 1 37 1 42+                , SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 8+                , SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 8+                , SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 8+                , SrcSpan "tests/examples/SpecializeInstance.hs" 5 1 5 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 36+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15+                                    , srcInfoPoints = []+                                    }+                                  "Sized")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializeInstance.hs" 1 21 1 36+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializeInstance.hs" 1 21 1 26+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializeInstance.hs" 1 21 1 26+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/SpecializeInstance.hs" 1 21 1 26+                           , srcInfoPoints = []+                           }+                         "Sized")))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializeInstance.hs" 1 27 1 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 27 1 28+                         , SrcSpan "tests/examples/SpecializeInstance.hs" 1 35 1 36+                         ]+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializeInstance.hs" 1 28 1 35+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/SpecializeInstance.hs" 1 28 1 33+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 28 1 33+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/SpecializeInstance.hs" 1 28 1 33+                                 , srcInfoPoints = []+                                 }+                               "Digit")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/SpecializeInstance.hs" 1 34 1 35+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 34 1 35+                              , srcInfoPoints = []+                              }+                            "a"))))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 58+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 22+                       , SrcSpan "tests/examples/SpecializeInstance.hs" 2 23 2 31+                       , SrcSpan "tests/examples/SpecializeInstance.hs" 2 55 2 58+                       ]+                   }+                 (InstSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 58+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 22+                          , SrcSpan "tests/examples/SpecializeInstance.hs" 2 23 2 31+                          , SrcSpan "tests/examples/SpecializeInstance.hs" 2 55 2 58+                          ]+                      }+                    (IRule+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 54+                         , srcInfoPoints = []+                         }+                       Nothing+                       Nothing+                       (IHApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 54+                            , srcInfoPoints = []+                            }+                          (IHCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 37+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 37+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 37+                                     , srcInfoPoints = []+                                     }+                                   "Sized")))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializeInstance.hs" 2 38 2 54+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/SpecializeInstance.hs" 2 38 2 39+                                   , SrcSpan "tests/examples/SpecializeInstance.hs" 2 53 2 54+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializeInstance.hs" 2 39 2 53+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/SpecializeInstance.hs" 2 39 2 44+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/SpecializeInstance.hs" 2 39 2 44+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/SpecializeInstance.hs" 2 39 2 44+                                           , srcInfoPoints = []+                                           }+                                         "Digit")))+                                (TyParen+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/SpecializeInstance.hs" 2 45 2 53+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/SpecializeInstance.hs" 2 45 2 46+                                         , SrcSpan "tests/examples/SpecializeInstance.hs" 2 52 2 53+                                         ]+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/SpecializeInstance.hs" 2 46 2 52+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/SpecializeInstance.hs" 2 46 2 50+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/SpecializeInstance.hs" 2 46 2 50+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/SpecializeInstance.hs"+                                                       2+                                                       46+                                                       2+                                                       50+                                                 , srcInfoPoints = []+                                                 }+                                               "Elem")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/SpecializeInstance.hs" 2 51 2 52+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/SpecializeInstance.hs" 2 51 2 52+                                              , srcInfoPoints = []+                                              }+                                            "a")))))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 58+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 22+                       , SrcSpan "tests/examples/SpecializeInstance.hs" 3 23 3 31+                       , SrcSpan "tests/examples/SpecializeInstance.hs" 3 55 3 58+                       ]+                   }+                 (InstSig+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 58+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 22+                          , SrcSpan "tests/examples/SpecializeInstance.hs" 3 23 3 31+                          , SrcSpan "tests/examples/SpecializeInstance.hs" 3 55 3 58+                          ]+                      }+                    (IRule+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 54+                         , srcInfoPoints = []+                         }+                       Nothing+                       Nothing+                       (IHApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 54+                            , srcInfoPoints = []+                            }+                          (IHCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 37+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 37+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 37+                                     , srcInfoPoints = []+                                     }+                                   "Sized")))+                          (TyParen+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializeInstance.hs" 3 38 3 54+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/SpecializeInstance.hs" 3 38 3 39+                                   , SrcSpan "tests/examples/SpecializeInstance.hs" 3 53 3 54+                                   ]+                               }+                             (TyApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializeInstance.hs" 3 39 3 53+                                  , srcInfoPoints = []+                                  }+                                (TyCon+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/SpecializeInstance.hs" 3 39 3 44+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/SpecializeInstance.hs" 3 39 3 44+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/SpecializeInstance.hs" 3 39 3 44+                                           , srcInfoPoints = []+                                           }+                                         "Digit")))+                                (TyParen+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/SpecializeInstance.hs" 3 45 3 53+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/SpecializeInstance.hs" 3 45 3 46+                                         , SrcSpan "tests/examples/SpecializeInstance.hs" 3 52 3 53+                                         ]+                                     }+                                   (TyApp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/SpecializeInstance.hs" 3 46 3 52+                                        , srcInfoPoints = []+                                        }+                                      (TyCon+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/SpecializeInstance.hs" 3 46 3 50+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/SpecializeInstance.hs" 3 46 3 50+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan+                                                       "tests/examples/SpecializeInstance.hs"+                                                       3+                                                       46+                                                       3+                                                       50+                                                 , srcInfoPoints = []+                                                 }+                                               "Node")))+                                      (TyVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/SpecializeInstance.hs" 3 51 3 52+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/SpecializeInstance.hs" 3 51 3 52+                                              , srcInfoPoints = []+                                              }+                                            "a")))))))))+             , InsDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 50+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 50+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 50+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 12+                             , srcInfoPoints = []+                             }+                           "size")+                        [ PVar+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/SpecializeInstance.hs" 4 13 4 15+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/SpecializeInstance.hs" 4 13 4 15+                                 , srcInfoPoints = []+                                 }+                               "xs")+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/SpecializeInstance.hs" 4 16 4 50+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/SpecializeInstance.hs" 4 16 4 17 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/SpecializeInstance.hs" 4 18 4 50+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/SpecializeInstance.hs" 4 18 4 47+                                   , srcInfoPoints = []+                                   }+                                 (App+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/SpecializeInstance.hs" 4 18 4 45+                                      , srcInfoPoints = []+                                      }+                                    (Var+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/SpecializeInstance.hs" 4 18 4 23+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/SpecializeInstance.hs" 4 18 4 23+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/SpecializeInstance.hs"+                                                     4+                                                     18+                                                     4+                                                     23+                                               , srcInfoPoints = []+                                               }+                                             "foldl")))+                                    (Paren+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/SpecializeInstance.hs" 4 24 4 45+                                         , srcInfoPoints =+                                             [ SrcSpan+                                                 "tests/examples/SpecializeInstance.hs" 4 24 4 25+                                             , SrcSpan+                                                 "tests/examples/SpecializeInstance.hs" 4 44 4 45+                                             ]+                                         }+                                       (Lambda+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/SpecializeInstance.hs" 4 25 4 44+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/SpecializeInstance.hs" 4 25 4 26+                                                , SrcSpan+                                                    "tests/examples/SpecializeInstance.hs" 4 31 4 33+                                                ]+                                            }+                                          [ PVar+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/SpecializeInstance.hs"+                                                      4+                                                      27+                                                      4+                                                      28+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/SpecializeInstance.hs"+                                                         4+                                                         27+                                                         4+                                                         28+                                                   , srcInfoPoints = []+                                                   }+                                                 "i")+                                          , PVar+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan+                                                      "tests/examples/SpecializeInstance.hs"+                                                      4+                                                      29+                                                      4+                                                      30+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan+                                                         "tests/examples/SpecializeInstance.hs"+                                                         4+                                                         29+                                                         4+                                                         30+                                                   , srcInfoPoints = []+                                                   }+                                                 "x")+                                          ]+                                          (InfixApp+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/SpecializeInstance.hs"+                                                     4+                                                     34+                                                     4+                                                     44+                                               , srcInfoPoints = []+                                               }+                                             (Var+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/SpecializeInstance.hs"+                                                        4+                                                        34+                                                        4+                                                        35+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/SpecializeInstance.hs"+                                                           4+                                                           34+                                                           4+                                                           35+                                                     , srcInfoPoints = []+                                                     }+                                                   (Ident+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/SpecializeInstance.hs"+                                                              4+                                                              34+                                                              4+                                                              35+                                                        , srcInfoPoints = []+                                                        }+                                                      "i")))+                                             (QVarOp+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/SpecializeInstance.hs"+                                                        4+                                                        36+                                                        4+                                                        37+                                                  , srcInfoPoints = []+                                                  }+                                                (UnQual+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/SpecializeInstance.hs"+                                                           4+                                                           36+                                                           4+                                                           37+                                                     , srcInfoPoints = []+                                                     }+                                                   (Symbol+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/SpecializeInstance.hs"+                                                              4+                                                              36+                                                              4+                                                              37+                                                        , srcInfoPoints = []+                                                        }+                                                      "+")))+                                             (App+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/SpecializeInstance.hs"+                                                        4+                                                        38+                                                        4+                                                        44+                                                  , srcInfoPoints = []+                                                  }+                                                (Var+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/SpecializeInstance.hs"+                                                           4+                                                           38+                                                           4+                                                           42+                                                     , srcInfoPoints = []+                                                     }+                                                   (UnQual+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/SpecializeInstance.hs"+                                                              4+                                                              38+                                                              4+                                                              42+                                                        , srcInfoPoints = []+                                                        }+                                                      (Ident+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/SpecializeInstance.hs"+                                                                 4+                                                                 38+                                                                 4+                                                                 42+                                                           , srcInfoPoints = []+                                                           }+                                                         "size")))+                                                (Var+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/SpecializeInstance.hs"+                                                           4+                                                           43+                                                           4+                                                           44+                                                     , srcInfoPoints = []+                                                     }+                                                   (UnQual+                                                      SrcSpanInfo+                                                        { srcInfoSpan =+                                                            SrcSpan+                                                              "tests/examples/SpecializeInstance.hs"+                                                              4+                                                              43+                                                              4+                                                              44+                                                        , srcInfoPoints = []+                                                        }+                                                      (Ident+                                                         SrcSpanInfo+                                                           { srcInfoSpan =+                                                               SrcSpan+                                                                 "tests/examples/SpecializeInstance.hs"+                                                                 4+                                                                 43+                                                                 4+                                                                 44+                                                           , srcInfoPoints = []+                                                           }+                                                         "x"))))))))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/SpecializeInstance.hs" 4 46 4 47+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/SpecializeInstance.hs" 4 46 4 47+                                         , srcInfoPoints = []+                                         }+                                       0+                                       "0")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/SpecializeInstance.hs" 4 48 4 50+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/SpecializeInstance.hs" 4 48 4 50+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/SpecializeInstance.hs" 4 48 4 50+                                         , srcInfoPoints = []+                                         }+                                       "xs")))))+                        Nothing+                    ])+             ])+      ]+  , []+  )
+ tests/examples/SpecializeInstance.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SpecializeInstance.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+instance Sized a => Sized (Digit a) where+        {-# SPECIALISE instance Sized (Digit (Elem a)) #-}+        +        {-# SPECIALISE instance Sized (Digit (Node a)) #-}+        size xs = foldl (\ i x -> i + size x) 0 xs
+ tests/examples/SpecializePhaseControl.hs view
@@ -0,0 +1,15 @@+{-# SPECIALISE [1] x ::+        Integer -> Integer -> Integer,+        Integer -> Int -> Integer,+        Int -> Int -> Int #-}+{-# INLINABLE [1] x #-}+x :: (Num a, Integral b) => a -> b -> a+x = undefined++{-# SPECIALISE INLINE [999] y ::+        Integer -> Integer -> Integer,+        Integer -> Int -> Integer,+        Int -> Int -> Int #-}+{-# INLINABLE [1] y #-}+y :: (Num a, Integral b) => a -> b -> a+y = undefined
+ tests/examples/SpecializePhaseControl.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SpecializePhaseControl.hs.parser.golden view
@@ -0,0 +1,1036 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 16 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 1 1+            , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 1 1+            , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 1 1+            , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 1 6 1+            , SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 1 7 1+            , SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 1 9 1+            , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 1 14 1+            , SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 1 15 1+            , SrcSpan "tests/examples/SpecializePhaseControl.hs" 16 1 16 1+            , SrcSpan "tests/examples/SpecializePhaseControl.hs" 16 1 16 1+            ]+        }+      Nothing+      []+      []+      [ SpecSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 4 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 1 15+                , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 22 1 24+                , SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 38 2 39+                , SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 34 3 35+                , SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 27 4 30+                ]+            }+          (Just+             (ActiveFrom+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 16 1 19+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 16 1 17+                      , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 17 1 18+                      , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 18 1 19+                      ]+                  }+                1))+          (UnQual+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 20 1 21+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 20 1 21+                  , srcInfoPoints = []+                  }+                "x"))+          [ TyForall+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 38+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 17 2 19 ]+                }+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 38+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 17 2 19 ]+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 16+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 16+                            , srcInfoPoints = []+                            }+                          "Integer")))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 20 2 38+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 28 2 30 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 20 2 27+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 20 2 27+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 20 2 27+                               , srcInfoPoints = []+                               }+                             "Integer")))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 31 2 38+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 31 2 38+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 31 2 38+                               , srcInfoPoints = []+                               }+                             "Integer")))))+          , TyForall+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 34+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 17 3 19 ]+                }+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 34+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 17 3 19 ]+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 16+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 16+                            , srcInfoPoints = []+                            }+                          "Integer")))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 20 3 34+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 24 3 26 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 20 3 23+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 20 3 23+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 20 3 23+                               , srcInfoPoints = []+                               }+                             "Int")))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 27 3 34+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 27 3 34+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 27 3 34+                               , srcInfoPoints = []+                               }+                             "Integer")))))+          , TyForall+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 26+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 13 4 15 ]+                }+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 13 4 15 ]+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 12+                            , srcInfoPoints = []+                            }+                          "Int")))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 16 4 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 20 4 22 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 16 4 19+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 16 4 19+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 16 4 19+                               , srcInfoPoints = []+                               }+                             "Int")))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 23 4 26+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 23 4 26+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 23 4 26+                               , srcInfoPoints = []+                               }+                             "Int")))))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 1 6 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 3 6 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 1 6 2+                , srcInfoPoints = []+                }+              "x"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 6 6 40+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 6 6 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 6 6 7+                         , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 12 6 13+                         , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 24 6 25+                         , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 26 6 28+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10+                                     , srcInfoPoints = []+                                     }+                                   "Num")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/SpecializePhaseControl.hs" 6 14 6 22+                                     , srcInfoPoints = []+                                     }+                                   "Integral")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24+                                  , srcInfoPoints = []+                                  }+                                "b")))+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 29 6 40+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 31 6 33 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 29 6 30+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 29 6 30+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 34 6 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 36 6 38 ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 34 6 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 34 6 35+                           , srcInfoPoints = []+                           }+                         "b"))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 39 6 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 39 6 40+                           , srcInfoPoints = []+                           }+                         "a")))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 1 7 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 1 7 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 1 7 2+                  , srcInfoPoints = []+                  }+                "x"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 3 7 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 3 7 4 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 5 7 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 5 7 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 5 7 14+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      , SpecInlineSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 1 12 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 1 9 22+                , SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 31 9 33+                , SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 38 10 39+                , SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 34 11 35+                , SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 27 12 30+                ]+            }+          True+          (Just+             (ActiveFrom+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 23 9 28+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 23 9 24+                      , SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 24 9 27+                      , SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 27 9 28+                      ]+                  }+                999))+          (UnQual+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 29 9 30+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 29 9 30+                  , srcInfoPoints = []+                  }+                "y"))+          [ TyForall+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 38+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 17 10 19 ]+                }+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 38+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 17 10 19 ]+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 16+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 16+                            , srcInfoPoints = []+                            }+                          "Integer")))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 20 10 38+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 28 10 30 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 20 10 27+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 20 10 27+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 20 10 27+                               , srcInfoPoints = []+                               }+                             "Integer")))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 31 10 38+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 31 10 38+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 31 10 38+                               , srcInfoPoints = []+                               }+                             "Integer")))))+          , TyForall+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 34+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 17 11 19 ]+                }+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 34+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 17 11 19 ]+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 16+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 16+                            , srcInfoPoints = []+                            }+                          "Integer")))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 20 11 34+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 24 11 26 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 20 11 23+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 20 11 23+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 20 11 23+                               , srcInfoPoints = []+                               }+                             "Int")))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 27 11 34+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 27 11 34+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 27 11 34+                               , srcInfoPoints = []+                               }+                             "Integer")))))+          , TyForall+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 26+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 13 12 15 ]+                }+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 13 12 15 ]+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 12+                            , srcInfoPoints = []+                            }+                          "Int")))+                 (TyFun+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 16 12 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 20 12 22 ]+                      }+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 16 12 19+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 16 12 19+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 16 12 19+                               , srcInfoPoints = []+                               }+                             "Int")))+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 23 12 26+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 23 12 26+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 23 12 26+                               , srcInfoPoints = []+                               }+                             "Int")))))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 1 14 40+            , srcInfoPoints =+                [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 3 14 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 1 14 2+                , srcInfoPoints = []+                }+              "y"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 6 14 40+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 6 14 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 6 14 7+                         , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 12 14 13+                         , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 24 14 25+                         , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 26 14 28+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 10+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/SpecializePhaseControl.hs" 14 7 14 10+                                     , srcInfoPoints = []+                                     }+                                   "Num")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan+                                           "tests/examples/SpecializePhaseControl.hs" 14 14 14 22+                                     , srcInfoPoints = []+                                     }+                                   "Integral")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24+                                  , srcInfoPoints = []+                                  }+                                "b")))+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 29 14 40+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 31 14 33 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 29 14 30+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 29 14 30+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 34 14 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 36 14 38 ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 34 14 35+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 34 14 35+                           , srcInfoPoints = []+                           }+                         "b"))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 39 14 40+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 39 14 40+                           , srcInfoPoints = []+                           }+                         "a")))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 1 15 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 1 15 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 1 15 2+                  , srcInfoPoints = []+                  }+                "y"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 3 15 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 3 15 4 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 5 15 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 5 15 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 5 15 14+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      ]+  , [ Comment+        True+        (SrcSpan "tests/examples/SpecializePhaseControl.hs" 5 1 5 24)+        "# INLINABLE [1] x #"+    , Comment+        True+        (SrcSpan "tests/examples/SpecializePhaseControl.hs" 13 1 13 24)+        "# INLINABLE [1] y #"+    ]+  )
+ tests/examples/SpecializePhaseControl.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SpecializePhaseControl.hs.prettyprinter.golden view
@@ -0,0 +1,11 @@+{-# SPECIALISE [1] x :: Integer -> Integer -> Integer,+                 Integer -> Int -> Integer, Int -> Int -> Int #-}++x :: (Num a, Integral b) => a -> b -> a+x = undefined++{-# SPECIALISE INLINE [999] y :: Integer -> Integer -> Integer,+                 Integer -> Int -> Integer, Int -> Int -> Int #-}++y :: (Num a, Integral b) => a -> b -> a+y = undefined
+ tests/examples/StarInType.hs view
@@ -0,0 +1,5 @@+{-# language TypeOperators, KindSignatures #-}+data B = B+data a * b = Foo+type A = B * B+main = print 1
+ tests/examples/StarInType.hs.exactprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeOperators, KindSignatures #-}+data B = B+data a * b = Foo+type A = B * B+main = print 1+
+ tests/examples/StarInType.hs.parser.golden view
@@ -0,0 +1,287 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/StarInType.hs" 1 1 1 1+            , SrcSpan "tests/examples/StarInType.hs" 2 1 2 1+            , SrcSpan "tests/examples/StarInType.hs" 2 1 2 1+            , SrcSpan "tests/examples/StarInType.hs" 2 1 2 1+            , SrcSpan "tests/examples/StarInType.hs" 3 1 3 1+            , SrcSpan "tests/examples/StarInType.hs" 4 1 4 1+            , SrcSpan "tests/examples/StarInType.hs" 5 1 5 1+            , SrcSpan "tests/examples/StarInType.hs" 6 1 6 1+            , SrcSpan "tests/examples/StarInType.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 1 1 1 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/StarInType.hs" 1 1 1 13+                , SrcSpan "tests/examples/StarInType.hs" 1 27 1 28+                , SrcSpan "tests/examples/StarInType.hs" 1 44 1 47+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 1 29 1 43+                , srcInfoPoints = []+                }+              "KindSignatures"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 1 2 11+            , srcInfoPoints =+                [ SrcSpan "tests/examples/StarInType.hs" 2 8 2 9 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 1 2 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 6 2 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 6 2 7+                  , srcInfoPoints = []+                  }+                "B"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 10 2 11+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 10 2 11+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 10 2 11+                      , srcInfoPoints = []+                      }+                    "B")+                 [])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 1 3 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/StarInType.hs" 3 12 3 13 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 6 3 11+               , srcInfoPoints = []+               }+             (DHInfix+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 6 3 11+                  , srcInfoPoints = []+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 6 3 7+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 6 3 7+                        , srcInfoPoints = []+                        }+                      "a"))+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 8 3 9+                     , srcInfoPoints = []+                     }+                   "*"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 10 3 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 10 3 11+                     , srcInfoPoints = []+                     }+                   "b")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 14 3 17+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 14 3 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 14 3 17+                      , srcInfoPoints = []+                      }+                    "Foo")+                 [])+          ]+          []+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 1 4 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/StarInType.hs" 4 1 4 5+                , SrcSpan "tests/examples/StarInType.hs" 4 8 4 9+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 6 4 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 6 4 7+                  , srcInfoPoints = []+                  }+                "A"))+          (TyInfix+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 10 4 15+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 10 4 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 10 4 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 10 4 11+                        , srcInfoPoints = []+                        }+                      "B")))+             (UnpromotedName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 12 4 13+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 12 4 13+                     , srcInfoPoints = []+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 12 4 13+                        , srcInfoPoints = []+                        }+                      "*")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 14 4 15+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 14 4 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 14 4 15+                        , srcInfoPoints = []+                        }+                      "B"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 1 5 15+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 1 5 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 1 5 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 6 5 15+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/StarInType.hs" 5 6 5 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 8 5 15+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 8 5 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 8 5 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 8 5 13+                           , srcInfoPoints = []+                           }+                         "print")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 14 5 15+                     , srcInfoPoints = []+                     }+                   (Int+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 14 5 15+                        , srcInfoPoints = []+                        }+                      1+                      "1"))))+          Nothing+      ]+  , []+  )
+ tests/examples/StarInType.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/StarInType.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE TypeOperators, KindSignatures #-}++data B = B++data a * b = Foo++type A = B * B+main = print 1
+ tests/examples/T11727.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PatternSynonyms #-}++module T11727 where++pattern A,B :: Int+pattern A = 5+pattern B = 5+
+ tests/examples/T11727.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T11727.hs.parser.golden view
@@ -0,0 +1,180 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/T11727.hs" 1 1 1 1+            , SrcSpan "tests/examples/T11727.hs" 3 1 3 1+            , SrcSpan "tests/examples/T11727.hs" 3 1 3 1+            , SrcSpan "tests/examples/T11727.hs" 5 1 5 1+            , SrcSpan "tests/examples/T11727.hs" 6 1 6 1+            , SrcSpan "tests/examples/T11727.hs" 7 1 7 1+            , SrcSpan "tests/examples/T11727.hs" 9 1 9 1+            , SrcSpan "tests/examples/T11727.hs" 9 1 9 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 3 1 3 20+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/T11727.hs" 3 1 3 7+                  , SrcSpan "tests/examples/T11727.hs" 3 15 3 20+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 3 8 3 14+                 , srcInfoPoints = []+                 }+               "T11727")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/T11727.hs" 1 1 1 13+                , SrcSpan "tests/examples/T11727.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      ]+      []+      [ PatSynSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 1 5 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/T11727.hs" 5 1 5 8+                , SrcSpan "tests/examples/T11727.hs" 5 10 5 11+                , SrcSpan "tests/examples/T11727.hs" 5 13 5 15+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 9 5 10+                , srcInfoPoints = []+                }+              "A"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 11 5 12+                , srcInfoPoints = []+                }+              "B"+          ]+          Nothing+          Nothing+          Nothing+          Nothing+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 16 5 19+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 16 5 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 16 5 19+                     , srcInfoPoints = []+                     }+                   "Int")))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 1 6 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/T11727.hs" 6 1 6 8+                , SrcSpan "tests/examples/T11727.hs" 6 11 6 12+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 9 6 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 9 6 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 9 6 10+                     , srcInfoPoints = []+                     }+                   "A"))+             [])+          (PLit+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 13 6 14+               , srcInfoPoints = []+               }+             (Signless+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 13 6 14+                  , srcInfoPoints = []+                  })+             (Int+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 13 6 14+                  , srcInfoPoints = []+                  }+                5+                "5"))+          ImplicitBidirectional+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 1 7 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/T11727.hs" 7 1 7 8+                , SrcSpan "tests/examples/T11727.hs" 7 11 7 12+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 9 7 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 9 7 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 9 7 10+                     , srcInfoPoints = []+                     }+                   "B"))+             [])+          (PLit+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 13 7 14+               , srcInfoPoints = []+               }+             (Signless+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 13 7 14+                  , srcInfoPoints = []+                  })+             (Int+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 13 7 14+                  , srcInfoPoints = []+                  }+                5+                "5"))+          ImplicitBidirectional+      ]+  , []+  )
+ tests/examples/T11727.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T11727.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE PatternSynonyms #-}+module T11727 where++pattern A, B :: Int++pattern A = 5++pattern B = 5
+ tests/examples/T13050.hs view
@@ -0,0 +1,7 @@+module HolesInfix where++f, g, q :: Int -> Int -> Int+f x y = _ x y+g x y = x `_` y+q x y = x `_a` y+
+ tests/examples/T13050.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T13050.hs.parser.golden view
@@ -0,0 +1,439 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/T13050.hs" 1 1 1 1+            , SrcSpan "tests/examples/T13050.hs" 1 1 1 1+            , SrcSpan "tests/examples/T13050.hs" 3 1 3 1+            , SrcSpan "tests/examples/T13050.hs" 4 1 4 1+            , SrcSpan "tests/examples/T13050.hs" 5 1 5 1+            , SrcSpan "tests/examples/T13050.hs" 6 1 6 1+            , SrcSpan "tests/examples/T13050.hs" 8 1 8 1+            , SrcSpan "tests/examples/T13050.hs" 8 1 8 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 1 1 1 24+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/T13050.hs" 1 1 1 7+                  , SrcSpan "tests/examples/T13050.hs" 1 19 1 24+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 1 8 1 18+                 , srcInfoPoints = []+                 }+               "HolesInfix")+            Nothing+            Nothing))+      []+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 1 3 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/T13050.hs" 3 2 3 3+                , SrcSpan "tests/examples/T13050.hs" 3 5 3 6+                , SrcSpan "tests/examples/T13050.hs" 3 9 3 11+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 1 3 2+                , srcInfoPoints = []+                }+              "f"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 4 3 5+                , srcInfoPoints = []+                }+              "g"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 7 3 8+                , srcInfoPoints = []+                }+              "q"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 12 3 29+               , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 3 16 3 18 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 12 3 15+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 12 3 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 12 3 15+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 19 3 29+                  , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 3 23 3 25 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 19 3 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 19 3 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 19 3 22+                           , srcInfoPoints = []+                           }+                         "Int")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 26 3 29+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 26 3 29+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 26 3 29+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 1 4 14+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 1 4 14+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 1 4 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 3 4 4+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 3 4 4+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 5 4 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 5 4 6+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 7 4 14+                   , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 4 7 4 8 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 14+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 12+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 10+                            , srcInfoPoints = []+                            }+                          (Special+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 10+                               , srcInfoPoints = []+                               }+                             (ExprHole+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 10+                                  , srcInfoPoints = []+                                  })))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 11 4 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 11 4 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 11 4 12+                                  , srcInfoPoints = []+                                  }+                                "x"))))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 13 4 14+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 13 4 14+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 13 4 14+                               , srcInfoPoints = []+                               }+                             "y")))))+              Nothing+          ]+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 1 5 16+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 1 5 16+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 1 5 2+                   , srcInfoPoints = []+                   }+                 "g")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 3 5 4+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 3 5 4+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 5 5 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 5 5 6+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 7 5 16+                   , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 5 7 5 8 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 9 5 16+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 9 5 10+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 9 5 10+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 9 5 10+                               , srcInfoPoints = []+                               }+                             "x")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 11 5 14+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/T13050.hs" 5 11 5 12+                             , SrcSpan "tests/examples/T13050.hs" 5 12 5 13+                             , SrcSpan "tests/examples/T13050.hs" 5 13 5 14+                             ]+                         }+                       (Special+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 11 5 14+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/T13050.hs" 5 11 5 12+                                , SrcSpan "tests/examples/T13050.hs" 5 12 5 13+                                , SrcSpan "tests/examples/T13050.hs" 5 13 5 14+                                ]+                            }+                          (ExprHole+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 12 5 13+                               , srcInfoPoints = []+                               })))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 15 5 16+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 15 5 16+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 15 5 16+                               , srcInfoPoints = []+                               }+                             "y")))))+              Nothing+          ]+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 1 6 17+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 1 6 17+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 1 6 2+                   , srcInfoPoints = []+                   }+                 "q")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 3 6 4+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 3 6 4+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 5 6 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 5 6 6+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 7 6 17+                   , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 6 7 6 8 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 9 6 17+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 9 6 10+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 9 6 10+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 9 6 10+                               , srcInfoPoints = []+                               }+                             "x")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 11 6 15+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/T13050.hs" 6 11 6 12+                             , SrcSpan "tests/examples/T13050.hs" 6 12 6 14+                             , SrcSpan "tests/examples/T13050.hs" 6 14 6 15+                             ]+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 11 6 15+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/T13050.hs" 6 11 6 12+                                , SrcSpan "tests/examples/T13050.hs" 6 12 6 14+                                , SrcSpan "tests/examples/T13050.hs" 6 14 6 15+                                ]+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 12 6 14+                               , srcInfoPoints = []+                               }+                             "_a")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 16 6 17+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 16 6 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 16 6 17+                               , srcInfoPoints = []+                               }+                             "y")))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/T13050.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T13050.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+module HolesInfix where++f, g, q :: Int -> Int -> Int+f x y = _ x y+g x y = x `_` y+q x y = x `_a` y
+ tests/examples/T326.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeApplications #-}+module T326 where++(@:) a b = a
+ tests/examples/T326.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T326.hs.parser.golden view
@@ -0,0 +1,116 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/T326.hs" 1 1 1 1+            , SrcSpan "tests/examples/T326.hs" 2 1 2 1+            , SrcSpan "tests/examples/T326.hs" 2 1 2 1+            , SrcSpan "tests/examples/T326.hs" 4 1 4 1+            , SrcSpan "tests/examples/T326.hs" 5 1 5 1+            , SrcSpan "tests/examples/T326.hs" 5 1 5 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 2 1 2 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/T326.hs" 2 1 2 7+                  , SrcSpan "tests/examples/T326.hs" 2 13 2 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 2 8 2 12+                 , srcInfoPoints = []+                 }+               "T326")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 1 1 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/T326.hs" 1 1 1 13+                , SrcSpan "tests/examples/T326.hs" 1 31 1 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 14 1 30+                , srcInfoPoints = []+                }+              "TypeApplications"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 1 4 13+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 1 4 13+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/T326.hs" 4 1 4 2+                    , SrcSpan "tests/examples/T326.hs" 4 2 4 4+                    , SrcSpan "tests/examples/T326.hs" 4 4 4 5+                    ]+                }+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 2 4 4+                   , srcInfoPoints = []+                   }+                 "@:")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 6 4 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 6 4 7+                       , srcInfoPoints = []+                       }+                     "a")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 8 4 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 8 4 9+                       , srcInfoPoints = []+                       }+                     "b")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 10 4 13+                   , srcInfoPoints = [ SrcSpan "tests/examples/T326.hs" 4 10 4 11 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13+                            , srcInfoPoints = []+                            }+                          "a"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/T326.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T326.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TypeApplications #-}+module T326 where+(@:) a b = a
+ tests/examples/THTSplices.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH+main = undefined :: $(undefined)
+ tests/examples/THTSplices.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTSplices.hs.parser.golden view
@@ -0,0 +1,133 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/THTSplices.hs" 1 1 1 1+            , SrcSpan "tests/examples/THTSplices.hs" 2 1 2 1+            , SrcSpan "tests/examples/THTSplices.hs" 2 1 2 1+            , SrcSpan "tests/examples/THTSplices.hs" 2 1 2 1+            , SrcSpan "tests/examples/THTSplices.hs" 3 1 3 1+            , SrcSpan "tests/examples/THTSplices.hs" 4 1 4 1+            , SrcSpan "tests/examples/THTSplices.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/THTSplices.hs" 1 1 1 13+                , SrcSpan "tests/examples/THTSplices.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 2 1 2 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/THTSplices.hs" 2 1 2 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 2 8 2 27+                  , srcInfoPoints = []+                  }+                "Language.Haskell.TH"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 1 3 33+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 1 3 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 1 3 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 6 3 33+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/THTSplices.hs" 3 6 3 7 ]+               }+             (ExpTypeSig+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 8 3 33+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/THTSplices.hs" 3 18 3 20 ]+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 8 3 17+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 8 3 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 8 3 17+                           , srcInfoPoints = []+                           }+                         "undefined")))+                (TySplice+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 21 3 33+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/THTSplices.hs" 3 21 3 23+                         , SrcSpan "tests/examples/THTSplices.hs" 3 32 3 33+                         ]+                     }+                   (ParenSplice+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 21 3 33+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/THTSplices.hs" 3 21 3 23+                            , SrcSpan "tests/examples/THTSplices.hs" 3 32 3 33+                            ]+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 23 3 32+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 23 3 32+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 23 3 32+                                 , srcInfoPoints = []+                                 }+                               "undefined")))))))+          Nothing+      ]+  , []+  )
+ tests/examples/THTSplices.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTSplices.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH+main = undefined :: $( undefined )
+ tests/examples/THTypedSplices.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH++import THTypedSplices.Defs++main = $$justTH ($$([e|| 2 ||]))
+ tests/examples/THTypedSplices.hs.exactprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH++import THTypedSplices.Defs++main = $$justTH ($$([||  2 ||]))+
+ tests/examples/THTypedSplices.hs.parser.golden view
@@ -0,0 +1,177 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 1+            , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1+            , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1+            , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1+            , SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 1+            , SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 1+            , SrcSpan "tests/examples/THTypedSplices.hs" 7 1 7 1+            , SrcSpan "tests/examples/THTypedSplices.hs" 7 1 7 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 13+                , SrcSpan "tests/examples/THTypedSplices.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/THTypedSplices.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 2 8 2 27+                  , srcInfoPoints = []+                  }+                "Language.Haskell.TH"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      , ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 27+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 4 8 4 27+                  , srcInfoPoints = []+                  }+                "THTypedSplices.Defs"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 33+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 6 6 33+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/THTypedSplices.hs" 6 6 6 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 33+                  , srcInfoPoints = []+                  }+                (SpliceExp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 16+                     , srcInfoPoints = []+                     }+                   (TIdSplice+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 16+                        , srcInfoPoints = []+                        }+                      "justTH"))+                (Paren+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/THTypedSplices.hs" 6 17 6 33+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/THTypedSplices.hs" 6 17 6 18+                         , SrcSpan "tests/examples/THTypedSplices.hs" 6 32 6 33+                         ]+                     }+                   (SpliceExp+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 32+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 21+                            , SrcSpan "tests/examples/THTypedSplices.hs" 6 31 6 32+                            ]+                        }+                      (TParenSplice+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 32+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 21+                               , SrcSpan "tests/examples/THTypedSplices.hs" 6 31 6 32+                               ]+                           }+                         (BracketExp+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 31+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 25+                                  , SrcSpan "tests/examples/THTypedSplices.hs" 6 28 6 31+                                  ]+                              }+                            (TExpBracket+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 31+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 25+                                     , SrcSpan "tests/examples/THTypedSplices.hs" 6 28 6 31+                                     ]+                                 }+                               (Lit+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/THTypedSplices.hs" 6 26 6 27+                                    , srcInfoPoints = []+                                    }+                                  (Int+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/THTypedSplices.hs" 6 26 6 27+                                       , srcInfoPoints = []+                                       }+                                     2+                                     "2")))))))))+          Nothing+      ]+  , []+  )
+ tests/examples/THTypedSplices.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTypedSplices.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH+import THTypedSplices.Defs+main = $$justTH ($$( [|| 2 ||] ))
+ tests/examples/THTypes.hs view
@@ -0,0 +1,11 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE QuasiQuotes #-}+module THTypes where++import Language.Haskell.TH++x :: DecsQ+x = [d| instance Show $(conT (mkName "Int")) |]++unit x = [t| $x |]
+ tests/examples/THTypes.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTypes.hs.parser.golden view
@@ -0,0 +1,363 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 1 1 12 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/THTypes.hs" 1 1 1 1+            , SrcSpan "tests/examples/THTypes.hs" 2 1 2 1+            , SrcSpan "tests/examples/THTypes.hs" 3 1 3 1+            , SrcSpan "tests/examples/THTypes.hs" 4 1 4 1+            , SrcSpan "tests/examples/THTypes.hs" 4 1 4 1+            , SrcSpan "tests/examples/THTypes.hs" 6 1 6 1+            , SrcSpan "tests/examples/THTypes.hs" 8 1 8 1+            , SrcSpan "tests/examples/THTypes.hs" 9 1 9 1+            , SrcSpan "tests/examples/THTypes.hs" 11 1 11 1+            , SrcSpan "tests/examples/THTypes.hs" 12 1 12 1+            , SrcSpan "tests/examples/THTypes.hs" 12 1 12 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 4 1 4 21+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/THTypes.hs" 4 1 4 7+                  , SrcSpan "tests/examples/THTypes.hs" 4 16 4 21+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 4 8 4 15+                 , srcInfoPoints = []+                 }+               "THTypes")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 1 1 1 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/THTypes.hs" 1 1 1 13+                , SrcSpan "tests/examples/THTypes.hs" 1 32 1 35+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 1 14 1 31+                , srcInfoPoints = []+                }+              "FlexibleInstances"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 2 1 2 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/THTypes.hs" 2 1 2 13+                , SrcSpan "tests/examples/THTypes.hs" 2 30 2 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 2 14 2 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 3 1 3 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/THTypes.hs" 3 1 3 13+                , SrcSpan "tests/examples/THTypes.hs" 3 26 3 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 3 14 3 25+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 6 1 6 27+                , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 6 1 6 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 6 8 6 27+                  , srcInfoPoints = []+                  }+                "Language.Haskell.TH"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 1 8 11+            , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 8 3 8 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 1 8 2+                , srcInfoPoints = []+                }+              "x"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 6 8 11+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 6 8 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 6 8 11+                     , srcInfoPoints = []+                     }+                   "DecsQ")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 1 9 48+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 1 9 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 1 9 2+                  , srcInfoPoints = []+                  }+                "x"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 3 9 48+               , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 9 3 9 4 ]+               }+             (BracketExp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 5 9 48+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/THTypes.hs" 9 5 9 8+                      , SrcSpan "tests/examples/THTypes.hs" 9 46 9 48+                      ]+                  }+                (DeclBracket+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 5 9 48+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/THTypes.hs" 9 9 9 9+                         , SrcSpan "tests/examples/THTypes.hs" 9 46 9 46+                         , SrcSpan "tests/examples/THTypes.hs" 9 46 9 48+                         ]+                     }+                   [ InstDecl+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 9 9 45+                         , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 9 9 9 17 ]+                         }+                       Nothing+                       (IRule+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 18 9 45+                            , srcInfoPoints = []+                            }+                          Nothing+                          Nothing+                          (IHApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 18 9 45+                               , srcInfoPoints = []+                               }+                             (IHCon+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 18 9 22+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 18 9 22+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/THTypes.hs" 9 18 9 22+                                        , srcInfoPoints = []+                                        }+                                      "Show")))+                             (TySplice+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 23 9 45+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/THTypes.hs" 9 23 9 25+                                      , SrcSpan "tests/examples/THTypes.hs" 9 44 9 45+                                      ]+                                  }+                                (ParenSplice+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 23 9 45+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/THTypes.hs" 9 23 9 25+                                         , SrcSpan "tests/examples/THTypes.hs" 9 44 9 45+                                         ]+                                     }+                                   (App+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/THTypes.hs" 9 25 9 44+                                        , srcInfoPoints = []+                                        }+                                      (Var+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/THTypes.hs" 9 25 9 29+                                           , srcInfoPoints = []+                                           }+                                         (UnQual+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/THTypes.hs" 9 25 9 29+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/THTypes.hs" 9 25 9 29+                                                 , srcInfoPoints = []+                                                 }+                                               "conT")))+                                      (Paren+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/THTypes.hs" 9 30 9 44+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/THTypes.hs" 9 30 9 31+                                               , SrcSpan "tests/examples/THTypes.hs" 9 43 9 44+                                               ]+                                           }+                                         (App+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/THTypes.hs" 9 31 9 43+                                              , srcInfoPoints = []+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/THTypes.hs" 9 31 9 37+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/THTypes.hs" 9 31 9 37+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/THTypes.hs" 9 31 9 37+                                                       , srcInfoPoints = []+                                                       }+                                                     "mkName")))+                                            (Lit+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/THTypes.hs" 9 38 9 43+                                                 , srcInfoPoints = []+                                                 }+                                               (String+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/THTypes.hs" 9 38 9 43+                                                    , srcInfoPoints = []+                                                    }+                                                  "Int"+                                                  "Int")))))))))+                       Nothing+                   ])))+          Nothing+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 1 11 19+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 1 11 19+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 1 11 5+                   , srcInfoPoints = []+                   }+                 "unit")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 6 11 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 6 11 7+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 8 11 19+                   , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 11 8 11 9 ]+                   }+                 (BracketExp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 10 11 19+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/THTypes.hs" 11 10 11 13+                          , SrcSpan "tests/examples/THTypes.hs" 11 17 11 19+                          ]+                      }+                    (TypeBracket+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 10 11 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/THTypes.hs" 11 10 11 13+                             , SrcSpan "tests/examples/THTypes.hs" 11 17 11 19+                             ]+                         }+                       (TySplice+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 14 11 16+                            , srcInfoPoints = []+                            }+                          (IdSplice+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 14 11 16+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/THTypes.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTypes.hs.prettyprinter.golden view
@@ -0,0 +1,12 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE QuasiQuotes #-}+module THTypes where+import Language.Haskell.TH++x :: DecsQ+x = [d|+      +      instance Show $( conT (mkName "Int") )+      |]+unit x = [t| $x |]
+ tests/examples/TabWhitespace.hs view
@@ -0,0 +1,1 @@+	-- hi
+ tests/examples/TabWhitespace.hs.exactprinter.golden view
@@ -0,0 +1,2 @@+        -- hi+
+ tests/examples/TabWhitespace.hs.parser.golden view
@@ -0,0 +1,19 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+            , SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+            , SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+            , SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+            ]+        }+      Nothing+      []+      []+      []+  , [ Comment+        False (SrcSpan "tests/examples/TabWhitespace.hs" 1 9 1 14) " hi"+    ]+  )
+ tests/examples/TabWhitespace.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TabWhitespace.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+
+ tests/examples/TemplateHaskellQuotedNames.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE TemplateHaskell #-}+f = g 'Constructor 'function+h = g '() '[]
+ tests/examples/TemplateHaskellQuotedNames.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TemplateHaskellQuotedNames.hs.parser.golden view
@@ -0,0 +1,246 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 1 1+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 1+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 1+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 1+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 1+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 4 1 4 1+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 1 13+                , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 29+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 3 2 29+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 3 2 4 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 29+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 19+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 6+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 6+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 6+                              , srcInfoPoints = []+                              }+                            "g")))+                   (VarQuote+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 7 2 19+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 7 2 8 ]+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 8 2 19+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 8 2 19+                              , srcInfoPoints = []+                              }+                            "Constructor"))))+                (VarQuote+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 20 2 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 20 2 21+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 21 2 29+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 21 2 29+                           , srcInfoPoints = []+                           }+                         "function")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 2+                  , srcInfoPoints = []+                  }+                "h"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 3 3 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 3 3 4 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 14+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 10+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 6+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 6+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 6+                              , srcInfoPoints = []+                              }+                            "g")))+                   (VarQuote+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 7 3 10+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 7 3 8 ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 10+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 9+                               , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 9 3 10+                               ]+                           }+                         (UnitCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 10+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 9+                                  , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 9 3 10+                                  ]+                              }))))+                (VarQuote+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 11 3 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 11 3 12+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 13+                            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 13 3 14+                            ]+                        }+                      (ListCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 14+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 13+                               , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 13 3 14+                               ]+                           })))))+          Nothing+      ]+  , []+  )
+ tests/examples/TemplateHaskellQuotedNames.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TemplateHaskellQuotedNames.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TemplateHaskell #-}+f = g 'Constructor 'function+h = g '() '[]
+ tests/examples/TensorTests.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE ConstraintKinds, FlexibleContexts, DataKinds, NoImplicitPrelude,+             RebindableSyntax, ScopedTypeVariables, TypeFamilies, TypeOperators,+             UndecidableInstances #-}++module TensorTests (tensorTests) where++type TMRParams = ( '(,) <$> Tensors) <*> MRCombos+tmrParams :: Proxy TMRParams+tmrParams = Proxy++--type ExtParams = ( '(,) <$> Tensors) <*> MRExtCombos+type TrEmParams = ( '(,) <$> Tensors) <*> MM'RCombos+tremParams :: Proxy TrEmParams+tremParams = Proxy++type NormParams = ( '(,) <$> '[RT]) <*> (Filter Liftable MRCombos)++--data Liftable :: TyFun (Factored, *) Bool -> *+type instance Apply Liftable '(m,zq) = Int64 :== (LiftOf zq)+
+ tests/examples/TensorTests.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TensorTests.hs.parser.golden view
@@ -0,0 +1,965 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 1 21 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TensorTests.hs" 1 1 1 1+            , SrcSpan "tests/examples/TensorTests.hs" 5 1 5 1+            , SrcSpan "tests/examples/TensorTests.hs" 5 1 5 1+            , SrcSpan "tests/examples/TensorTests.hs" 7 1 7 1+            , SrcSpan "tests/examples/TensorTests.hs" 8 1 8 1+            , SrcSpan "tests/examples/TensorTests.hs" 9 1 9 1+            , SrcSpan "tests/examples/TensorTests.hs" 12 1 12 1+            , SrcSpan "tests/examples/TensorTests.hs" 13 1 13 1+            , SrcSpan "tests/examples/TensorTests.hs" 14 1 14 1+            , SrcSpan "tests/examples/TensorTests.hs" 16 1 16 1+            , SrcSpan "tests/examples/TensorTests.hs" 19 1 19 1+            , SrcSpan "tests/examples/TensorTests.hs" 21 1 21 1+            , SrcSpan "tests/examples/TensorTests.hs" 21 1 21 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 1 5 39+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/TensorTests.hs" 5 1 5 7+                  , SrcSpan "tests/examples/TensorTests.hs" 5 34 5 39+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 8 5 19+                 , srcInfoPoints = []+                 }+               "TensorTests")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 20 5 33+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/TensorTests.hs" 5 20 5 21+                        , SrcSpan "tests/examples/TensorTests.hs" 5 32 5 33+                        ]+                    }+                  [ EVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 21 5 32+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 21 5 32+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 21 5 32+                              , srcInfoPoints = []+                              }+                            "tensorTests"))+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 1 3 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TensorTests.hs" 1 1 1 13+                , SrcSpan "tests/examples/TensorTests.hs" 1 29 1 30+                , SrcSpan "tests/examples/TensorTests.hs" 1 47 1 48+                , SrcSpan "tests/examples/TensorTests.hs" 1 58 1 59+                , SrcSpan "tests/examples/TensorTests.hs" 1 77 1 78+                , SrcSpan "tests/examples/TensorTests.hs" 2 30 2 31+                , SrcSpan "tests/examples/TensorTests.hs" 2 51 2 52+                , SrcSpan "tests/examples/TensorTests.hs" 2 65 2 66+                , SrcSpan "tests/examples/TensorTests.hs" 2 80 2 81+                , SrcSpan "tests/examples/TensorTests.hs" 3 35 3 38+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "ConstraintKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 31 1 47+                , srcInfoPoints = []+                }+              "FlexibleContexts"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 49 1 58+                , srcInfoPoints = []+                }+              "DataKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 60 1 77+                , srcInfoPoints = []+                }+              "NoImplicitPrelude"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 2 14 2 30+                , srcInfoPoints = []+                }+              "RebindableSyntax"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 2 32 2 51+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 2 53 2 65+                , srcInfoPoints = []+                }+              "TypeFamilies"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 2 67 2 80+                , srcInfoPoints = []+                }+              "TypeOperators"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 3 14 3 34+                , srcInfoPoints = []+                }+              "UndecidableInstances"+          ]+      ]+      []+      [ TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 1 7 50+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TensorTests.hs" 7 1 7 5+                , SrcSpan "tests/examples/TensorTests.hs" 7 16 7 17+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 6 7 15+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 6 7 15+                  , srcInfoPoints = []+                  }+                "TMRParams"))+          (TyInfix+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 18 7 50+               , srcInfoPoints = []+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 18 7 37+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TensorTests.hs" 7 18 7 19+                      , SrcSpan "tests/examples/TensorTests.hs" 7 36 7 37+                      ]+                  }+                (TyInfix+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 20 7 36+                     , srcInfoPoints = []+                     }+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 20 7 24+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TensorTests.hs" 7 20 7 21 ]+                        }+                      (PromotedCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 20 7 24+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/TensorTests.hs" 7 20 7 21 ]+                           }+                         True+                         (Special+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 21 7 24+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/TensorTests.hs" 7 21 7 22+                                  , SrcSpan "tests/examples/TensorTests.hs" 7 22 7 23+                                  , SrcSpan "tests/examples/TensorTests.hs" 7 23 7 24+                                  ]+                              }+                            (TupleCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 21 7 24+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/TensorTests.hs" 7 21 7 22+                                     , SrcSpan "tests/examples/TensorTests.hs" 7 22 7 23+                                     , SrcSpan "tests/examples/TensorTests.hs" 7 23 7 24+                                     ]+                                 }+                               Boxed+                               2))))+                   (UnpromotedName+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 25 7 28+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 25 7 28+                           , srcInfoPoints = []+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 25 7 28+                              , srcInfoPoints = []+                              }+                            "<$>")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 29 7 36+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 29 7 36+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 29 7 36+                              , srcInfoPoints = []+                              }+                            "Tensors")))))+             (UnpromotedName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 38 7 41+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 38 7 41+                     , srcInfoPoints = []+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 38 7 41+                        , srcInfoPoints = []+                        }+                      "<*>")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 42 7 50+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 42 7 50+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 42 7 50+                        , srcInfoPoints = []+                        }+                      "MRCombos"))))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 1 8 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TensorTests.hs" 8 11 8 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 1 8 10+                , srcInfoPoints = []+                }+              "tmrParams"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 14 8 29+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 14 8 19+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 14 8 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 14 8 19+                        , srcInfoPoints = []+                        }+                      "Proxy")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 20 8 29+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 20 8 29+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 20 8 29+                        , srcInfoPoints = []+                        }+                      "TMRParams"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 1 9 18+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 1 9 10+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 1 9 10+                  , srcInfoPoints = []+                  }+                "tmrParams"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 11 9 18+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TensorTests.hs" 9 11 9 12 ]+               }+             (Con+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 13 9 18+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 13 9 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 13 9 18+                        , srcInfoPoints = []+                        }+                      "Proxy"))))+          Nothing+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 1 12 53+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TensorTests.hs" 12 1 12 5+                , SrcSpan "tests/examples/TensorTests.hs" 12 17 12 18+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 6 12 16+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 6 12 16+                  , srcInfoPoints = []+                  }+                "TrEmParams"))+          (TyInfix+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 19 12 53+               , srcInfoPoints = []+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 19 12 38+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TensorTests.hs" 12 19 12 20+                      , SrcSpan "tests/examples/TensorTests.hs" 12 37 12 38+                      ]+                  }+                (TyInfix+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 21 12 37+                     , srcInfoPoints = []+                     }+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 21 12 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TensorTests.hs" 12 21 12 22 ]+                        }+                      (PromotedCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 21 12 25+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/TensorTests.hs" 12 21 12 22 ]+                           }+                         True+                         (Special+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 22 12 25+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/TensorTests.hs" 12 22 12 23+                                  , SrcSpan "tests/examples/TensorTests.hs" 12 23 12 24+                                  , SrcSpan "tests/examples/TensorTests.hs" 12 24 12 25+                                  ]+                              }+                            (TupleCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 22 12 25+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/TensorTests.hs" 12 22 12 23+                                     , SrcSpan "tests/examples/TensorTests.hs" 12 23 12 24+                                     , SrcSpan "tests/examples/TensorTests.hs" 12 24 12 25+                                     ]+                                 }+                               Boxed+                               2))))+                   (UnpromotedName+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 26 12 29+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 26 12 29+                           , srcInfoPoints = []+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 26 12 29+                              , srcInfoPoints = []+                              }+                            "<$>")))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 30 12 37+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 30 12 37+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 30 12 37+                              , srcInfoPoints = []+                              }+                            "Tensors")))))+             (UnpromotedName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 39 12 42+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 39 12 42+                     , srcInfoPoints = []+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 39 12 42+                        , srcInfoPoints = []+                        }+                      "<*>")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 43 12 53+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 43 12 53+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 43 12 53+                        , srcInfoPoints = []+                        }+                      "MM'RCombos"))))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 1 13 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TensorTests.hs" 13 12 13 14 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 1 13 11+                , srcInfoPoints = []+                }+              "tremParams"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 15 13 31+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 15 13 20+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 15 13 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 15 13 20+                        , srcInfoPoints = []+                        }+                      "Proxy")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 21 13 31+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 21 13 31+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 21 13 31+                        , srcInfoPoints = []+                        }+                      "TrEmParams"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 1 14 19+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 1 14 11+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 1 14 11+                  , srcInfoPoints = []+                  }+                "tremParams"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 12 14 19+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TensorTests.hs" 14 12 14 13 ]+               }+             (Con+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 14 14 19+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 14 14 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 14 14 19+                        , srcInfoPoints = []+                        }+                      "Proxy"))))+          Nothing+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 1 16 67+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TensorTests.hs" 16 1 16 5+                , SrcSpan "tests/examples/TensorTests.hs" 16 17 16 18+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 6 16 16+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 6 16 16+                  , srcInfoPoints = []+                  }+                "NormParams"))+          (TyInfix+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 19 16 67+               , srcInfoPoints = []+               }+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 19 16 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TensorTests.hs" 16 19 16 20+                      , SrcSpan "tests/examples/TensorTests.hs" 16 35 16 36+                      ]+                  }+                (TyInfix+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 21 16 35+                     , srcInfoPoints = []+                     }+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 21 16 25+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TensorTests.hs" 16 21 16 22 ]+                        }+                      (PromotedCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 21 16 25+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/TensorTests.hs" 16 21 16 22 ]+                           }+                         True+                         (Special+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 22 16 25+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/TensorTests.hs" 16 22 16 23+                                  , SrcSpan "tests/examples/TensorTests.hs" 16 23 16 24+                                  , SrcSpan "tests/examples/TensorTests.hs" 16 24 16 25+                                  ]+                              }+                            (TupleCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 22 16 25+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/TensorTests.hs" 16 22 16 23+                                     , SrcSpan "tests/examples/TensorTests.hs" 16 23 16 24+                                     , SrcSpan "tests/examples/TensorTests.hs" 16 24 16 25+                                     ]+                                 }+                               Boxed+                               2))))+                   (UnpromotedName+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 26 16 29+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 26 16 29+                           , srcInfoPoints = []+                           }+                         (Symbol+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 26 16 29+                              , srcInfoPoints = []+                              }+                            "<$>")))+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 30 16 35+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TensorTests.hs" 16 30 16 31+                            , SrcSpan "tests/examples/TensorTests.hs" 16 34 16 35+                            ]+                        }+                      (PromotedList+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 30 16 35+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/TensorTests.hs" 16 30 16 31+                               , SrcSpan "tests/examples/TensorTests.hs" 16 34 16 35+                               ]+                           }+                         True+                         [ TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 32 16 34+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TensorTests.hs" 16 32 16 34+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/TensorTests.hs" 16 32 16 34+                                     , srcInfoPoints = []+                                     }+                                   "RT"))+                         ]))))+             (UnpromotedName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 37 16 40+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 37 16 40+                     , srcInfoPoints = []+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 37 16 40+                        , srcInfoPoints = []+                        }+                      "<*>")))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 41 16 67+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TensorTests.hs" 16 41 16 42+                      , SrcSpan "tests/examples/TensorTests.hs" 16 66 16 67+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 66+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 57+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 48+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 48+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 48+                                 , srcInfoPoints = []+                                 }+                               "Filter")))+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 49 16 57+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 49 16 57+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 49 16 57+                                 , srcInfoPoints = []+                                 }+                               "Liftable"))))+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 58 16 66+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 58 16 66+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 58 16 66+                              , srcInfoPoints = []+                              }+                            "MRCombos"))))))+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 1 19 61+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TensorTests.hs" 19 1 19 5+                , SrcSpan "tests/examples/TensorTests.hs" 19 6 19 14+                , SrcSpan "tests/examples/TensorTests.hs" 19 38 19 39+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 37+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 29+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 20+                           , srcInfoPoints = []+                           }+                         "Apply")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 21 19 29+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 21 19 29+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 21 19 29+                           , srcInfoPoints = []+                           }+                         "Liftable"))))+             (TyPromoted+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 30 19 37+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TensorTests.hs" 19 30 19 31+                      , SrcSpan "tests/examples/TensorTests.hs" 19 33 19 34+                      , SrcSpan "tests/examples/TensorTests.hs" 19 36 19 37+                      ]+                  }+                (PromotedTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 30 19 37+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TensorTests.hs" 19 30 19 31+                         , SrcSpan "tests/examples/TensorTests.hs" 19 33 19 34+                         , SrcSpan "tests/examples/TensorTests.hs" 19 36 19 37+                         ]+                     }+                   [ TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 32 19 33+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 32 19 33+                            , srcInfoPoints = []+                            }+                          "m")+                   , TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 34 19 36+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 34 19 36+                            , srcInfoPoints = []+                            }+                          "zq")+                   ])))+          (TyInfix+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 40 19 61+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 40 19 45+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 40 19 45+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 40 19 45+                        , srcInfoPoints = []+                        }+                      "Int64")))+             (UnpromotedName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 46 19 49+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 46 19 49+                     , srcInfoPoints = []+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 46 19 49+                        , srcInfoPoints = []+                        }+                      ":==")))+             (TyParen+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 50 19 61+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TensorTests.hs" 19 50 19 51+                      , SrcSpan "tests/examples/TensorTests.hs" 19 60 19 61+                      ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 51 19 60+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 51 19 57+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 51 19 57+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 51 19 57+                              , srcInfoPoints = []+                              }+                            "LiftOf")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 58 19 60+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 58 19 60+                           , srcInfoPoints = []+                           }+                         "zq")))))+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/TensorTests.hs" 11 1 11 55)+        "type ExtParams = ( '(,) <$> Tensors) <*> MRExtCombos"+    , Comment+        False+        (SrcSpan "tests/examples/TensorTests.hs" 18 1 18 49)+        "data Liftable :: TyFun (Factored, *) Bool -> *"+    ]+  )
+ tests/examples/TensorTests.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TensorTests.hs.prettyprinter.golden view
@@ -0,0 +1,18 @@+{-# LANGUAGE ConstraintKinds, FlexibleContexts, DataKinds,+  NoImplicitPrelude, RebindableSyntax, ScopedTypeVariables,+  TypeFamilies, TypeOperators, UndecidableInstances #-}+module TensorTests (tensorTests) where++type TMRParams = ('(,) <$> Tensors) <*> MRCombos++tmrParams :: Proxy TMRParams+tmrParams = Proxy++type TrEmParams = ('(,) <$> Tensors) <*> MM'RCombos++tremParams :: Proxy TrEmParams+tremParams = Proxy++type NormParams = ('(,) <$> '[RT]) <*> (Filter Liftable MRCombos)++type instance Apply Liftable '(m, zq) = Int64 :== (LiftOf zq)
+ tests/examples/Testing.hs view
@@ -0,0 +1,2 @@+{-# LINE 5 "templates\GenericTemplate.hs" #-}+main = return ()
+ tests/examples/Testing.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Testing.hs.parser.golden view
@@ -0,0 +1,89 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Testing.hs" 2 1 2 1+            , SrcSpan "tests/examples/Testing.hs" 2 1 2 1+            , SrcSpan "tests/examples/Testing.hs" 2 1 2 1+            , SrcSpan "tests/examples/Testing.hs" 3 1 3 1+            , SrcSpan "tests/examples/Testing.hs" 3 1 3 1+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 1 2 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 1 2 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 1 2 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 6 2 17+               , srcInfoPoints = [ SrcSpan "tests/examples/Testing.hs" 2 6 2 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 8 2 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 8 2 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 8 2 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 8 2 14+                           , srcInfoPoints = []+                           }+                         "return")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 15 2 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Testing.hs" 2 15 2 16+                         , SrcSpan "tests/examples/Testing.hs" 2 16 2 17+                         ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 15 2 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Testing.hs" 2 15 2 16+                            , SrcSpan "tests/examples/Testing.hs" 2 16 2 17+                            ]+                        }+                      (UnitCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 15 2 17+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Testing.hs" 2 15 2 16+                               , SrcSpan "tests/examples/Testing.hs" 2 16 2 17+                               ]+                           })))))+          Nothing+      ]+  , [ Comment+        True+        (SrcSpan "tests/examples/Testing.hs" 1 1 1 46)+        "# LINE 5 \"templates\\GenericTemplate.hs\" #"+    ]+  )
+ tests/examples/Testing.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Testing.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+main = return ()
+ tests/examples/TrailingWhere.hs view
@@ -0,0 +1,5 @@+fail = x+    where+    broken = 24+        where+    x = 413
+ tests/examples/TrailingWhere.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere.hs.parser.golden view
@@ -0,0 +1,148 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 1 6 0+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 1+            , SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 1+            , SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 1+            , SrcSpan "tests/examples/TrailingWhere.hs" 6 1 6 0+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 1 5 12+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TrailingWhere.hs" 2 5 2 10 ]+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 5+                  , srcInfoPoints = []+                  }+                "fail"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 6 1 9+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TrailingWhere.hs" 1 6 1 7 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 8 1 9+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 8 1 9+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 8 1 9+                        , srcInfoPoints = []+                        }+                      "x"))))+          (Just+             (BDecls+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 5 5 12+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TrailingWhere.hs" 3 5 3 5+                      , SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 5+                      , SrcSpan "tests/examples/TrailingWhere.hs" 6 1 6 0+                      ]+                  }+                [ PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 5 5 5+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/TrailingWhere.hs" 4 9 4 14 ]+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 5 3 11+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 5 3 11+                            , srcInfoPoints = []+                            }+                          "broken"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 12 3 16+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/TrailingWhere.hs" 3 12 3 13 ]+                         }+                       (Lit+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 14 3 16+                            , srcInfoPoints = []+                            }+                          (Int+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 14 3 16+                               , srcInfoPoints = []+                               }+                             24+                             "24")))+                    (Just+                       (BDecls+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 0 5 5+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 5+                                , SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 5+                                , SrcSpan "tests/examples/TrailingWhere.hs" 5 0 5 0+                                ]+                            }+                          []))+                , PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 12+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 6+                            , srcInfoPoints = []+                            }+                          "x"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 7 5 12+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/TrailingWhere.hs" 5 7 5 8 ]+                         }+                       (Lit+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 9 5 12+                            , srcInfoPoints = []+                            }+                          (Int+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 9 5 12+                               , srcInfoPoints = []+                               }+                             413+                             "413")))+                    Nothing+                ]))+      ]+  , []+  )
+ tests/examples/TrailingWhere.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+fail = x+  where broken = 24+          where+        x = 413
+ tests/examples/TrailingWhere2.hs view
@@ -0,0 +1,6 @@+data Baz = Baz++instance Show Baz where+  show _ = ""+    where+  show _ = ""
+ tests/examples/TrailingWhere2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere2.hs.parser.golden view
@@ -0,0 +1,231 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 7 0+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 1+            , SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 1+            , SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 1+            , SrcSpan "tests/examples/TrailingWhere2.hs" 3 1 3 1+            , SrcSpan "tests/examples/TrailingWhere2.hs" 7 1 7 0+            ]+        }+      Nothing+      []+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TrailingWhere2.hs" 1 10 1 11 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 6 1 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 6 1 9+                  , srcInfoPoints = []+                  }+                "Baz"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TrailingWhere2.hs" 1 12 1 15+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/TrailingWhere2.hs" 1 12 1 15+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/TrailingWhere2.hs" 1 12 1 15+                      , srcInfoPoints = []+                      }+                    "Baz")+                 [])+          ]+          []+      , InstDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 3 1 7 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TrailingWhere2.hs" 3 1 3 9+                , SrcSpan "tests/examples/TrailingWhere2.hs" 3 19 3 24+                , SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 4 3+                , SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 3+                , SrcSpan "tests/examples/TrailingWhere2.hs" 7 1 7 0+                ]+            }+          Nothing+          (IRule+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 18+               , srcInfoPoints = []+               }+             Nothing+             Nothing+             (IHApp+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 18+                  , srcInfoPoints = []+                  }+                (IHCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 14+                           , srcInfoPoints = []+                           }+                         "Show")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TrailingWhere2.hs" 3 15 3 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TrailingWhere2.hs" 3 15 3 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TrailingWhere2.hs" 3 15 3 18+                           , srcInfoPoints = []+                           }+                         "Baz")))))+          (Just+             [ InsDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 6 14+                   , srcInfoPoints = []+                   }+                 (FunBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 6 14+                      , srcInfoPoints = []+                      }+                    [ Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 6 3+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/TrailingWhere2.hs" 5 5 5 10 ]+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 4 7+                             , srcInfoPoints = []+                             }+                           "show")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 8 4 9+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/TrailingWhere2.hs" 4 10 4 14+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/TrailingWhere2.hs" 4 10 4 11 ]+                             }+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/TrailingWhere2.hs" 4 12 4 14+                                , srcInfoPoints = []+                                }+                              (String+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/TrailingWhere2.hs" 4 12 4 14+                                   , srcInfoPoints = []+                                   }+                                 ""+                                 "")))+                        (Just+                           (BDecls+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 6 0 6 3+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 3+                                    , SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 3+                                    , SrcSpan "tests/examples/TrailingWhere2.hs" 6 0 6 0+                                    ]+                                }+                              []))+                    , Match+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 14+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 7+                             , srcInfoPoints = []+                             }+                           "show")+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 6 8 6 9+                              , srcInfoPoints = []+                              }+                        ]+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/TrailingWhere2.hs" 6 10 6 14+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/TrailingWhere2.hs" 6 10 6 11 ]+                             }+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/TrailingWhere2.hs" 6 12 6 14+                                , srcInfoPoints = []+                                }+                              (String+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/TrailingWhere2.hs" 6 12 6 14+                                   , srcInfoPoints = []+                                   }+                                 ""+                                 "")))+                        Nothing+                    ])+             ])+      ]+  , []+  )
+ tests/examples/TrailingWhere2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere2.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+data Baz = Baz++instance Show Baz where+        show _ = ""+          where+        show _ = ""
+ tests/examples/TrailingWhere3.hs view
@@ -0,0 +1,3 @@+main = f where+    f = g where+    g = putStrLn "hello world"
+ tests/examples/TrailingWhere3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere3.hs.parser.golden view
@@ -0,0 +1,178 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 4 0+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 1+            , SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 1+            , SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 1+            , SrcSpan "tests/examples/TrailingWhere3.hs" 4 1 4 0+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 3 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TrailingWhere3.hs" 1 10 1 15 ]+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 6 1 9+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TrailingWhere3.hs" 1 6 1 7 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 8 1 9+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 8 1 9+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 8 1 9+                        , srcInfoPoints = []+                        }+                      "f"))))+          (Just+             (BDecls+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 3 31+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 2 5+                      , SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 5+                      , SrcSpan "tests/examples/TrailingWhere3.hs" 4 1 4 0+                      ]+                  }+                [ PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 3 5+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/TrailingWhere3.hs" 2 11 2 16 ]+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 2 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 2 6+                            , srcInfoPoints = []+                            }+                          "f"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 7 2 10+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/TrailingWhere3.hs" 2 7 2 8 ]+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 9 2 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 9 2 10+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TrailingWhere3.hs" 2 9 2 10+                                  , srcInfoPoints = []+                                  }+                                "g"))))+                    (Just+                       (BDecls+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 0 3 5+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 5+                                , SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 5+                                , SrcSpan "tests/examples/TrailingWhere3.hs" 3 0 3 0+                                ]+                            }+                          []))+                , PatBind+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 31+                      , srcInfoPoints = []+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 6+                            , srcInfoPoints = []+                            }+                          "g"))+                    (UnGuardedRhs+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 7 3 31+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/TrailingWhere3.hs" 3 7 3 8 ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 9 3 31+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 9 3 17+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TrailingWhere3.hs" 3 9 3 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/TrailingWhere3.hs" 3 9 3 17+                                     , srcInfoPoints = []+                                     }+                                   "putStrLn")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/TrailingWhere3.hs" 3 18 3 31+                               , srcInfoPoints = []+                               }+                             (String+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TrailingWhere3.hs" 3 18 3 31+                                  , srcInfoPoints = []+                                  }+                                "hello world"+                                "hello world"))))+                    Nothing+                ]))+      ]+  , []+  )
+ tests/examples/TrailingWhere3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere3.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+main = f+  where f = g+          where+        g = putStrLn "hello world"
+ tests/examples/TupleSections.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE TupleSections #-}++foo x = (1,,) x 3
+ tests/examples/TupleSections.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TupleSections.hs.parser.golden view
@@ -0,0 +1,138 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TupleSections.hs" 1 1 1 1+            , SrcSpan "tests/examples/TupleSections.hs" 3 1 3 1+            , SrcSpan "tests/examples/TupleSections.hs" 3 1 3 1+            , SrcSpan "tests/examples/TupleSections.hs" 3 1 3 1+            , SrcSpan "tests/examples/TupleSections.hs" 4 1 4 1+            , SrcSpan "tests/examples/TupleSections.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TupleSections.hs" 1 1 1 13+                , SrcSpan "tests/examples/TupleSections.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "TupleSections"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 1 3 18+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 1 3 18+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 1 3 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 5 3 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 5 3 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 7 3 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/TupleSections.hs" 3 7 3 8 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 9 3 18+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 9 3 16+                         , srcInfoPoints = []+                         }+                       (TupleSection+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 9 3 14+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/TupleSections.hs" 3 9 3 10+                                , SrcSpan "tests/examples/TupleSections.hs" 3 11 3 12+                                , SrcSpan "tests/examples/TupleSections.hs" 3 12 3 13+                                , SrcSpan "tests/examples/TupleSections.hs" 3 13 3 14+                                ]+                            }+                          Boxed+                          [ Just+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/TupleSections.hs" 3 10 3 11+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/TupleSections.hs" 3 10 3 11+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "1"))+                          , Nothing+                          , Nothing+                          ])+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 15 3 16+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 15 3 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TupleSections.hs" 3 15 3 16+                                  , srcInfoPoints = []+                                  }+                                "x"))))+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 17 3 18+                         , srcInfoPoints = []+                         }+                       (Int+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 17 3 18+                            , srcInfoPoints = []+                            }+                          3+                          "3"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/TupleSections.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TupleSections.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE TupleSections #-}+foo x = (1, ,) x 3
+ tests/examples/TyQuasiQuote.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE QuasiQuotes, TemplateHaskell #-}+f :: [qq| something in here |]+f = ()
+ tests/examples/TyQuasiQuote.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TyQuasiQuote.hs.parser.golden view
@@ -0,0 +1,109 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TyQuasiQuote.hs" 1 1 1 1+            , SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 1+            , SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 1+            , SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 1+            , SrcSpan "tests/examples/TyQuasiQuote.hs" 3 1 3 1+            , SrcSpan "tests/examples/TyQuasiQuote.hs" 4 1 4 1+            , SrcSpan "tests/examples/TyQuasiQuote.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 1 1 1 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TyQuasiQuote.hs" 1 1 1 13+                , SrcSpan "tests/examples/TyQuasiQuote.hs" 1 25 1 26+                , SrcSpan "tests/examples/TyQuasiQuote.hs" 1 43 1 46+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 1 27 1 42+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TyQuasiQuote.hs" 2 3 2 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyQuasiQuote+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 2 6 2 31+               , srcInfoPoints = []+               }+             "qq"+             " something in here ")+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 1 3 7+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 1 3 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 1 3 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 3 3 7+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TyQuasiQuote.hs" 3 3 3 4 ]+               }+             (Con+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 7+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 6+                      , SrcSpan "tests/examples/TyQuasiQuote.hs" 3 6 3 7+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 7+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 6+                         , SrcSpan "tests/examples/TyQuasiQuote.hs" 3 6 3 7+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 7+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 6+                            , SrcSpan "tests/examples/TyQuasiQuote.hs" 3 6 3 7+                            ]+                        }))))+          Nothing+      ]+  , []+  )
+ tests/examples/TyQuasiQuote.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TyQuasiQuote.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE QuasiQuotes, TemplateHaskell #-}++f :: [qq| something in here |]+f = ()
+ tests/examples/TySplice.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TemplateHaskell #-}++[| f :: $ty |]+[| f :: $(fun ty) |]
+ tests/examples/TySplice.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice.hs.parser.golden view
@@ -0,0 +1,191 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TySplice.hs" 1 1 1 1+            , SrcSpan "tests/examples/TySplice.hs" 3 1 3 1+            , SrcSpan "tests/examples/TySplice.hs" 3 1 3 1+            , SrcSpan "tests/examples/TySplice.hs" 3 1 3 1+            , SrcSpan "tests/examples/TySplice.hs" 4 1 4 1+            , SrcSpan "tests/examples/TySplice.hs" 5 1 5 1+            , SrcSpan "tests/examples/TySplice.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TySplice.hs" 1 1 1 13+                , SrcSpan "tests/examples/TySplice.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      ]+      []+      [ SpliceDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 1 3 15+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TySplice.hs" 3 1 3 3+                , SrcSpan "tests/examples/TySplice.hs" 3 13 3 15+                ]+            }+          (BracketExp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 1 3 15+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TySplice.hs" 3 1 3 3+                   , SrcSpan "tests/examples/TySplice.hs" 3 13 3 15+                   ]+               }+             (ExpBracket+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 1 3 15+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TySplice.hs" 3 1 3 3+                      , SrcSpan "tests/examples/TySplice.hs" 3 13 3 15+                      ]+                  }+                (ExpTypeSig+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 4 3 12+                     , srcInfoPoints = [ SrcSpan "tests/examples/TySplice.hs" 3 6 3 8 ]+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 4 3 5+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 4 3 5+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 4 3 5+                              , srcInfoPoints = []+                              }+                            "f")))+                   (TySplice+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 9 3 12+                        , srcInfoPoints = []+                        }+                      (IdSplice+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 9 3 12+                           , srcInfoPoints = []+                           }+                         "ty")))))+      , SpliceDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 1 4 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TySplice.hs" 4 1 4 3+                , SrcSpan "tests/examples/TySplice.hs" 4 19 4 21+                ]+            }+          (BracketExp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 1 4 21+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TySplice.hs" 4 1 4 3+                   , SrcSpan "tests/examples/TySplice.hs" 4 19 4 21+                   ]+               }+             (ExpBracket+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 1 4 21+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TySplice.hs" 4 1 4 3+                      , SrcSpan "tests/examples/TySplice.hs" 4 19 4 21+                      ]+                  }+                (ExpTypeSig+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 4 4 18+                     , srcInfoPoints = [ SrcSpan "tests/examples/TySplice.hs" 4 6 4 8 ]+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 4 4 5+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 4 4 5+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 4 4 5+                              , srcInfoPoints = []+                              }+                            "f")))+                   (TySplice+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 9 4 18+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TySplice.hs" 4 9 4 11+                            , SrcSpan "tests/examples/TySplice.hs" 4 17 4 18+                            ]+                        }+                      (ParenSplice+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 9 4 18+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/TySplice.hs" 4 9 4 11+                               , SrcSpan "tests/examples/TySplice.hs" 4 17 4 18+                               ]+                           }+                         (App+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 11 4 17+                              , srcInfoPoints = []+                              }+                            (Var+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 11 4 14+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 11 4 14+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/TySplice.hs" 4 11 4 14+                                       , srcInfoPoints = []+                                       }+                                     "fun")))+                            (Var+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 15 4 17+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 15 4 17+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/TySplice.hs" 4 15 4 17+                                       , srcInfoPoints = []+                                       }+                                     "ty")))))))))+      ]+  , []+  )
+ tests/examples/TySplice.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TemplateHaskell #-}++[| f :: $ty |]++[| f :: $( fun ty ) |]
+ tests/examples/TySplice2.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TemplateHaskell #-}+t1 :: $( [t|Int|] )+t1 = 1+
+ tests/examples/TySplice2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice2.hs.parser.golden view
@@ -0,0 +1,129 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TySplice2.hs" 1 1 1 1+            , SrcSpan "tests/examples/TySplice2.hs" 2 1 2 1+            , SrcSpan "tests/examples/TySplice2.hs" 2 1 2 1+            , SrcSpan "tests/examples/TySplice2.hs" 2 1 2 1+            , SrcSpan "tests/examples/TySplice2.hs" 3 1 3 1+            , SrcSpan "tests/examples/TySplice2.hs" 5 1 5 1+            , SrcSpan "tests/examples/TySplice2.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TySplice2.hs" 1 1 1 13+                , SrcSpan "tests/examples/TySplice2.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 1 2 20+            , srcInfoPoints = [ SrcSpan "tests/examples/TySplice2.hs" 2 4 2 6 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 1 2 3+                , srcInfoPoints = []+                }+              "t1"+          ]+          (TySplice+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 7 2 20+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TySplice2.hs" 2 7 2 9+                   , SrcSpan "tests/examples/TySplice2.hs" 2 19 2 20+                   ]+               }+             (ParenSplice+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 7 2 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TySplice2.hs" 2 7 2 9+                      , SrcSpan "tests/examples/TySplice2.hs" 2 19 2 20+                      ]+                  }+                (BracketExp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 10 2 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TySplice2.hs" 2 10 2 13+                         , SrcSpan "tests/examples/TySplice2.hs" 2 16 2 18+                         ]+                     }+                   (TypeBracket+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 10 2 18+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TySplice2.hs" 2 10 2 13+                            , SrcSpan "tests/examples/TySplice2.hs" 2 16 2 18+                            ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 13 2 16+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 13 2 16+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 13 2 16+                                 , srcInfoPoints = []+                                 }+                               "Int")))))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 1 3 7+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 1 3 3+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 1 3 3+                  , srcInfoPoints = []+                  }+                "t1"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 4 3 7+               , srcInfoPoints = [ SrcSpan "tests/examples/TySplice2.hs" 3 4 3 5 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 6 3 7+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 6 3 7+                     , srcInfoPoints = []+                     }+                   1+                   "1")))+          Nothing+      ]+  , []+  )
+ tests/examples/TySplice2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice2.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TemplateHaskell #-}++t1 :: $( [t| Int |] )+t1 = 1
+ tests/examples/TySplice3.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE QuasiQuotes #-}+[qq| abc |]
+ tests/examples/TySplice3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice3.hs.parser.golden view
@@ -0,0 +1,46 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TySplice3.hs" 1 1 1 1+            , SrcSpan "tests/examples/TySplice3.hs" 2 1 2 1+            , SrcSpan "tests/examples/TySplice3.hs" 2 1 2 1+            , SrcSpan "tests/examples/TySplice3.hs" 2 1 2 1+            , SrcSpan "tests/examples/TySplice3.hs" 3 1 3 1+            , SrcSpan "tests/examples/TySplice3.hs" 3 1 3 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 1 1 1 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TySplice3.hs" 1 1 1 13+                , SrcSpan "tests/examples/TySplice3.hs" 1 26 1 29+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 1 14 1 25+                , srcInfoPoints = []+                }+              "QuasiQuotes"+          ]+      ]+      []+      [ SpliceDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 2 1 2 12+            , srcInfoPoints = []+            }+          (QuasiQuote+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 2 1 2 12+               , srcInfoPoints = []+               }+             "qq"+             " abc ")+      ]+  , []+  )
+ tests/examples/TySplice3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice3.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE QuasiQuotes #-}++[qq| abc |]
+ tests/examples/TySplice4.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE TemplateHaskell #-}+x = [d| f :: a -> Int+        f x = 1 |]++y = [d| f2 :: a -> Int; f2 x = 1 |]
+ tests/examples/TySplice4.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice4.hs.parser.golden view
@@ -0,0 +1,309 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TySplice4.hs" 1 1 1 1+            , SrcSpan "tests/examples/TySplice4.hs" 2 1 2 1+            , SrcSpan "tests/examples/TySplice4.hs" 2 1 2 1+            , SrcSpan "tests/examples/TySplice4.hs" 2 1 2 1+            , SrcSpan "tests/examples/TySplice4.hs" 5 1 5 1+            , SrcSpan "tests/examples/TySplice4.hs" 6 1 6 1+            , SrcSpan "tests/examples/TySplice4.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TySplice4.hs" 1 1 1 13+                , SrcSpan "tests/examples/TySplice4.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "TemplateHaskell"+          ]+      ]+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 1 3 19+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 1 2 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 1 2 2+                  , srcInfoPoints = []+                  }+                "x"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 3 3 19+               , srcInfoPoints = [ SrcSpan "tests/examples/TySplice4.hs" 2 3 2 4 ]+               }+             (BracketExp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 5 3 19+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TySplice4.hs" 2 5 2 8+                      , SrcSpan "tests/examples/TySplice4.hs" 3 9 3 9+                      , SrcSpan "tests/examples/TySplice4.hs" 3 17 3 19+                      ]+                  }+                (DeclBracket+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 5 3 19+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TySplice4.hs" 2 9 2 9+                         , SrcSpan "tests/examples/TySplice4.hs" 3 9 3 9+                         , SrcSpan "tests/examples/TySplice4.hs" 3 17 3 17+                         , SrcSpan "tests/examples/TySplice4.hs" 3 17 3 19+                         ]+                     }+                   [ TypeSig+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 9 2 22+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/TySplice4.hs" 2 11 2 13 ]+                         }+                       [ Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 9 2 10+                             , srcInfoPoints = []+                             }+                           "f"+                       ]+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 14 2 22+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/TySplice4.hs" 2 16 2 18 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 14 2 15+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 14 2 15+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 19 2 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 19 2 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 19 2 22+                                     , srcInfoPoints = []+                                     }+                                   "Int"))))+                   , FunBind+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 9 3 16+                         , srcInfoPoints = []+                         }+                       [ Match+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 9 3 16+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 9 3 10+                                , srcInfoPoints = []+                                }+                              "f")+                           [ PVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 11 3 12+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 11 3 12+                                    , srcInfoPoints = []+                                    }+                                  "x")+                           ]+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 13 3 16+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/TySplice4.hs" 3 13 3 14 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 15 3 16+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/TySplice4.hs" 3 15 3 16+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "1")))+                           Nothing+                       ]+                   ])))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 1 5 36+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 1 5 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 1 5 2+                  , srcInfoPoints = []+                  }+                "y"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 3 5 36+               , srcInfoPoints = [ SrcSpan "tests/examples/TySplice4.hs" 5 3 5 4 ]+               }+             (BracketExp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 5 5 36+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TySplice4.hs" 5 5 5 8+                      , SrcSpan "tests/examples/TySplice4.hs" 5 23 5 24+                      , SrcSpan "tests/examples/TySplice4.hs" 5 34 5 36+                      ]+                  }+                (DeclBracket+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 5 5 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TySplice4.hs" 5 9 5 9+                         , SrcSpan "tests/examples/TySplice4.hs" 5 23 5 24+                         , SrcSpan "tests/examples/TySplice4.hs" 5 34 5 34+                         , SrcSpan "tests/examples/TySplice4.hs" 5 34 5 36+                         ]+                     }+                   [ TypeSig+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 9 5 23+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/TySplice4.hs" 5 12 5 14 ]+                         }+                       [ Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 9 5 11+                             , srcInfoPoints = []+                             }+                           "f2"+                       ]+                       (TyFun+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 15 5 23+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/TySplice4.hs" 5 17 5 19 ]+                            }+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 15 5 16+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 15 5 16+                                  , srcInfoPoints = []+                                  }+                                "a"))+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 20 5 23+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 20 5 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 20 5 23+                                     , srcInfoPoints = []+                                     }+                                   "Int"))))+                   , FunBind+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 25 5 33+                         , srcInfoPoints = []+                         }+                       [ Match+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 25 5 33+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 25 5 27+                                , srcInfoPoints = []+                                }+                              "f2")+                           [ PVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 28 5 29+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 28 5 29+                                    , srcInfoPoints = []+                                    }+                                  "x")+                           ]+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 30 5 33+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/TySplice4.hs" 5 30 5 31 ]+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 32 5 33+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/TySplice4.hs" 5 32 5 33+                                      , srcInfoPoints = []+                                      }+                                    1+                                    "1")))+                           Nothing+                       ]+                   ])))+          Nothing+      ]+  , []+  )
+ tests/examples/TySplice4.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice4.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE TemplateHaskell #-}+x = [d|+      +      f :: a -> Int+      f x = 1 |]+y = [d|+      +      f2 :: a -> Int+      f2 x = 1 |]
+ tests/examples/TypeEqualityParen.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE TypeFamilies #-}+f :: ( Eq a, (a ~ Int) ) => a -> Int+f _ = 3
+ tests/examples/TypeEqualityParen.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeEqualityParen.hs.parser.golden view
@@ -0,0 +1,260 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/TypeEqualityParen.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TypeEqualityParen.hs" 1 1 1 1+            , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 1+            , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 1+            , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 1+            , SrcSpan "tests/examples/TypeEqualityParen.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeEqualityParen.hs" 4 1 4 1+            , SrcSpan "tests/examples/TypeEqualityParen.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TypeEqualityParen.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeEqualityParen.hs" 1 1 1 13+                , SrcSpan "tests/examples/TypeEqualityParen.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TypeEqualityParen.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 37+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 3 2 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 6 2 37+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 6 2 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 6 2 7+                         , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 12 2 13+                         , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 24 2 25+                         , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 26 2 28+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10+                                     , srcInfoPoints = []+                                     }+                                   "Eq")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , ParenA+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/TypeEqualityParen.hs" 2 14 2 23+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 14 2 15+                             , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 22 2 23+                             ]+                         }+                       (TypeA+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 22+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 17 2 18 ]+                            }+                          (TyEquals+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 22+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 17 2 18 ]+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16+                                     , srcInfoPoints = []+                                     }+                                   "a"))+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22+                                        , srcInfoPoints = []+                                        }+                                      "Int")))))+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TypeEqualityParen.hs" 2 29 2 37+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 31 2 33 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 29 2 30+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TypeEqualityParen.hs" 2 29 2 30+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 34 2 37+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TypeEqualityParen.hs" 2 34 2 37+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TypeEqualityParen.hs" 2 34 2 37+                           , srcInfoPoints = []+                           }+                         "Int")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TypeEqualityParen.hs" 3 1 3 8+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TypeEqualityParen.hs" 3 1 3 8+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/TypeEqualityParen.hs" 3 1 3 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/TypeEqualityParen.hs" 3 3 3 4+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/TypeEqualityParen.hs" 3 5 3 8+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/TypeEqualityParen.hs" 3 5 3 6 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/TypeEqualityParen.hs" 3 7 3 8+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/TypeEqualityParen.hs" 3 7 3 8+                         , srcInfoPoints = []+                         }+                       3+                       "3")))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/TypeEqualityParen.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeEqualityParen.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}++f :: (Eq a, (a ~ Int)) => a -> Int+f _ = 3
+ tests/examples/TypeErrorMessage.hs view
@@ -0,0 +1,1 @@+newtype PoC = PoC (forall b . b)
+ tests/examples/TypeErrorMessage.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/TypeErrorMessage.hs" 2 1) "At least one of ExplicitForAll or TypeOperators language extensions needs to be enabled. Please add: {-# LANGUAGE ExplicitForAll #-} or {-# LANGUAGE TypeOperators #-} language pragma at the top of your module."
+ tests/examples/TypeErrorMessage.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+  (SrcLoc "tests/examples/TypeErrorMessage.hs" 2 1)+  "At least one of ExplicitForAll or TypeOperators language extensions needs to be enabled. Please add: {-# LANGUAGE ExplicitForAll #-} or {-# LANGUAGE TypeOperators #-} language pragma at the top of your module."
+ tests/examples/TypeErrorMessage.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/TypeErrorMessage.hs" 2 1) "At least one of ExplicitForAll or TypeOperators language extensions needs to be enabled. Please add: {-# LANGUAGE ExplicitForAll #-} or {-# LANGUAGE TypeOperators #-} language pragma at the top of your module."
+ tests/examples/TypeErrorMessage.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/TypeErrorMessage.hs" 2 1) "At least one of ExplicitForAll or TypeOperators language extensions needs to be enabled. Please add: {-# LANGUAGE ExplicitForAll #-} or {-# LANGUAGE TypeOperators #-} language pragma at the top of your module."
+ tests/examples/TypeFunctions.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE TypeFamilies, KindSignatures #-}++data Id = Id++type family Rep (f :: * -> *) x :: *++type instance Rep Id x = x
+ tests/examples/TypeFunctions.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeFunctions.hs.parser.golden view
@@ -0,0 +1,244 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TypeFunctions.hs" 1 1 1 1+            , SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeFunctions.hs" 5 1 5 1+            , SrcSpan "tests/examples/TypeFunctions.hs" 7 1 7 1+            , SrcSpan "tests/examples/TypeFunctions.hs" 8 1 8 1+            , SrcSpan "tests/examples/TypeFunctions.hs" 8 1 8 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 1 1 1 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeFunctions.hs" 1 1 1 13+                , SrcSpan "tests/examples/TypeFunctions.hs" 1 26 1 27+                , SrcSpan "tests/examples/TypeFunctions.hs" 1 43 1 46+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 1 28 1 42+                , srcInfoPoints = []+                }+              "KindSignatures"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 13+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeFunctions.hs" 3 9 3 10 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 6 3 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 6 3 8+                  , srcInfoPoints = []+                  }+                "Id"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 11 3 13+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 11 3 13+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 11 3 13+                      , srcInfoPoints = []+                      }+                    "Id")+                 [])+          ]+          []+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 1 5 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeFunctions.hs" 5 1 5 5+                , SrcSpan "tests/examples/TypeFunctions.hs" 5 6 5 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 13 5 32+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 13 5 30+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 13 5 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 13 5 16+                        , srcInfoPoints = []+                        }+                      "Rep"))+                (KindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 17 5 30+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TypeFunctions.hs" 5 17 5 18+                         , SrcSpan "tests/examples/TypeFunctions.hs" 5 20 5 22+                         , SrcSpan "tests/examples/TypeFunctions.hs" 5 29 5 30+                         ]+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 18 5 19+                        , srcInfoPoints = []+                        }+                      "f")+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 23 5 29+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TypeFunctions.hs" 5 25 5 27 ]+                        }+                      (TyStar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 23 5 24+                           , srcInfoPoints = []+                           })+                      (TyStar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 28 5 29+                           , srcInfoPoints = []+                           }))))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 31 5 32+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 31 5 32+                     , srcInfoPoints = []+                     }+                   "x")))+          (Just+             (KindSig+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 33 5 37+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeFunctions.hs" 5 33 5 35 ]+                  }+                (TyStar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 36 5 37+                     , srcInfoPoints = []+                     })))+          Nothing+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 1 7 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeFunctions.hs" 7 1 7 5+                , SrcSpan "tests/examples/TypeFunctions.hs" 7 6 7 14+                , SrcSpan "tests/examples/TypeFunctions.hs" 7 24 7 25+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 23+               , srcInfoPoints = []+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 21+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 18+                           , srcInfoPoints = []+                           }+                         "Rep")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 19 7 21+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 19 7 21+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 19 7 21+                           , srcInfoPoints = []+                           }+                         "Id"))))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 22 7 23+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 22 7 23+                     , srcInfoPoints = []+                     }+                   "x")))+          (TyVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 26 7 27+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 26 7 27+                  , srcInfoPoints = []+                  }+                "x"))+      ]+  , []+  )
+ tests/examples/TypeFunctions.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeFunctions.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE TypeFamilies, KindSignatures #-}++data Id = Id++type family Rep (f :: * -> *) x :: *++type instance Rep Id x = x
+ tests/examples/TypeInstances.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE TypeFamilies #-}++class MapType v where+  type Key v :: *+  type instance Key v = TileKey v++  type Source v :: *
+ tests/examples/TypeInstances.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeInstances.hs.parser.golden view
@@ -0,0 +1,249 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TypeInstances.hs" 1 1 1 1+            , SrcSpan "tests/examples/TypeInstances.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeInstances.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeInstances.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeInstances.hs" 8 1 8 1+            , SrcSpan "tests/examples/TypeInstances.hs" 8 1 8 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeInstances.hs" 1 1 1 13+                , SrcSpan "tests/examples/TypeInstances.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      ]+      []+      [ ClassDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 1 7 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeInstances.hs" 3 1 3 6+                , SrcSpan "tests/examples/TypeInstances.hs" 3 17 3 22+                , SrcSpan "tests/examples/TypeInstances.hs" 4 3 4 3+                , SrcSpan "tests/examples/TypeInstances.hs" 5 3 5 3+                , SrcSpan "tests/examples/TypeInstances.hs" 7 3 7 3+                , SrcSpan "tests/examples/TypeInstances.hs" 8 1 8 0+                ]+            }+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 7 3 16+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 7 3 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 7 3 14+                     , srcInfoPoints = []+                     }+                   "MapType"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 15 3 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 15 3 16+                     , srcInfoPoints = []+                     }+                   "v")))+          []+          (Just+             [ ClsTyFam+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 3 4 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/TypeInstances.hs" 4 3 4 7 ]+                   }+                 (DHApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 8 4 13+                      , srcInfoPoints = []+                      }+                    (DHead+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 8 4 11+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 8 4 11+                            , srcInfoPoints = []+                            }+                          "Key"))+                    (UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 12 4 13+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 12 4 13+                            , srcInfoPoints = []+                            }+                          "v")))+                 (Just+                    (KindSig+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 14 4 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/TypeInstances.hs" 4 14 4 16 ]+                         }+                       (TyStar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 17 4 18+                            , srcInfoPoints = []+                            })))+                 Nothing+             , ClsTyDef+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 3 5 34+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/TypeInstances.hs" 5 3 5 7+                       , SrcSpan "tests/examples/TypeInstances.hs" 5 8 5 16+                       ]+                   }+                 (TypeEqn+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 34+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/TypeInstances.hs" 5 23 5 24 ]+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 22+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 20+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 20+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 20+                                  , srcInfoPoints = []+                                  }+                                "Key")))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 21 5 22+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 21 5 22+                               , srcInfoPoints = []+                               }+                             "v")))+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 25 5 34+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 25 5 32+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 25 5 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/TypeInstances.hs" 5 25 5 32+                                  , srcInfoPoints = []+                                  }+                                "TileKey")))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 33 5 34+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 33 5 34+                               , srcInfoPoints = []+                               }+                             "v"))))+             , ClsTyFam+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 3 7 21+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/TypeInstances.hs" 7 3 7 7 ]+                   }+                 (DHApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 8 7 16+                      , srcInfoPoints = []+                      }+                    (DHead+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 8 7 14+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 8 7 14+                            , srcInfoPoints = []+                            }+                          "Source"))+                    (UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 15 7 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 15 7 16+                            , srcInfoPoints = []+                            }+                          "v")))+                 (Just+                    (KindSig+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 17 7 21+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/TypeInstances.hs" 7 17 7 19 ]+                         }+                       (TyStar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 20 7 21+                            , srcInfoPoints = []+                            })))+                 Nothing+             ])+      ]+  , []+  )
+ tests/examples/TypeInstances.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeInstances.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeFamilies #-}++class MapType v where+        type Key v :: *+        type Key v = TileKey v+        type Source v :: *
+ tests/examples/TypeListCons.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE DataKinds, TypeOperators #-}++module TypeListCons where++type List1 a = a ': '[]+type List2 a b = a ': '[]+type List3 a b c = a ': b ': c ': '[]
+ tests/examples/TypeListCons.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeListCons.hs.parser.golden view
@@ -0,0 +1,426 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TypeListCons.hs" 1 1 1 1+            , SrcSpan "tests/examples/TypeListCons.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeListCons.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeListCons.hs" 5 1 5 1+            , SrcSpan "tests/examples/TypeListCons.hs" 6 1 6 1+            , SrcSpan "tests/examples/TypeListCons.hs" 7 1 7 1+            , SrcSpan "tests/examples/TypeListCons.hs" 8 1 8 1+            , SrcSpan "tests/examples/TypeListCons.hs" 8 1 8 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 3 1 3 26+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/TypeListCons.hs" 3 1 3 7+                  , SrcSpan "tests/examples/TypeListCons.hs" 3 21 3 26+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 3 8 3 20+                 , srcInfoPoints = []+                 }+               "TypeListCons")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 1 1 1 42+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeListCons.hs" 1 1 1 13+                , SrcSpan "tests/examples/TypeListCons.hs" 1 23 1 24+                , SrcSpan "tests/examples/TypeListCons.hs" 1 39 1 42+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 1 14 1 23+                , srcInfoPoints = []+                }+              "DataKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 1 25 1 38+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      ]+      []+      [ TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 1 5 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeListCons.hs" 5 1 5 5+                , SrcSpan "tests/examples/TypeListCons.hs" 5 14 5 15+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 6 5 13+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 6 5 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 6 5 11+                     , srcInfoPoints = []+                     }+                   "List1"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 12 5 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 12 5 13+                     , srcInfoPoints = []+                     }+                   "a")))+          (TyInfix+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 16 5 24+               , srcInfoPoints = []+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 16 5 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 16 5 17+                     , srcInfoPoints = []+                     }+                   "a"))+             (PromotedName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 18 5 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeListCons.hs" 5 18 5 19 ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 19 5 20+                     , srcInfoPoints = []+                     }+                   (Cons+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 19 5 20+                        , srcInfoPoints = []+                        })))+             (TyPromoted+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 21 5 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeListCons.hs" 5 21 5 22+                      , SrcSpan "tests/examples/TypeListCons.hs" 5 23 5 24+                      ]+                  }+                (PromotedList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 21 5 24+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TypeListCons.hs" 5 21 5 22+                         , SrcSpan "tests/examples/TypeListCons.hs" 5 23 5 24+                         ]+                     }+                   True+                   [])))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 1 6 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeListCons.hs" 6 1 6 5+                , SrcSpan "tests/examples/TypeListCons.hs" 6 16 6 17+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 6 6 15+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 6 6 13+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 6 6 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 6 6 11+                        , srcInfoPoints = []+                        }+                      "List2"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 12 6 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 12 6 13+                        , srcInfoPoints = []+                        }+                      "a")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 14 6 15+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 14 6 15+                     , srcInfoPoints = []+                     }+                   "b")))+          (TyInfix+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 18 6 26+               , srcInfoPoints = []+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 18 6 19+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 18 6 19+                     , srcInfoPoints = []+                     }+                   "a"))+             (PromotedName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 20 6 22+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeListCons.hs" 6 20 6 21 ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 21 6 22+                     , srcInfoPoints = []+                     }+                   (Cons+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 21 6 22+                        , srcInfoPoints = []+                        })))+             (TyPromoted+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 23 6 26+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeListCons.hs" 6 23 6 24+                      , SrcSpan "tests/examples/TypeListCons.hs" 6 25 6 26+                      ]+                  }+                (PromotedList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 23 6 26+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TypeListCons.hs" 6 23 6 24+                         , SrcSpan "tests/examples/TypeListCons.hs" 6 25 6 26+                         ]+                     }+                   True+                   [])))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 1 7 38+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeListCons.hs" 7 1 7 5+                , SrcSpan "tests/examples/TypeListCons.hs" 7 18 7 19+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 17+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 15+                  , srcInfoPoints = []+                  }+                (DHApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 13+                     , srcInfoPoints = []+                     }+                   (DHead+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 11+                           , srcInfoPoints = []+                           }+                         "List3"))+                   (UnkindedVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 12 7 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 12 7 13+                           , srcInfoPoints = []+                           }+                         "a")))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 14 7 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 14 7 15+                        , srcInfoPoints = []+                        }+                      "b")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 16 7 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 16 7 17+                     , srcInfoPoints = []+                     }+                   "c")))+          (TyInfix+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 20 7 38+               , srcInfoPoints = []+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 20 7 21+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 20 7 21+                     , srcInfoPoints = []+                     }+                   "a"))+             (PromotedName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 22 7 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeListCons.hs" 7 22 7 23 ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 23 7 24+                     , srcInfoPoints = []+                     }+                   (Cons+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 23 7 24+                        , srcInfoPoints = []+                        })))+             (TyInfix+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 25 7 38+                  , srcInfoPoints = []+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 25 7 26+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 25 7 26+                        , srcInfoPoints = []+                        }+                      "b"))+                (PromotedName+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 27 7 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TypeListCons.hs" 7 27 7 28 ]+                     }+                   (Special+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 28 7 29+                        , srcInfoPoints = []+                        }+                      (Cons+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 28 7 29+                           , srcInfoPoints = []+                           })))+                (TyInfix+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 30 7 38+                     , srcInfoPoints = []+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 30 7 31+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 30 7 31+                           , srcInfoPoints = []+                           }+                         "c"))+                   (PromotedName+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 32 7 34+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TypeListCons.hs" 7 32 7 33 ]+                        }+                      (Special+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 33 7 34+                           , srcInfoPoints = []+                           }+                         (Cons+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 33 7 34+                              , srcInfoPoints = []+                              })))+                   (TyPromoted+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 35 7 38+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TypeListCons.hs" 7 35 7 36+                            , SrcSpan "tests/examples/TypeListCons.hs" 7 37 7 38+                            ]+                        }+                      (PromotedList+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 35 7 38+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/TypeListCons.hs" 7 35 7 36+                               , SrcSpan "tests/examples/TypeListCons.hs" 7 37 7 38+                               ]+                           }+                         True+                         [])))))+      ]+  , []+  )
+ tests/examples/TypeListCons.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeListCons.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE DataKinds, TypeOperators #-}+module TypeListCons where++type List1 a = a ': '[]++type List2 a b = a ': '[]++type List3 a b c = a ': b ': c ': '[]
+ tests/examples/TypeOperatorAsVariable.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeOperators #-}++type T (~>) = ()++type Foo = ()
+ tests/examples/TypeOperatorAsVariable.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeOperatorAsVariable.hs.parser.golden view
@@ -0,0 +1,159 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 1 1 1+            , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 1 5 1+            , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 6 1 6 1+            , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 1 1 13+                , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      ]+      []+      [ TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 5+                , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 13 3 14+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 6 3 12+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 6 3 7+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 6 3 7+                     , srcInfoPoints = []+                     }+                   "T"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 8 3 12+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 8 3 9+                      , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 9 3 11+                      , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 11 3 12+                      ]+                  }+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 9 3 11+                     , srcInfoPoints = []+                     }+                   "~>")))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 16+                   , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 16 3 17+                   ]+               }+             (Special+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 17+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 16+                      , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 16 3 17+                      ]+                  }+                (UnitCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 16+                         , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 16 3 17+                         ]+                     })))+      , TypeDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 1 5 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 1 5 5+                , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 10 5 11+                ]+            }+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 6 5 9+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 6 5 9+                  , srcInfoPoints = []+                  }+                "Foo"))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 13+                   , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 13 5 14+                   ]+               }+             (Special+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 13+                      , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 13 5 14+                      ]+                  }+                (UnitCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 13+                         , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 13 5 14+                         ]+                     })))+      ]+  , []+  )
+ tests/examples/TypeOperatorAsVariable.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeOperatorAsVariable.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeOperators #-}++type T (~>) = ()++type Foo = ()
+ tests/examples/TypeOperatorsTest.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators, FlexibleContexts, FlexibleInstances #-}++f :: ArrowXml (~>) => a ~> a+f = undefined
+ tests/examples/TypeOperatorsTest.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeOperatorsTest.hs.parser.golden view
@@ -0,0 +1,242 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 1 1 1+            , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 1+            , SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 1 4 1+            , SrcSpan "tests/examples/TypeOperatorsTest.hs" 5 1 5 1+            , SrcSpan "tests/examples/TypeOperatorsTest.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 1 1 68+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 1 1 13+                , SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 27 1 28+                , SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 45 1 46+                , SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 65 1 68+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 29 1 45+                , srcInfoPoints = []+                }+              "FlexibleContexts"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 47 1 64+                , srcInfoPoints = []+                }+              "FlexibleInstances"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 3 3 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 29+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14+                                    , srcInfoPoints = []+                                    }+                                  "ArrowXml")))+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16+                                  , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18+                                  , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19+                                  ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16+                                     , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18+                                     , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19+                                     ]+                                 }+                               (Symbol+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18+                                    , srcInfoPoints = []+                                    }+                                  "~>")))))))+             (TyInfix+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 23 3 29+                  , srcInfoPoints = []+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 23 3 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 23 3 24+                        , srcInfoPoints = []+                        }+                      "a"))+                (UnpromotedName+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 25 3 27+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 25 3 27+                        , srcInfoPoints = []+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 25 3 27+                           , srcInfoPoints = []+                           }+                         "~>")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 28 3 29+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 28 3 29+                        , srcInfoPoints = []+                        }+                      "a"))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 1 4 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 1 4 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 1 4 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 3 4 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 3 4 4 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 5 4 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 5 4 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 5 4 14+                        , srcInfoPoints = []+                        }+                      "undefined"))))+          Nothing+      ]+  , []+  )
+ tests/examples/TypeOperatorsTest.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeOperatorsTest.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators, FlexibleContexts, FlexibleInstances #-}++f :: ArrowXml (~>) => a ~> a+f = undefined
+ tests/examples/UnboxedSingleton.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE UnboxedTuples #-}+-- See e.g. GHC.Prim.indexArray#+foo a = (# a #)
+ tests/examples/UnboxedSingleton.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnboxedSingleton.hs.parser.golden view
@@ -0,0 +1,113 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/UnboxedSingleton.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/UnboxedSingleton.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnboxedSingleton.hs" 4 1 4 1+            , SrcSpan "tests/examples/UnboxedSingleton.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnboxedSingleton.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnboxedSingleton.hs" 1 1 1 13+                , SrcSpan "tests/examples/UnboxedSingleton.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnboxedSingleton.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnboxedTuples"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 16+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 16+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnboxedSingleton.hs" 3 5 3 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnboxedSingleton.hs" 3 5 3 6+                       , srcInfoPoints = []+                       }+                     "a")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnboxedSingleton.hs" 3 7 3 16+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 7 3 8 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/UnboxedSingleton.hs" 3 9 3 16+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 9 3 11+                          , SrcSpan "tests/examples/UnboxedSingleton.hs" 3 14 3 16+                          ]+                      }+                    Unboxed+                    [ Var+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/UnboxedSingleton.hs" 3 12 3 13+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnboxedSingleton.hs" 3 12 3 13+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnboxedSingleton.hs" 3 12 3 13+                                , srcInfoPoints = []+                                }+                              "a"))+                    ]))+              Nothing+          ]+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/UnboxedSingleton.hs" 2 1 2 33)+        " See e.g. GHC.Prim.indexArray#"+    ]+  )
+ tests/examples/UnboxedSingleton.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnboxedSingleton.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE UnboxedTuples #-}+foo a = (# a #)
+ tests/examples/UnboxedTuples.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE UnboxedTuples #-}++foo :: (a, b) -> (# b , a #)+foo (a, b) =+  case (# b, a #) of+    (# b, a #) -> (# , #) b a
+ tests/examples/UnboxedTuples.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnboxedTuples.hs.parser.golden view
@@ -0,0 +1,365 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/UnboxedTuples.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnboxedTuples.hs" 4 1 4 1+            , SrcSpan "tests/examples/UnboxedTuples.hs" 7 1 7 1+            , SrcSpan "tests/examples/UnboxedTuples.hs" 7 1 7 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnboxedTuples.hs" 1 1 1 13+                , SrcSpan "tests/examples/UnboxedTuples.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnboxedTuples"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 29+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnboxedTuples.hs" 3 5 3 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 8 3 29+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnboxedTuples.hs" 3 15 3 17 ]+               }+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 8 3 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnboxedTuples.hs" 3 8 3 9+                      , SrcSpan "tests/examples/UnboxedTuples.hs" 3 10 3 11+                      , SrcSpan "tests/examples/UnboxedTuples.hs" 3 13 3 14+                      ]+                  }+                Boxed+                [ TyVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 9 3 10+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 9 3 10+                         , srcInfoPoints = []+                         }+                       "a")+                , TyVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 12 3 13+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 12 3 13+                         , srcInfoPoints = []+                         }+                       "b")+                ])+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 18 3 29+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnboxedTuples.hs" 3 18 3 20+                      , SrcSpan "tests/examples/UnboxedTuples.hs" 3 23 3 24+                      , SrcSpan "tests/examples/UnboxedTuples.hs" 3 27 3 29+                      ]+                  }+                Unboxed+                [ TyVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 21 3 22+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 21 3 22+                         , srcInfoPoints = []+                         }+                       "b")+                , TyVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 25 3 26+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 25 3 26+                         , srcInfoPoints = []+                         }+                       "a")+                ]))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 1 6 30+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 1 6 30+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 1 4 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PTuple+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 5 4 11+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/UnboxedTuples.hs" 4 5 4 6+                        , SrcSpan "tests/examples/UnboxedTuples.hs" 4 7 4 8+                        , SrcSpan "tests/examples/UnboxedTuples.hs" 4 10 4 11+                        ]+                    }+                  Boxed+                  [ PVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 6 4 7+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 6 4 7+                           , srcInfoPoints = []+                           }+                         "a")+                  , PVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 9 4 10+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 9 4 10+                           , srcInfoPoints = []+                           }+                         "b")+                  ]+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 12 6 30+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnboxedTuples.hs" 4 12 4 13 ]+                   }+                 (Case+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 3 6 30+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/UnboxedTuples.hs" 5 3 5 7+                          , SrcSpan "tests/examples/UnboxedTuples.hs" 5 19 5 21+                          , SrcSpan "tests/examples/UnboxedTuples.hs" 6 5 6 5+                          , SrcSpan "tests/examples/UnboxedTuples.hs" 7 1 7 0+                          ]+                      }+                    (Tuple+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 8 5 18+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/UnboxedTuples.hs" 5 8 5 10+                             , SrcSpan "tests/examples/UnboxedTuples.hs" 5 12 5 13+                             , SrcSpan "tests/examples/UnboxedTuples.hs" 5 16 5 18+                             ]+                         }+                       Unboxed+                       [ Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 11 5 12+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 11 5 12+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnboxedTuples.hs" 5 11 5 12+                                   , srcInfoPoints = []+                                   }+                                 "b"))+                       , Var+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 14 5 15+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 14 5 15+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnboxedTuples.hs" 5 14 5 15+                                   , srcInfoPoints = []+                                   }+                                 "a"))+                       ])+                    [ Alt+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 5 6 30+                          , srcInfoPoints = []+                          }+                        (PTuple+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 5 6 15+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/UnboxedTuples.hs" 6 5 6 7+                                 , SrcSpan "tests/examples/UnboxedTuples.hs" 6 9 6 10+                                 , SrcSpan "tests/examples/UnboxedTuples.hs" 6 13 6 15+                                 ]+                             }+                           Unboxed+                           [ PVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 8 6 9+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/UnboxedTuples.hs" 6 8 6 9+                                    , srcInfoPoints = []+                                    }+                                  "b")+                           , PVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 11 6 12+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/UnboxedTuples.hs" 6 11 6 12+                                    , srcInfoPoints = []+                                    }+                                  "a")+                           ])+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 16 6 30+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/UnboxedTuples.hs" 6 16 6 18 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 30+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 28+                                   , srcInfoPoints = []+                                   }+                                 (Con+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 26+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 21+                                          , SrcSpan "tests/examples/UnboxedTuples.hs" 6 22 6 23+                                          , SrcSpan "tests/examples/UnboxedTuples.hs" 6 24 6 26+                                          ]+                                      }+                                    (Special+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 26+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 21+                                             , SrcSpan "tests/examples/UnboxedTuples.hs" 6 22 6 23+                                             , SrcSpan "tests/examples/UnboxedTuples.hs" 6 24 6 26+                                             ]+                                         }+                                       (TupleCon+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 26+                                            , srcInfoPoints =+                                                [ SrcSpan+                                                    "tests/examples/UnboxedTuples.hs" 6 19 6 21+                                                , SrcSpan+                                                    "tests/examples/UnboxedTuples.hs" 6 22 6 23+                                                , SrcSpan+                                                    "tests/examples/UnboxedTuples.hs" 6 24 6 26+                                                ]+                                            }+                                          Unboxed+                                          2)))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnboxedTuples.hs" 6 27 6 28+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnboxedTuples.hs" 6 27 6 28+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/UnboxedTuples.hs" 6 27 6 28+                                            , srcInfoPoints = []+                                            }+                                          "b"))))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnboxedTuples.hs" 6 29 6 30+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnboxedTuples.hs" 6 29 6 30+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnboxedTuples.hs" 6 29 6 30+                                         , srcInfoPoints = []+                                         }+                                       "a")))))+                        Nothing+                    ]))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/UnboxedTuples.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnboxedTuples.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE UnboxedTuples #-}++foo :: (a, b) -> (# b, a #)+foo (a, b)+  = case (# b, a #) of+        (# b, a #) -> (# , #) b a
+ tests/examples/Unicode.hs view
@@ -0,0 +1,118 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++import System.Environment++main :: IO ()+main = do+  as ← getArgs+  print $ as+  print $ test                0+  print $ test2               0+  print $ testRewrite         0+  print $ testRewriteReverse  0+  print $ testRewrite2        0+  print $ testRewriteReverse2 0++test :: a → Bool+test x = pi+  where+    f  = replicate 2000 x+    i  = repeat         x+    pf = f |> 300+    pi = i |> 300++test2 :: a → (Bool,Bool)+test2 x = (pf,pi)+  where+    f  = replicate 2000 x+    i  = repeat         x+    pf = f |> 300+    pi = i |> 300++testRewrite :: a → Bool+testRewrite x = pi+  where+    f  = replicate 2000 x+    i  = repeat         x+    lf = length f+    li = length i+    pf = lf > 300+    pi = li > 300++testRewriteReverse :: a → Bool+testRewriteReverse x = pi+  where+    f  = replicate 2000 x+    i  = repeat         x+    lf = length f+    li = length i+    pf = 300 ≤ lf+    pi = 300 ≤ li++testRewrite2 :: a → (Bool,Bool)+testRewrite2 x = (length i > 300,300 > length i)+  where+--    f  = replicate 2000 x+    i  = repeat         x+--    lf = length f+--    li = length i+--    pf = lf > 300+--    pi = li > 300++testRewriteReverse2 :: a → (Bool,Bool)+testRewriteReverse2 x = (2000 < length i,length i > 20)+  where+    f  = replicate 2000 x+    i  = repeat         x+    lf = length f+    li = length i+    pf = 2000 == lf+    pi = lf ≥ li+++lengthOP :: (Num a, Ord a) ⇒ Bool → (a → a → Bool) → [b] → a → Bool+lengthOP v (⊜) []  n = 0 ⊜ n+lengthOP v (⊜) xxs n = co xxs 0+  where+    co (_:xs) c | n > c     = co xs (c+1)+                | otherwise = v+    co []     c = c ⊜ n++(≣) = (==)+(≤) = (<=)+(≥) = (>=)++(|≣)  = lengthOP False (≣)+(|<)  = lengthOP False (<)+(|≤)  = lengthOP False (≤)+(|>)  = lengthOP True  (>)+(|≥)  = lengthOP True  (≥)++(|=)  = lengthOP False (==)+(|==) = lengthOP False (==)+(|<=) = lengthOP False (<=)+(|>=) = lengthOP False (>=)+++-- ≣≤≥+(≣|) = flip (|≣)+(<|) = flip (|≥)+(≤|) = flip (|>)+(>|) = flip (|≤)+(≥|) = flip (|<)++{-# RULES+-- length+"xs |≣ n" forall xs n.  (length xs) == n = xs |≣ n+"xs |< n" forall xs n.  (length xs) <  n = xs |< n+"xs |≤ n" forall xs n.  (length xs) <= n = xs |≤ n+"xs |> n" forall xs n.  (length xs) >  n = xs |> n+"xs |≥ n" forall xs n.  (length xs) >= n = xs |≥ n++"n ≣| xs" forall xs n.  n == (length xs) = xs |≣ n+"n <| xs" forall xs n.  n <  (length xs) = xs |≥ n+"n ≤| xs" forall xs n.  n <= (length xs) = xs |> n+"n >| xs" forall xs n.  n >  (length xs) = xs |≤ n+"n ≥| xs" forall xs n.  n >= (length xs) = xs |< n+  #-}
+ tests/examples/Unicode.hs.exactprinter.golden view
@@ -0,0 +1,119 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++import System.Environment++main :: IO ()+main = do+  as <-getArgs+  print $ as+  print $ test                0+  print $ test2               0+  print $ testRewrite         0+  print $ testRewriteReverse  0+  print $ testRewrite2        0+  print $ testRewriteReverse2 0++test :: a ->Bool+test x = pi+  where+    f  = replicate 2000 x+    i  = repeat         x+    pf = f |> 300+    pi = i |> 300++test2 :: a ->(Bool,Bool)+test2 x = (pf,pi)+  where+    f  = replicate 2000 x+    i  = repeat         x+    pf = f |> 300+    pi = i |> 300++testRewrite :: a ->Bool+testRewrite x = pi+  where+    f  = replicate 2000 x+    i  = repeat         x+    lf = length f+    li = length i+    pf = lf > 300+    pi = li > 300++testRewriteReverse :: a ->Bool+testRewriteReverse x = pi+  where+    f  = replicate 2000 x+    i  = repeat         x+    lf = length f+    li = length i+    pf = 300 d lf+    pi = 300 d li++testRewrite2 :: a ->(Bool,Bool)+testRewrite2 x = (length i > 300,300 > length i)+  where+--    f  = replicate 2000 x+    i  = repeat         x+--    lf = length f+--    li = length i+--    pf = lf > 300+--    pi = li > 300++testRewriteReverse2 :: a ->(Bool,Bool)+testRewriteReverse2 x = (2000 < length i,length i > 20)+  where+    f  = replicate 2000 x+    i  = repeat         x+    lf = length f+    li = length i+    pf = 2000 == lf+    pi = lf e li+++lengthOP :: (Num a, Ord a) =>Bool ->(a ->a ->Bool) ->[b] ->a ->Bool+lengthOP v (œ) []  n = 0 œ n+lengthOP v (œ) xxs n = co xxs 0+  where+    co (_:xs) c | n > c     = co xs (c+1)+                | otherwise = v+    co []     c = c œ n++(c) = (==)+(d) = (<=)+(e) = (>=)++(|c)  = lengthOP False (c)+(|<)  = lengthOP False (<)+(|d)  = lengthOP False (d)+(|>)  = lengthOP True  (>)+(|e)  = lengthOP True  (e)++(|=)  = lengthOP False (==)+(|==) = lengthOP False (==)+(|<=) = lengthOP False (<=)+(|>=) = lengthOP False (>=)+++-- cde+(c|) = flip (|c)+(<|) = flip (|e)+(d|) = flip (|>)+(>|) = flip (|d)+(e|) = flip (|<)++{-# RULES+-- length+"xs |\8803 n"forallxsn. (length xs) == n = xs |c n+"xs |< n" forall xs n.  (length xs) <  n = xs |< n+"xs |\8804 n"forallxsn. (length xs) <= n = xs |d n+"xs |> n" forall xs n.  (length xs) >  n = xs |> n+"xs |\8805 n"forallxsn. (length xs) >= n = xs |e n++"n \8803| xs"forallxsn. n == (length xs) = xs |c n+"n <| xs" forall xs n.  n <  (length xs) = xs |e n+"n \8804| xs"forallxsn. n <= (length xs) = xs |> n+"n >| xs" forall xs n.  n >  (length xs) = xs |d n+"n \8805| xs"forallxsn. n >= (length xs) = xs |< n+  #-}+
+ tests/examples/Unicode.hs.parser.golden view
@@ -0,0 +1,7749 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 1 1 119 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Unicode.hs" 1 1 1 1+            , SrcSpan "tests/examples/Unicode.hs" 2 1 2 1+            , SrcSpan "tests/examples/Unicode.hs" 2 1 2 1+            , SrcSpan "tests/examples/Unicode.hs" 4 1 4 1+            , SrcSpan "tests/examples/Unicode.hs" 6 1 6 1+            , SrcSpan "tests/examples/Unicode.hs" 7 1 7 1+            , SrcSpan "tests/examples/Unicode.hs" 17 1 17 1+            , SrcSpan "tests/examples/Unicode.hs" 18 1 18 1+            , SrcSpan "tests/examples/Unicode.hs" 25 1 25 1+            , SrcSpan "tests/examples/Unicode.hs" 26 1 26 1+            , SrcSpan "tests/examples/Unicode.hs" 33 1 33 1+            , SrcSpan "tests/examples/Unicode.hs" 34 1 34 1+            , SrcSpan "tests/examples/Unicode.hs" 43 1 43 1+            , SrcSpan "tests/examples/Unicode.hs" 44 1 44 1+            , SrcSpan "tests/examples/Unicode.hs" 53 1 53 1+            , SrcSpan "tests/examples/Unicode.hs" 54 1 54 1+            , SrcSpan "tests/examples/Unicode.hs" 63 1 63 1+            , SrcSpan "tests/examples/Unicode.hs" 64 1 64 1+            , SrcSpan "tests/examples/Unicode.hs" 74 1 74 1+            , SrcSpan "tests/examples/Unicode.hs" 75 1 75 1+            , SrcSpan "tests/examples/Unicode.hs" 76 1 76 1+            , SrcSpan "tests/examples/Unicode.hs" 82 1 82 1+            , SrcSpan "tests/examples/Unicode.hs" 83 1 83 1+            , SrcSpan "tests/examples/Unicode.hs" 84 1 84 1+            , SrcSpan "tests/examples/Unicode.hs" 86 1 86 1+            , SrcSpan "tests/examples/Unicode.hs" 87 1 87 1+            , SrcSpan "tests/examples/Unicode.hs" 88 1 88 1+            , SrcSpan "tests/examples/Unicode.hs" 89 1 89 1+            , SrcSpan "tests/examples/Unicode.hs" 90 1 90 1+            , SrcSpan "tests/examples/Unicode.hs" 92 1 92 1+            , SrcSpan "tests/examples/Unicode.hs" 93 1 93 1+            , SrcSpan "tests/examples/Unicode.hs" 94 1 94 1+            , SrcSpan "tests/examples/Unicode.hs" 95 1 95 1+            , SrcSpan "tests/examples/Unicode.hs" 99 1 99 1+            , SrcSpan "tests/examples/Unicode.hs" 100 1 100 1+            , SrcSpan "tests/examples/Unicode.hs" 101 1 101 1+            , SrcSpan "tests/examples/Unicode.hs" 102 1 102 1+            , SrcSpan "tests/examples/Unicode.hs" 103 1 103 1+            , SrcSpan "tests/examples/Unicode.hs" 105 1 105 1+            , SrcSpan "tests/examples/Unicode.hs" 119 1 119 1+            , SrcSpan "tests/examples/Unicode.hs" 119 1 119 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 2 1 2 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/Unicode.hs" 2 1 2 7+                  , SrcSpan "tests/examples/Unicode.hs" 2 13 2 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 2 8 2 12+                 , srcInfoPoints = []+                 }+               "Main")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unicode.hs" 1 1 1 13+                , SrcSpan "tests/examples/Unicode.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnicodeSyntax"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 4 1 4 26+                , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 4 1 4 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 4 8 4 26+                  , srcInfoPoints = []+                  }+                "System.Environment"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 1 6 14+            , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 6 6 6 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 1 6 5+                , srcInfoPoints = []+                }+              "main"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 9 6 14+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 9 6 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 9 6 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 9 6 11+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 12 6 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Unicode.hs" 6 12 6 13+                      , SrcSpan "tests/examples/Unicode.hs" 6 13 6 14+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 12 6 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 6 12 6 13+                         , SrcSpan "tests/examples/Unicode.hs" 6 13 6 14+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 12 6 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 6 12 6 13+                            , SrcSpan "tests/examples/Unicode.hs" 6 13 6 14+                            ]+                        }))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 1 15 32+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 1 7 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 1 7 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 6 15 32+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 7 6 7 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 8 15 32+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Unicode.hs" 7 8 7 10+                      , SrcSpan "tests/examples/Unicode.hs" 8 3 8 3+                      , SrcSpan "tests/examples/Unicode.hs" 9 3 9 3+                      , SrcSpan "tests/examples/Unicode.hs" 10 3 10 3+                      , SrcSpan "tests/examples/Unicode.hs" 11 3 11 3+                      , SrcSpan "tests/examples/Unicode.hs" 12 3 12 3+                      , SrcSpan "tests/examples/Unicode.hs" 13 3 13 3+                      , SrcSpan "tests/examples/Unicode.hs" 14 3 14 3+                      , SrcSpan "tests/examples/Unicode.hs" 15 3 15 3+                      , SrcSpan "tests/examples/Unicode.hs" 17 1 17 0+                      ]+                  }+                [ Generator+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 3 8 15+                      , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 8 6 8 7 ]+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 3 8 5+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 3 8 5+                            , srcInfoPoints = []+                            }+                          "as"))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 8 8 15+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 8 8 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 8 8 15+                               , srcInfoPoints = []+                               }+                             "getArgs")))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 13+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 13+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 8+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 8+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 8+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 9 9 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 9 9 10+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 9 9 10+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 11 9 13+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 11 9 13+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 11 9 13+                                  , srcInfoPoints = []+                                  }+                                "as"))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 32+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 32+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 8+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 8+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 8+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 9 10 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 9 10 10+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 9 10 10+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 11 10 32+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 11 10 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 11 10 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 11 10 15+                                     , srcInfoPoints = []+                                     }+                                   "test")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 31 10 32+                               , srcInfoPoints = []+                               }+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 31 10 32+                                  , srcInfoPoints = []+                                  }+                                0+                                "0"))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 32+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 32+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 8+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 8+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 8+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 9 11 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 9 11 10+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 9 11 10+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 11 11 32+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 11 11 16+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 11 11 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 11 11 16+                                     , srcInfoPoints = []+                                     }+                                   "test2")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 31 11 32+                               , srcInfoPoints = []+                               }+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 31 11 32+                                  , srcInfoPoints = []+                                  }+                                0+                                "0"))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 32+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 32+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 8+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 8+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 8+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 9 12 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 9 12 10+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 9 12 10+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 11 12 32+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 11 12 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 11 12 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 11 12 22+                                     , srcInfoPoints = []+                                     }+                                   "testRewrite")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 31 12 32+                               , srcInfoPoints = []+                               }+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 31 12 32+                                  , srcInfoPoints = []+                                  }+                                0+                                "0"))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 32+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 32+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 8+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 8+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 8+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 9 13 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 9 13 10+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 9 13 10+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 11 13 32+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 11 13 29+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 11 13 29+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 11 13 29+                                     , srcInfoPoints = []+                                     }+                                   "testRewriteReverse")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 31 13 32+                               , srcInfoPoints = []+                               }+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 31 13 32+                                  , srcInfoPoints = []+                                  }+                                0+                                "0"))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 32+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 32+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 8+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 8+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 8+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 9 14 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 9 14 10+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 9 14 10+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 11 14 32+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 11 14 23+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 11 14 23+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 11 14 23+                                     , srcInfoPoints = []+                                     }+                                   "testRewrite2")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 31 14 32+                               , srcInfoPoints = []+                               }+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 31 14 32+                                  , srcInfoPoints = []+                                  }+                                0+                                "0"))))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 32+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 32+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 8+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 8+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 8+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 9 15 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 9 15 10+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 9 15 10+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 11 15 32+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 11 15 30+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 11 15 30+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 11 15 30+                                     , srcInfoPoints = []+                                     }+                                   "testRewriteReverse2")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 31 15 32+                               , srcInfoPoints = []+                               }+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 31 15 32+                                  , srcInfoPoints = []+                                  }+                                0+                                "0"))))+                ]))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 1 17 17+            , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 17 6 17 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 1 17 5+                , srcInfoPoints = []+                }+              "test"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 9 17 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 17 11 17 12 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 9 17 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 9 17 10+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 13 17 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 13 17 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 13 17 17+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 1 23 18+            , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 19 3 19 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 1 23 18+                , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 19 3 19 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 1 18 5+                   , srcInfoPoints = []+                   }+                 "test")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 6 18 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 6 18 7+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 8 18 12+                   , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 18 8 18 9 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 10 18 12+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 10 18 12+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 10 18 12+                            , srcInfoPoints = []+                            }+                          "pi"))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 5 23 18+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 20 5 20 5+                          , SrcSpan "tests/examples/Unicode.hs" 21 5 21 5+                          , SrcSpan "tests/examples/Unicode.hs" 22 5 22 5+                          , SrcSpan "tests/examples/Unicode.hs" 23 5 23 5+                          , SrcSpan "tests/examples/Unicode.hs" 25 1 25 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 5 20 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 5 20 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 5 20 6+                                , srcInfoPoints = []+                                }+                              "f"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 8 20 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 20 8 20 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 10 20 26+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 10 20 24+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 20 10 20 19+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 20 10 20 19+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Unicode.hs" 20 10 20 19+                                            , srcInfoPoints = []+                                            }+                                          "replicate")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 20 20 20 24+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 20 20 20 24+                                         , srcInfoPoints = []+                                         }+                                       2000+                                       "2000")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 25 20 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 20 25 20 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 20 25 20 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 5 21 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 5 21 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 5 21 6+                                , srcInfoPoints = []+                                }+                              "i"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 8 21 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 21 8 21 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 10 21 26+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 10 21 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 21 10 21 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 21 10 21 16+                                         , srcInfoPoints = []+                                         }+                                       "repeat")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 25 21 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 21 25 21 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 21 25 21 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 5 22 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 5 22 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 5 22 7+                                , srcInfoPoints = []+                                }+                              "pf"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 8 22 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 22 8 22 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 10 22 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 10 22 11+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 22 10 22 11+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 22 10 22 11+                                         , srcInfoPoints = []+                                         }+                                       "f")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 12 22 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 22 12 22 14+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 22 12 22 14+                                         , srcInfoPoints = []+                                         }+                                       "|>")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 15 22 18+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 22 15 22 18+                                      , srcInfoPoints = []+                                      }+                                    300+                                    "300"))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 5 23 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 5 23 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 5 23 7+                                , srcInfoPoints = []+                                }+                              "pi"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 8 23 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 23 8 23 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 10 23 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 10 23 11+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 23 10 23 11+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 23 10 23 11+                                         , srcInfoPoints = []+                                         }+                                       "i")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 12 23 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 23 12 23 14+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 23 12 23 14+                                         , srcInfoPoints = []+                                         }+                                       "|>")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 15 23 18+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 23 15 23 18+                                      , srcInfoPoints = []+                                      }+                                    300+                                    "300"))))+                        Nothing+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 1 25 25+            , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 25 7 25 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 1 25 6+                , srcInfoPoints = []+                }+              "test2"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 10 25 25+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 25 12 25 13 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 10 25 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 10 25 11+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 14 25 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Unicode.hs" 25 14 25 15+                      , SrcSpan "tests/examples/Unicode.hs" 25 19 25 20+                      , SrcSpan "tests/examples/Unicode.hs" 25 24 25 25+                      ]+                  }+                Boxed+                [ TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 15 25 19+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 15 25 19+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 15 25 19+                            , srcInfoPoints = []+                            }+                          "Bool"))+                , TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 20 25 24+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 20 25 24+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 20 25 24+                            , srcInfoPoints = []+                            }+                          "Bool"))+                ]))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 1 31 18+            , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 27 3 27 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 1 31 18+                , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 27 3 27 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 1 26 6+                   , srcInfoPoints = []+                   }+                 "test2")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 7 26 8+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 7 26 8+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 9 26 18+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Unicode.hs" 26 9 26 10 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 11 26 18+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 26 11 26 12+                          , SrcSpan "tests/examples/Unicode.hs" 26 14 26 15+                          , SrcSpan "tests/examples/Unicode.hs" 26 17 26 18+                          ]+                      }+                    Boxed+                    [ Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 12 26 14+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 12 26 14+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 12 26 14+                                , srcInfoPoints = []+                                }+                              "pf"))+                    , Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 15 26 17+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 15 26 17+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 15 26 17+                                , srcInfoPoints = []+                                }+                              "pi"))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 5 31 18+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 28 5 28 5+                          , SrcSpan "tests/examples/Unicode.hs" 29 5 29 5+                          , SrcSpan "tests/examples/Unicode.hs" 30 5 30 5+                          , SrcSpan "tests/examples/Unicode.hs" 31 5 31 5+                          , SrcSpan "tests/examples/Unicode.hs" 33 1 33 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 5 28 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 5 28 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 5 28 6+                                , srcInfoPoints = []+                                }+                              "f"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 8 28 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 28 8 28 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 10 28 26+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 10 28 24+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 28 10 28 19+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 28 10 28 19+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Unicode.hs" 28 10 28 19+                                            , srcInfoPoints = []+                                            }+                                          "replicate")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 28 20 28 24+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 28 20 28 24+                                         , srcInfoPoints = []+                                         }+                                       2000+                                       "2000")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 25 28 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 28 25 28 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 28 25 28 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 5 29 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 5 29 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 5 29 6+                                , srcInfoPoints = []+                                }+                              "i"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 8 29 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 29 8 29 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 10 29 26+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 10 29 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 29 10 29 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 29 10 29 16+                                         , srcInfoPoints = []+                                         }+                                       "repeat")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 25 29 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 29 25 29 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 29 25 29 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 5 30 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 5 30 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 5 30 7+                                , srcInfoPoints = []+                                }+                              "pf"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 8 30 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 30 8 30 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 10 30 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 10 30 11+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 30 10 30 11+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 30 10 30 11+                                         , srcInfoPoints = []+                                         }+                                       "f")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 12 30 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 30 12 30 14+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 30 12 30 14+                                         , srcInfoPoints = []+                                         }+                                       "|>")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 15 30 18+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 30 15 30 18+                                      , srcInfoPoints = []+                                      }+                                    300+                                    "300"))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 5 31 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 5 31 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 5 31 7+                                , srcInfoPoints = []+                                }+                              "pi"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 8 31 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 31 8 31 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 10 31 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 10 31 11+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 31 10 31 11+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 31 10 31 11+                                         , srcInfoPoints = []+                                         }+                                       "i")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 12 31 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 31 12 31 14+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 31 12 31 14+                                         , srcInfoPoints = []+                                         }+                                       "|>")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 15 31 18+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 31 15 31 18+                                      , srcInfoPoints = []+                                      }+                                    300+                                    "300"))))+                        Nothing+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 1 33 24+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unicode.hs" 33 13 33 15 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 1 33 12+                , srcInfoPoints = []+                }+              "testRewrite"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 16 33 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 33 18 33 19 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 16 33 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 16 33 17+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 20 33 24+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 20 33 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 20 33 24+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 1 41 18+            , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 35 3 35 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 1 41 18+                , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 35 3 35 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 1 34 12+                   , srcInfoPoints = []+                   }+                 "testRewrite")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 13 34 14+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 13 34 14+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 15 34 19+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Unicode.hs" 34 15 34 16 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 17 34 19+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 17 34 19+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 17 34 19+                            , srcInfoPoints = []+                            }+                          "pi"))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 5 41 18+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 36 5 36 5+                          , SrcSpan "tests/examples/Unicode.hs" 37 5 37 5+                          , SrcSpan "tests/examples/Unicode.hs" 38 5 38 5+                          , SrcSpan "tests/examples/Unicode.hs" 39 5 39 5+                          , SrcSpan "tests/examples/Unicode.hs" 40 5 40 5+                          , SrcSpan "tests/examples/Unicode.hs" 41 5 41 5+                          , SrcSpan "tests/examples/Unicode.hs" 43 1 43 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 5 36 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 5 36 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 5 36 6+                                , srcInfoPoints = []+                                }+                              "f"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 8 36 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 36 8 36 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 10 36 26+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 10 36 24+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 36 10 36 19+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 36 10 36 19+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Unicode.hs" 36 10 36 19+                                            , srcInfoPoints = []+                                            }+                                          "replicate")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 36 20 36 24+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 36 20 36 24+                                         , srcInfoPoints = []+                                         }+                                       2000+                                       "2000")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 25 36 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 36 25 36 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 36 25 36 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 5 37 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 5 37 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 5 37 6+                                , srcInfoPoints = []+                                }+                              "i"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 8 37 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 37 8 37 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 10 37 26+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 10 37 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 37 10 37 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 37 10 37 16+                                         , srcInfoPoints = []+                                         }+                                       "repeat")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 25 37 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 37 25 37 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 37 25 37 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 5 38 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 5 38 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 5 38 7+                                , srcInfoPoints = []+                                }+                              "lf"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 8 38 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 38 8 38 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 10 38 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 10 38 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 38 10 38 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 38 10 38 16+                                         , srcInfoPoints = []+                                         }+                                       "length")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 17 38 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 38 17 38 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 38 17 38 18+                                         , srcInfoPoints = []+                                         }+                                       "f")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 5 39 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 5 39 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 5 39 7+                                , srcInfoPoints = []+                                }+                              "li"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 8 39 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 39 8 39 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 10 39 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 10 39 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 39 10 39 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 39 10 39 16+                                         , srcInfoPoints = []+                                         }+                                       "length")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 17 39 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 39 17 39 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 39 17 39 18+                                         , srcInfoPoints = []+                                         }+                                       "i")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 5 40 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 5 40 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 5 40 7+                                , srcInfoPoints = []+                                }+                              "pf"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 8 40 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 40 8 40 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 10 40 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 10 40 12+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 40 10 40 12+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 40 10 40 12+                                         , srcInfoPoints = []+                                         }+                                       "lf")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 13 40 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 40 13 40 14+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 40 13 40 14+                                         , srcInfoPoints = []+                                         }+                                       ">")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 15 40 18+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 40 15 40 18+                                      , srcInfoPoints = []+                                      }+                                    300+                                    "300"))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 5 41 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 5 41 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 5 41 7+                                , srcInfoPoints = []+                                }+                              "pi"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 8 41 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 41 8 41 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 10 41 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 10 41 12+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 41 10 41 12+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 41 10 41 12+                                         , srcInfoPoints = []+                                         }+                                       "li")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 13 41 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 41 13 41 14+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 41 13 41 14+                                         , srcInfoPoints = []+                                         }+                                       ">")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 15 41 18+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 41 15 41 18+                                      , srcInfoPoints = []+                                      }+                                    300+                                    "300"))))+                        Nothing+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 1 43 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unicode.hs" 43 20 43 22 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 1 43 19+                , srcInfoPoints = []+                }+              "testRewriteReverse"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 23 43 31+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 43 25 43 26 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 23 43 24+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 23 43 24+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 27 43 31+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 27 43 31+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 27 43 31+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 1 51 18+            , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 45 3 45 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 1 51 18+                , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 45 3 45 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 1 44 19+                   , srcInfoPoints = []+                   }+                 "testRewriteReverse")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 20 44 21+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 20 44 21+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 22 44 26+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Unicode.hs" 44 22 44 23 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 24 44 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 24 44 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 24 44 26+                            , srcInfoPoints = []+                            }+                          "pi"))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 5 51 18+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 46 5 46 5+                          , SrcSpan "tests/examples/Unicode.hs" 47 5 47 5+                          , SrcSpan "tests/examples/Unicode.hs" 48 5 48 5+                          , SrcSpan "tests/examples/Unicode.hs" 49 5 49 5+                          , SrcSpan "tests/examples/Unicode.hs" 50 5 50 5+                          , SrcSpan "tests/examples/Unicode.hs" 51 5 51 5+                          , SrcSpan "tests/examples/Unicode.hs" 53 1 53 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 5 46 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 5 46 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 5 46 6+                                , srcInfoPoints = []+                                }+                              "f"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 8 46 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 46 8 46 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 10 46 26+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 10 46 24+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 46 10 46 19+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 46 10 46 19+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Unicode.hs" 46 10 46 19+                                            , srcInfoPoints = []+                                            }+                                          "replicate")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 46 20 46 24+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 46 20 46 24+                                         , srcInfoPoints = []+                                         }+                                       2000+                                       "2000")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 25 46 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 46 25 46 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 46 25 46 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 5 47 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 5 47 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 5 47 6+                                , srcInfoPoints = []+                                }+                              "i"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 8 47 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 47 8 47 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 10 47 26+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 10 47 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 47 10 47 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 47 10 47 16+                                         , srcInfoPoints = []+                                         }+                                       "repeat")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 25 47 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 47 25 47 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 47 25 47 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 5 48 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 5 48 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 5 48 7+                                , srcInfoPoints = []+                                }+                              "lf"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 8 48 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 48 8 48 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 10 48 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 10 48 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 48 10 48 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 48 10 48 16+                                         , srcInfoPoints = []+                                         }+                                       "length")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 17 48 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 48 17 48 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 48 17 48 18+                                         , srcInfoPoints = []+                                         }+                                       "f")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 5 49 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 5 49 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 5 49 7+                                , srcInfoPoints = []+                                }+                              "li"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 8 49 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 49 8 49 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 10 49 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 10 49 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 49 10 49 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 49 10 49 16+                                         , srcInfoPoints = []+                                         }+                                       "length")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 17 49 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 49 17 49 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 49 17 49 18+                                         , srcInfoPoints = []+                                         }+                                       "i")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 5 50 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 5 50 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 5 50 7+                                , srcInfoPoints = []+                                }+                              "pf"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 8 50 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 50 8 50 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 10 50 18+                                , srcInfoPoints = []+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 10 50 13+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 50 10 50 13+                                      , srcInfoPoints = []+                                      }+                                    300+                                    "300"))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 14 50 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 50 14 50 15+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 50 14 50 15+                                         , srcInfoPoints = []+                                         }+                                       "\8804")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 16 50 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 50 16 50 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 50 16 50 18+                                         , srcInfoPoints = []+                                         }+                                       "lf")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 5 51 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 5 51 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 5 51 7+                                , srcInfoPoints = []+                                }+                              "pi"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 8 51 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 51 8 51 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 10 51 18+                                , srcInfoPoints = []+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 10 51 13+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 51 10 51 13+                                      , srcInfoPoints = []+                                      }+                                    300+                                    "300"))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 14 51 15+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 51 14 51 15+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 51 14 51 15+                                         , srcInfoPoints = []+                                         }+                                       "\8804")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 16 51 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 51 16 51 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 51 16 51 18+                                         , srcInfoPoints = []+                                         }+                                       "li")))))+                        Nothing+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 1 53 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unicode.hs" 53 14 53 16 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 1 53 13+                , srcInfoPoints = []+                }+              "testRewrite2"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 17 53 32+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 53 19 53 20 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 17 53 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 17 53 18+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 21 53 32+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Unicode.hs" 53 21 53 22+                      , SrcSpan "tests/examples/Unicode.hs" 53 26 53 27+                      , SrcSpan "tests/examples/Unicode.hs" 53 31 53 32+                      ]+                  }+                Boxed+                [ TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 22 53 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 22 53 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 22 53 26+                            , srcInfoPoints = []+                            }+                          "Bool"))+                , TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 27 53 31+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 27 53 31+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 27 53 31+                            , srcInfoPoints = []+                            }+                          "Bool"))+                ]))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 1 57 26+            , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 55 3 55 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 1 57 26+                , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 55 3 55 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 1 54 13+                   , srcInfoPoints = []+                   }+                 "testRewrite2")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 14 54 15+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 14 54 15+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 16 54 49+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Unicode.hs" 54 16 54 17 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 18 54 49+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 54 18 54 19+                          , SrcSpan "tests/examples/Unicode.hs" 54 33 54 34+                          , SrcSpan "tests/examples/Unicode.hs" 54 48 54 49+                          ]+                      }+                    Boxed+                    [ InfixApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 19 54 33+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 19 54 27+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 19 54 25+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 19 54 25+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 54 19 54 25+                                      , srcInfoPoints = []+                                      }+                                    "length")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 26 54 27+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 26 54 27+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 54 26 54 27+                                      , srcInfoPoints = []+                                      }+                                    "i"))))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 28 54 29+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 28 54 29+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 28 54 29+                                   , srcInfoPoints = []+                                   }+                                 ">")))+                        (Lit+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 30 54 33+                             , srcInfoPoints = []+                             }+                           (Int+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 30 54 33+                                , srcInfoPoints = []+                                }+                              300+                              "300"))+                    , InfixApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 34 54 48+                          , srcInfoPoints = []+                          }+                        (Lit+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 34 54 37+                             , srcInfoPoints = []+                             }+                           (Int+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 34 54 37+                                , srcInfoPoints = []+                                }+                              300+                              "300"))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 38 54 39+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 38 54 39+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 38 54 39+                                   , srcInfoPoints = []+                                   }+                                 ">")))+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 40 54 48+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 40 54 46+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 40 54 46+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 54 40 54 46+                                      , srcInfoPoints = []+                                      }+                                    "length")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 47 54 48+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 47 54 48+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 54 47 54 48+                                      , srcInfoPoints = []+                                      }+                                    "i"))))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 5 57 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 57 5 57 5+                          , SrcSpan "tests/examples/Unicode.hs" 63 1 63 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 5 57 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 5 57 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 5 57 6+                                , srcInfoPoints = []+                                }+                              "i"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 8 57 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 57 8 57 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 10 57 26+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 10 57 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 57 10 57 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 57 10 57 16+                                         , srcInfoPoints = []+                                         }+                                       "repeat")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 25 57 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 57 25 57 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 57 25 57 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 1 63 39+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unicode.hs" 63 21 63 23 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 1 63 20+                , srcInfoPoints = []+                }+              "testRewriteReverse2"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 24 63 39+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 63 26 63 27 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 24 63 25+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 24 63 25+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyTuple+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 28 63 39+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Unicode.hs" 63 28 63 29+                      , SrcSpan "tests/examples/Unicode.hs" 63 33 63 34+                      , SrcSpan "tests/examples/Unicode.hs" 63 38 63 39+                      ]+                  }+                Boxed+                [ TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 29 63 33+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 29 63 33+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 29 63 33+                            , srcInfoPoints = []+                            }+                          "Bool"))+                , TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 34 63 38+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 34 63 38+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 34 63 38+                            , srcInfoPoints = []+                            }+                          "Bool"))+                ]))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 1 71 17+            , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 65 3 65 8 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 1 71 17+                , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 65 3 65 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 1 64 20+                   , srcInfoPoints = []+                   }+                 "testRewriteReverse2")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 21 64 22+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 21 64 22+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 23 64 56+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Unicode.hs" 64 23 64 24 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 25 64 56+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 64 25 64 26+                          , SrcSpan "tests/examples/Unicode.hs" 64 41 64 42+                          , SrcSpan "tests/examples/Unicode.hs" 64 55 64 56+                          ]+                      }+                    Boxed+                    [ InfixApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 26 64 41+                          , srcInfoPoints = []+                          }+                        (Lit+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 26 64 30+                             , srcInfoPoints = []+                             }+                           (Int+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 26 64 30+                                , srcInfoPoints = []+                                }+                              2000+                              "2000"))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 31 64 32+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 31 64 32+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 31 64 32+                                   , srcInfoPoints = []+                                   }+                                 "<")))+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 33 64 41+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 33 64 39+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 33 64 39+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 64 33 64 39+                                      , srcInfoPoints = []+                                      }+                                    "length")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 40 64 41+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 40 64 41+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 64 40 64 41+                                      , srcInfoPoints = []+                                      }+                                    "i"))))+                    , InfixApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 42 64 55+                          , srcInfoPoints = []+                          }+                        (App+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 42 64 50+                             , srcInfoPoints = []+                             }+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 42 64 48+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 42 64 48+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 64 42 64 48+                                      , srcInfoPoints = []+                                      }+                                    "length")))+                           (Var+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 49 64 50+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 49 64 50+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 64 49 64 50+                                      , srcInfoPoints = []+                                      }+                                    "i"))))+                        (QVarOp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 51 64 52+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 51 64 52+                                , srcInfoPoints = []+                                }+                              (Symbol+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 51 64 52+                                   , srcInfoPoints = []+                                   }+                                 ">")))+                        (Lit+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 53 64 55+                             , srcInfoPoints = []+                             }+                           (Int+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 53 64 55+                                , srcInfoPoints = []+                                }+                              20+                              "20"))+                    ]))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 5 71 17+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 66 5 66 5+                          , SrcSpan "tests/examples/Unicode.hs" 67 5 67 5+                          , SrcSpan "tests/examples/Unicode.hs" 68 5 68 5+                          , SrcSpan "tests/examples/Unicode.hs" 69 5 69 5+                          , SrcSpan "tests/examples/Unicode.hs" 70 5 70 5+                          , SrcSpan "tests/examples/Unicode.hs" 71 5 71 5+                          , SrcSpan "tests/examples/Unicode.hs" 74 1 74 0+                          ]+                      }+                    [ PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 5 66 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 5 66 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 5 66 6+                                , srcInfoPoints = []+                                }+                              "f"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 8 66 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 66 8 66 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 10 66 26+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 10 66 24+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 66 10 66 19+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 66 10 66 19+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Unicode.hs" 66 10 66 19+                                            , srcInfoPoints = []+                                            }+                                          "replicate")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 66 20 66 24+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 66 20 66 24+                                         , srcInfoPoints = []+                                         }+                                       2000+                                       "2000")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 25 66 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 66 25 66 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 66 25 66 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 5 67 26+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 5 67 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 5 67 6+                                , srcInfoPoints = []+                                }+                              "i"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 8 67 26+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 67 8 67 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 10 67 26+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 10 67 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 67 10 67 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 67 10 67 16+                                         , srcInfoPoints = []+                                         }+                                       "repeat")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 25 67 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 67 25 67 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 67 25 67 26+                                         , srcInfoPoints = []+                                         }+                                       "x")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 5 68 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 5 68 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 5 68 7+                                , srcInfoPoints = []+                                }+                              "lf"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 8 68 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 68 8 68 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 10 68 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 10 68 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 68 10 68 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 68 10 68 16+                                         , srcInfoPoints = []+                                         }+                                       "length")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 17 68 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 68 17 68 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 68 17 68 18+                                         , srcInfoPoints = []+                                         }+                                       "f")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 5 69 18+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 5 69 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 5 69 7+                                , srcInfoPoints = []+                                }+                              "li"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 8 69 18+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 69 8 69 9 ]+                             }+                           (App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 10 69 18+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 10 69 16+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 69 10 69 16+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 69 10 69 16+                                         , srcInfoPoints = []+                                         }+                                       "length")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 17 69 18+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 69 17 69 18+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 69 17 69 18+                                         , srcInfoPoints = []+                                         }+                                       "i")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 5 70 20+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 5 70 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 5 70 7+                                , srcInfoPoints = []+                                }+                              "pf"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 8 70 20+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 70 8 70 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 10 70 20+                                , srcInfoPoints = []+                                }+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 10 70 14+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 70 10 70 14+                                      , srcInfoPoints = []+                                      }+                                    2000+                                    "2000"))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 15 70 17+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 70 15 70 17+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 70 15 70 17+                                         , srcInfoPoints = []+                                         }+                                       "==")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 18 70 20+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 70 18 70 20+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 70 18 70 20+                                         , srcInfoPoints = []+                                         }+                                       "lf")))))+                        Nothing+                    , PatBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 5 71 17+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 5 71 7+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 5 71 7+                                , srcInfoPoints = []+                                }+                              "pi"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 8 71 17+                             , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 71 8 71 9 ]+                             }+                           (InfixApp+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 10 71 17+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 10 71 12+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 71 10 71 12+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 71 10 71 12+                                         , srcInfoPoints = []+                                         }+                                       "lf")))+                              (QVarOp+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 13 71 14+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 71 13 71 14+                                      , srcInfoPoints = []+                                      }+                                    (Symbol+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 71 13 71 14+                                         , srcInfoPoints = []+                                         }+                                       "\8805")))+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 15 71 17+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/Unicode.hs" 71 15 71 17+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 71 15 71 17+                                         , srcInfoPoints = []+                                         }+                                       "li")))))+                        Nothing+                    ]))+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 1 74 68+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unicode.hs" 74 10 74 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 1 74 9+                , srcInfoPoints = []+                }+              "lengthOP"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 13 74 68+               , srcInfoPoints = []+               }+             Nothing+             (Just+                (CxTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 13 74 29+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 74 13 74 14+                         , SrcSpan "tests/examples/Unicode.hs" 74 19 74 20+                         , SrcSpan "tests/examples/Unicode.hs" 74 26 74 27+                         , SrcSpan "tests/examples/Unicode.hs" 74 28 74 29+                         ]+                     }+                   [ TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17+                                     , srcInfoPoints = []+                                     }+                                   "Num")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   , TypeA+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26+                         , srcInfoPoints = []+                         }+                       (TyApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26+                            , srcInfoPoints = []+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24+                                     , srcInfoPoints = []+                                     }+                                   "Ord")))+                          (TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26+                                  , srcInfoPoints = []+                                  }+                                "a")))+                   ]))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 30 74 68+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Unicode.hs" 74 35 74 36 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 30 74 34+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 30 74 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 30 74 34+                           , srcInfoPoints = []+                           }+                         "Bool")))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 37 74 68+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 74 52 74 53 ]+                     }+                   (TyParen+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 37 74 51+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 74 37 74 38+                            , SrcSpan "tests/examples/Unicode.hs" 74 50 74 51+                            ]+                        }+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 38 74 50+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Unicode.hs" 74 40 74 41 ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 38 74 39+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 38 74 39+                                 , srcInfoPoints = []+                                 }+                               "a"))+                         (TyFun+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 42 74 50+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Unicode.hs" 74 44 74 45 ]+                              }+                            (TyVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 42 74 43+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 42 74 43+                                    , srcInfoPoints = []+                                    }+                                  "a"))+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 46 74 50+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 46 74 50+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Unicode.hs" 74 46 74 50+                                       , srcInfoPoints = []+                                       }+                                     "Bool"))))))+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 54 74 68+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 74 58 74 59 ]+                        }+                      (TyList+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 54 74 57+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Unicode.hs" 74 54 74 55+                               , SrcSpan "tests/examples/Unicode.hs" 74 56 74 57+                               ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 55 74 56+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 55 74 56+                                 , srcInfoPoints = []+                                 }+                               "b")))+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 60 74 68+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Unicode.hs" 74 62 74 63 ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 60 74 61+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 60 74 61+                                 , srcInfoPoints = []+                                 }+                               "a"))+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 64 74 68+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 64 74 68+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 64 74 68+                                    , srcInfoPoints = []+                                    }+                                  "Bool"))))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 1 80 24+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 1 75 29+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 1 75 9+                   , srcInfoPoints = []+                   }+                 "lengthOP")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 10 75 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 10 75 11+                       , srcInfoPoints = []+                       }+                     "v")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 12 75 15+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Unicode.hs" 75 12 75 13+                        , SrcSpan "tests/examples/Unicode.hs" 75 13 75 14+                        , SrcSpan "tests/examples/Unicode.hs" 75 14 75 15+                        ]+                    }+                  (Symbol+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 13 75 14+                       , srcInfoPoints = []+                       }+                     "\8860")+              , PList+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 16 75 18+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Unicode.hs" 75 16 75 17+                        , SrcSpan "tests/examples/Unicode.hs" 75 17 75 18+                        ]+                    }+                  []+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 20 75 21+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 20 75 21+                       , srcInfoPoints = []+                       }+                     "n")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 22 75 29+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Unicode.hs" 75 22 75 23 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 24 75 29+                      , srcInfoPoints = []+                      }+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 24 75 25+                         , srcInfoPoints = []+                         }+                       (Int+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 24 75 25+                            , srcInfoPoints = []+                            }+                          0+                          "0"))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 26 75 27+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 26 75 27+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 26 75 27+                               , srcInfoPoints = []+                               }+                             "\8860")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 28 75 29+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 28 75 29+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 28 75 29+                               , srcInfoPoints = []+                               }+                             "n")))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 1 80 24+                , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 77 3 77 8 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 1 76 9+                   , srcInfoPoints = []+                   }+                 "lengthOP")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 10 76 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 10 76 11+                       , srcInfoPoints = []+                       }+                     "v")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 12 76 15+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Unicode.hs" 76 12 76 13+                        , SrcSpan "tests/examples/Unicode.hs" 76 13 76 14+                        , SrcSpan "tests/examples/Unicode.hs" 76 14 76 15+                        ]+                    }+                  (Symbol+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 13 76 14+                       , srcInfoPoints = []+                       }+                     "\8860")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 16 76 19+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 16 76 19+                       , srcInfoPoints = []+                       }+                     "xxs")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 20 76 21+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 20 76 21+                       , srcInfoPoints = []+                       }+                     "n")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 22 76 32+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Unicode.hs" 76 22 76 23 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 32+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 30+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 26+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 26+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 26+                                  , srcInfoPoints = []+                                  }+                                "co")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 27 76 30+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 27 76 30+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 27 76 30+                                  , srcInfoPoints = []+                                  }+                                "xxs"))))+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 31 76 32+                         , srcInfoPoints = []+                         }+                       (Int+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 31 76 32+                            , srcInfoPoints = []+                            }+                          0+                          "0"))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 5 80 24+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 78 5 78 5+                          , SrcSpan "tests/examples/Unicode.hs" 80 5 80 5+                          , SrcSpan "tests/examples/Unicode.hs" 82 1 82 0+                          ]+                      }+                    [ FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 5 80 24+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 5 79 32+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 5 78 7+                                 , srcInfoPoints = []+                                 }+                               "co")+                            [ PParen+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 8 78 14+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Unicode.hs" 78 8 78 9+                                      , SrcSpan "tests/examples/Unicode.hs" 78 13 78 14+                                      ]+                                  }+                                (PInfixApp+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 9 78 13+                                     , srcInfoPoints = []+                                     }+                                   (PWildCard+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Unicode.hs" 78 9 78 10+                                        , srcInfoPoints = []+                                        })+                                   (Special+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Unicode.hs" 78 10 78 11+                                        , srcInfoPoints = []+                                        }+                                      (Cons+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Unicode.hs" 78 10 78 11+                                           , srcInfoPoints = []+                                           }))+                                   (PVar+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Unicode.hs" 78 11 78 13+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Unicode.hs" 78 11 78 13+                                           , srcInfoPoints = []+                                           }+                                         "xs")))+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 15 78 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 15 78 16+                                     , srcInfoPoints = []+                                     }+                                   "c")+                            ]+                            (GuardedRhss+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 17 79 32+                                 , srcInfoPoints = []+                                 }+                               [ GuardedRhs+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 17 78 42+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/Unicode.hs" 78 17 78 18+                                         , SrcSpan "tests/examples/Unicode.hs" 78 29 78 30+                                         ]+                                     }+                                   [ Qualifier+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 78 19 78 24+                                         , srcInfoPoints = []+                                         }+                                       (InfixApp+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Unicode.hs" 78 19 78 24+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/Unicode.hs" 78 19 78 20+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Unicode.hs" 78 19 78 20+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Unicode.hs" 78 19 78 20+                                                     , srcInfoPoints = []+                                                     }+                                                   "n")))+                                          (QVarOp+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/Unicode.hs" 78 21 78 22+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Unicode.hs" 78 21 78 22+                                                  , srcInfoPoints = []+                                                  }+                                                (Symbol+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Unicode.hs" 78 21 78 22+                                                     , srcInfoPoints = []+                                                     }+                                                   ">")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/Unicode.hs" 78 23 78 24+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Unicode.hs" 78 23 78 24+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/Unicode.hs" 78 23 78 24+                                                     , srcInfoPoints = []+                                                     }+                                                   "c"))))+                                   ]+                                   (App+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Unicode.hs" 78 31 78 42+                                        , srcInfoPoints = []+                                        }+                                      (App+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Unicode.hs" 78 31 78 36+                                           , srcInfoPoints = []+                                           }+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Unicode.hs" 78 31 78 33+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/Unicode.hs" 78 31 78 33+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Unicode.hs" 78 31 78 33+                                                    , srcInfoPoints = []+                                                    }+                                                  "co")))+                                         (Var+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Unicode.hs" 78 34 78 36+                                              , srcInfoPoints = []+                                              }+                                            (UnQual+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/Unicode.hs" 78 34 78 36+                                                 , srcInfoPoints = []+                                                 }+                                               (Ident+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Unicode.hs" 78 34 78 36+                                                    , srcInfoPoints = []+                                                    }+                                                  "xs"))))+                                      (Paren+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Unicode.hs" 78 37 78 42+                                           , srcInfoPoints =+                                               [ SrcSpan "tests/examples/Unicode.hs" 78 37 78 38+                                               , SrcSpan "tests/examples/Unicode.hs" 78 41 78 42+                                               ]+                                           }+                                         (InfixApp+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Unicode.hs" 78 38 78 41+                                              , srcInfoPoints = []+                                              }+                                            (Var+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/Unicode.hs" 78 38 78 39+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Unicode.hs" 78 38 78 39+                                                    , srcInfoPoints = []+                                                    }+                                                  (Ident+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Unicode.hs" 78 38 78 39+                                                       , srcInfoPoints = []+                                                       }+                                                     "c")))+                                            (QVarOp+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/Unicode.hs" 78 39 78 40+                                                 , srcInfoPoints = []+                                                 }+                                               (UnQual+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Unicode.hs" 78 39 78 40+                                                    , srcInfoPoints = []+                                                    }+                                                  (Symbol+                                                     SrcSpanInfo+                                                       { srcInfoSpan =+                                                           SrcSpan+                                                             "tests/examples/Unicode.hs" 78 39 78 40+                                                       , srcInfoPoints = []+                                                       }+                                                     "+")))+                                            (Lit+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/Unicode.hs" 78 40 78 41+                                                 , srcInfoPoints = []+                                                 }+                                               (Int+                                                  SrcSpanInfo+                                                    { srcInfoSpan =+                                                        SrcSpan+                                                          "tests/examples/Unicode.hs" 78 40 78 41+                                                    , srcInfoPoints = []+                                                    }+                                                  1+                                                  "1")))))+                               , GuardedRhs+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 79 17 79 32+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/Unicode.hs" 79 17 79 18+                                         , SrcSpan "tests/examples/Unicode.hs" 79 29 79 30+                                         ]+                                     }+                                   [ Qualifier+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Unicode.hs" 79 19 79 28+                                         , srcInfoPoints = []+                                         }+                                       (Var+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Unicode.hs" 79 19 79 28+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/Unicode.hs" 79 19 79 28+                                               , srcInfoPoints = []+                                               }+                                             (Ident+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/Unicode.hs" 79 19 79 28+                                                  , srcInfoPoints = []+                                                  }+                                                "otherwise")))+                                   ]+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/Unicode.hs" 79 31 79 32+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Unicode.hs" 79 31 79 32+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Unicode.hs" 79 31 79 32+                                              , srcInfoPoints = []+                                              }+                                            "v")))+                               ])+                            Nothing+                        , Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 5 80 24+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 5 80 7+                                 , srcInfoPoints = []+                                 }+                               "co")+                            [ PList+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 8 80 10+                                  , srcInfoPoints =+                                      [ SrcSpan "tests/examples/Unicode.hs" 80 8 80 9+                                      , SrcSpan "tests/examples/Unicode.hs" 80 9 80 10+                                      ]+                                  }+                                []+                            , PVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 15 80 16+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 15 80 16+                                     , srcInfoPoints = []+                                     }+                                   "c")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 17 80 24+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Unicode.hs" 80 17 80 18 ]+                                 }+                               (InfixApp+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 19 80 24+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Unicode.hs" 80 19 80 20+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Unicode.hs" 80 19 80 20+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Unicode.hs" 80 19 80 20+                                             , srcInfoPoints = []+                                             }+                                           "c")))+                                  (QVarOp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Unicode.hs" 80 21 80 22+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Unicode.hs" 80 21 80 22+                                          , srcInfoPoints = []+                                          }+                                        (Symbol+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Unicode.hs" 80 21 80 22+                                             , srcInfoPoints = []+                                             }+                                           "\8860")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/Unicode.hs" 80 23 80 24+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Unicode.hs" 80 23 80 24+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Unicode.hs" 80 23 80 24+                                             , srcInfoPoints = []+                                             }+                                           "n")))))+                            Nothing+                        ]+                    ]))+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 1 82 11+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 1 82 4+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 82 1 82 2+                   , SrcSpan "tests/examples/Unicode.hs" 82 2 82 3+                   , SrcSpan "tests/examples/Unicode.hs" 82 3 82 4+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 2 82 3+                  , srcInfoPoints = []+                  }+                "\8803"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 5 82 11+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 82 5 82 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 7 82 11+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Unicode.hs" 82 7 82 8+                      , SrcSpan "tests/examples/Unicode.hs" 82 8 82 10+                      , SrcSpan "tests/examples/Unicode.hs" 82 10 82 11+                      ]+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 7 82 11+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 82 7 82 8+                         , SrcSpan "tests/examples/Unicode.hs" 82 8 82 10+                         , SrcSpan "tests/examples/Unicode.hs" 82 10 82 11+                         ]+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 8 82 10+                        , srcInfoPoints = []+                        }+                      "=="))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 1 83 11+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 1 83 4+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 83 1 83 2+                   , SrcSpan "tests/examples/Unicode.hs" 83 2 83 3+                   , SrcSpan "tests/examples/Unicode.hs" 83 3 83 4+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 2 83 3+                  , srcInfoPoints = []+                  }+                "\8804"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 5 83 11+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 83 5 83 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 7 83 11+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Unicode.hs" 83 7 83 8+                      , SrcSpan "tests/examples/Unicode.hs" 83 8 83 10+                      , SrcSpan "tests/examples/Unicode.hs" 83 10 83 11+                      ]+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 7 83 11+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 83 7 83 8+                         , SrcSpan "tests/examples/Unicode.hs" 83 8 83 10+                         , SrcSpan "tests/examples/Unicode.hs" 83 10 83 11+                         ]+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 8 83 10+                        , srcInfoPoints = []+                        }+                      "<="))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 1 84 11+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 1 84 4+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 84 1 84 2+                   , SrcSpan "tests/examples/Unicode.hs" 84 2 84 3+                   , SrcSpan "tests/examples/Unicode.hs" 84 3 84 4+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 2 84 3+                  , srcInfoPoints = []+                  }+                "\8805"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 5 84 11+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 84 5 84 6 ]+               }+             (Var+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 7 84 11+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Unicode.hs" 84 7 84 8+                      , SrcSpan "tests/examples/Unicode.hs" 84 8 84 10+                      , SrcSpan "tests/examples/Unicode.hs" 84 10 84 11+                      ]+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 7 84 11+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 84 7 84 8+                         , SrcSpan "tests/examples/Unicode.hs" 84 8 84 10+                         , SrcSpan "tests/examples/Unicode.hs" 84 10 84 11+                         ]+                     }+                   (Symbol+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 8 84 10+                        , srcInfoPoints = []+                        }+                      ">="))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 1 86 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 1 86 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 86 1 86 2+                   , SrcSpan "tests/examples/Unicode.hs" 86 2 86 4+                   , SrcSpan "tests/examples/Unicode.hs" 86 4 86 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 2 86 4+                  , srcInfoPoints = []+                  }+                "|\8803"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 7 86 27+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 86 7 86 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 27+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 23+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 17+                              , srcInfoPoints = []+                              }+                            "lengthOP")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 18 86 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 18 86 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 18 86 23+                              , srcInfoPoints = []+                              }+                            "False"))))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 24 86 27+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 86 24 86 25+                         , SrcSpan "tests/examples/Unicode.hs" 86 25 86 26+                         , SrcSpan "tests/examples/Unicode.hs" 86 26 86 27+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 24 86 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 86 24 86 25+                            , SrcSpan "tests/examples/Unicode.hs" 86 25 86 26+                            , SrcSpan "tests/examples/Unicode.hs" 86 26 86 27+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 25 86 26+                           , srcInfoPoints = []+                           }+                         "\8803")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 1 87 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 1 87 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 87 1 87 2+                   , SrcSpan "tests/examples/Unicode.hs" 87 2 87 4+                   , SrcSpan "tests/examples/Unicode.hs" 87 4 87 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 2 87 4+                  , srcInfoPoints = []+                  }+                "|<"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 7 87 27+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 87 7 87 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 27+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 23+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 17+                              , srcInfoPoints = []+                              }+                            "lengthOP")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 18 87 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 18 87 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 18 87 23+                              , srcInfoPoints = []+                              }+                            "False"))))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 24 87 27+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 87 24 87 25+                         , SrcSpan "tests/examples/Unicode.hs" 87 25 87 26+                         , SrcSpan "tests/examples/Unicode.hs" 87 26 87 27+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 24 87 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 87 24 87 25+                            , SrcSpan "tests/examples/Unicode.hs" 87 25 87 26+                            , SrcSpan "tests/examples/Unicode.hs" 87 26 87 27+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 25 87 26+                           , srcInfoPoints = []+                           }+                         "<")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 1 88 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 1 88 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 88 1 88 2+                   , SrcSpan "tests/examples/Unicode.hs" 88 2 88 4+                   , SrcSpan "tests/examples/Unicode.hs" 88 4 88 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 2 88 4+                  , srcInfoPoints = []+                  }+                "|\8804"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 7 88 27+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 88 7 88 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 27+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 23+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 17+                              , srcInfoPoints = []+                              }+                            "lengthOP")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 18 88 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 18 88 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 18 88 23+                              , srcInfoPoints = []+                              }+                            "False"))))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 24 88 27+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 88 24 88 25+                         , SrcSpan "tests/examples/Unicode.hs" 88 25 88 26+                         , SrcSpan "tests/examples/Unicode.hs" 88 26 88 27+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 24 88 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 88 24 88 25+                            , SrcSpan "tests/examples/Unicode.hs" 88 25 88 26+                            , SrcSpan "tests/examples/Unicode.hs" 88 26 88 27+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 25 88 26+                           , srcInfoPoints = []+                           }+                         "\8804")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 1 89 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 1 89 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 89 1 89 2+                   , SrcSpan "tests/examples/Unicode.hs" 89 2 89 4+                   , SrcSpan "tests/examples/Unicode.hs" 89 4 89 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 2 89 4+                  , srcInfoPoints = []+                  }+                "|>"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 7 89 27+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 89 7 89 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 27+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 22+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 17+                              , srcInfoPoints = []+                              }+                            "lengthOP")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 18 89 22+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 18 89 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 18 89 22+                              , srcInfoPoints = []+                              }+                            "True"))))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 24 89 27+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 89 24 89 25+                         , SrcSpan "tests/examples/Unicode.hs" 89 25 89 26+                         , SrcSpan "tests/examples/Unicode.hs" 89 26 89 27+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 24 89 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 89 24 89 25+                            , SrcSpan "tests/examples/Unicode.hs" 89 25 89 26+                            , SrcSpan "tests/examples/Unicode.hs" 89 26 89 27+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 25 89 26+                           , srcInfoPoints = []+                           }+                         ">")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 1 90 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 1 90 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 90 1 90 2+                   , SrcSpan "tests/examples/Unicode.hs" 90 2 90 4+                   , SrcSpan "tests/examples/Unicode.hs" 90 4 90 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 2 90 4+                  , srcInfoPoints = []+                  }+                "|\8805"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 7 90 27+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 90 7 90 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 27+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 22+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 17+                              , srcInfoPoints = []+                              }+                            "lengthOP")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 18 90 22+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 18 90 22+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 18 90 22+                              , srcInfoPoints = []+                              }+                            "True"))))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 24 90 27+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 90 24 90 25+                         , SrcSpan "tests/examples/Unicode.hs" 90 25 90 26+                         , SrcSpan "tests/examples/Unicode.hs" 90 26 90 27+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 24 90 27+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 90 24 90 25+                            , SrcSpan "tests/examples/Unicode.hs" 90 25 90 26+                            , SrcSpan "tests/examples/Unicode.hs" 90 26 90 27+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 25 90 26+                           , srcInfoPoints = []+                           }+                         "\8805")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 1 92 28+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 1 92 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 92 1 92 2+                   , SrcSpan "tests/examples/Unicode.hs" 92 2 92 4+                   , SrcSpan "tests/examples/Unicode.hs" 92 4 92 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 2 92 4+                  , srcInfoPoints = []+                  }+                "|="))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 7 92 28+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 92 7 92 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 28+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 23+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 17+                              , srcInfoPoints = []+                              }+                            "lengthOP")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 18 92 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 18 92 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 18 92 23+                              , srcInfoPoints = []+                              }+                            "False"))))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 24 92 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 92 24 92 25+                         , SrcSpan "tests/examples/Unicode.hs" 92 25 92 27+                         , SrcSpan "tests/examples/Unicode.hs" 92 27 92 28+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 24 92 28+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 92 24 92 25+                            , SrcSpan "tests/examples/Unicode.hs" 92 25 92 27+                            , SrcSpan "tests/examples/Unicode.hs" 92 27 92 28+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 25 92 27+                           , srcInfoPoints = []+                           }+                         "==")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 1 93 28+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 1 93 6+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 93 1 93 2+                   , SrcSpan "tests/examples/Unicode.hs" 93 2 93 5+                   , SrcSpan "tests/examples/Unicode.hs" 93 5 93 6+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 2 93 5+                  , srcInfoPoints = []+                  }+                "|=="))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 7 93 28+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 93 7 93 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 28+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 23+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 17+                              , srcInfoPoints = []+                              }+                            "lengthOP")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 18 93 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 18 93 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 18 93 23+                              , srcInfoPoints = []+                              }+                            "False"))))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 24 93 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 93 24 93 25+                         , SrcSpan "tests/examples/Unicode.hs" 93 25 93 27+                         , SrcSpan "tests/examples/Unicode.hs" 93 27 93 28+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 24 93 28+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 93 24 93 25+                            , SrcSpan "tests/examples/Unicode.hs" 93 25 93 27+                            , SrcSpan "tests/examples/Unicode.hs" 93 27 93 28+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 25 93 27+                           , srcInfoPoints = []+                           }+                         "==")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 1 94 28+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 1 94 6+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 94 1 94 2+                   , SrcSpan "tests/examples/Unicode.hs" 94 2 94 5+                   , SrcSpan "tests/examples/Unicode.hs" 94 5 94 6+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 2 94 5+                  , srcInfoPoints = []+                  }+                "|<="))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 7 94 28+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 94 7 94 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 28+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 23+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 17+                              , srcInfoPoints = []+                              }+                            "lengthOP")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 18 94 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 18 94 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 18 94 23+                              , srcInfoPoints = []+                              }+                            "False"))))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 24 94 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 94 24 94 25+                         , SrcSpan "tests/examples/Unicode.hs" 94 25 94 27+                         , SrcSpan "tests/examples/Unicode.hs" 94 27 94 28+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 24 94 28+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 94 24 94 25+                            , SrcSpan "tests/examples/Unicode.hs" 94 25 94 27+                            , SrcSpan "tests/examples/Unicode.hs" 94 27 94 28+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 25 94 27+                           , srcInfoPoints = []+                           }+                         "<=")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 1 95 28+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 1 95 6+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 95 1 95 2+                   , SrcSpan "tests/examples/Unicode.hs" 95 2 95 5+                   , SrcSpan "tests/examples/Unicode.hs" 95 5 95 6+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 2 95 5+                  , srcInfoPoints = []+                  }+                "|>="))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 7 95 28+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 95 7 95 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 28+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 23+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 17+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 17+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 17+                              , srcInfoPoints = []+                              }+                            "lengthOP")))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 18 95 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 18 95 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 18 95 23+                              , srcInfoPoints = []+                              }+                            "False"))))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 24 95 28+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 95 24 95 25+                         , SrcSpan "tests/examples/Unicode.hs" 95 25 95 27+                         , SrcSpan "tests/examples/Unicode.hs" 95 27 95 28+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 24 95 28+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 95 24 95 25+                            , SrcSpan "tests/examples/Unicode.hs" 95 25 95 27+                            , SrcSpan "tests/examples/Unicode.hs" 95 27 95 28+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 25 95 27+                           , srcInfoPoints = []+                           }+                         ">=")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 1 99 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 1 99 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 99 1 99 2+                   , SrcSpan "tests/examples/Unicode.hs" 99 2 99 4+                   , SrcSpan "tests/examples/Unicode.hs" 99 4 99 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 2 99 4+                  , srcInfoPoints = []+                  }+                "\8803|"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 6 99 17+               , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 99 6 99 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 8 99 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 8 99 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 8 99 12+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 8 99 12+                           , srcInfoPoints = []+                           }+                         "flip")))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 13 99 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 99 13 99 14+                         , SrcSpan "tests/examples/Unicode.hs" 99 14 99 16+                         , SrcSpan "tests/examples/Unicode.hs" 99 16 99 17+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 13 99 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 99 13 99 14+                            , SrcSpan "tests/examples/Unicode.hs" 99 14 99 16+                            , SrcSpan "tests/examples/Unicode.hs" 99 16 99 17+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 14 99 16+                           , srcInfoPoints = []+                           }+                         "|\8803")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 1 100 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 1 100 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 100 1 100 2+                   , SrcSpan "tests/examples/Unicode.hs" 100 2 100 4+                   , SrcSpan "tests/examples/Unicode.hs" 100 4 100 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 2 100 4+                  , srcInfoPoints = []+                  }+                "<|"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 6 100 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 100 6 100 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 8 100 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 8 100 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 8 100 12+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 8 100 12+                           , srcInfoPoints = []+                           }+                         "flip")))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 13 100 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 100 13 100 14+                         , SrcSpan "tests/examples/Unicode.hs" 100 14 100 16+                         , SrcSpan "tests/examples/Unicode.hs" 100 16 100 17+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 13 100 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 100 13 100 14+                            , SrcSpan "tests/examples/Unicode.hs" 100 14 100 16+                            , SrcSpan "tests/examples/Unicode.hs" 100 16 100 17+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 14 100 16+                           , srcInfoPoints = []+                           }+                         "|\8805")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 1 101 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 1 101 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 101 1 101 2+                   , SrcSpan "tests/examples/Unicode.hs" 101 2 101 4+                   , SrcSpan "tests/examples/Unicode.hs" 101 4 101 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 2 101 4+                  , srcInfoPoints = []+                  }+                "\8804|"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 6 101 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 101 6 101 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 8 101 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 8 101 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 8 101 12+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 8 101 12+                           , srcInfoPoints = []+                           }+                         "flip")))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 13 101 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 101 13 101 14+                         , SrcSpan "tests/examples/Unicode.hs" 101 14 101 16+                         , SrcSpan "tests/examples/Unicode.hs" 101 16 101 17+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 13 101 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 101 13 101 14+                            , SrcSpan "tests/examples/Unicode.hs" 101 14 101 16+                            , SrcSpan "tests/examples/Unicode.hs" 101 16 101 17+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 14 101 16+                           , srcInfoPoints = []+                           }+                         "|>")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 1 102 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 1 102 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 102 1 102 2+                   , SrcSpan "tests/examples/Unicode.hs" 102 2 102 4+                   , SrcSpan "tests/examples/Unicode.hs" 102 4 102 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 2 102 4+                  , srcInfoPoints = []+                  }+                ">|"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 6 102 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 102 6 102 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 8 102 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 8 102 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 8 102 12+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 8 102 12+                           , srcInfoPoints = []+                           }+                         "flip")))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 13 102 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 102 13 102 14+                         , SrcSpan "tests/examples/Unicode.hs" 102 14 102 16+                         , SrcSpan "tests/examples/Unicode.hs" 102 16 102 17+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 13 102 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 102 13 102 14+                            , SrcSpan "tests/examples/Unicode.hs" 102 14 102 16+                            , SrcSpan "tests/examples/Unicode.hs" 102 16 102 17+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 14 102 16+                           , srcInfoPoints = []+                           }+                         "|\8804")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 1 103 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 1 103 5+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 103 1 103 2+                   , SrcSpan "tests/examples/Unicode.hs" 103 2 103 4+                   , SrcSpan "tests/examples/Unicode.hs" 103 4 103 5+                   ]+               }+             (Symbol+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 2 103 4+                  , srcInfoPoints = []+                  }+                "\8805|"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 6 103 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Unicode.hs" 103 6 103 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 8 103 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 8 103 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 8 103 12+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 8 103 12+                           , srcInfoPoints = []+                           }+                         "flip")))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 13 103 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Unicode.hs" 103 13 103 14+                         , SrcSpan "tests/examples/Unicode.hs" 103 14 103 16+                         , SrcSpan "tests/examples/Unicode.hs" 103 16 103 17+                         ]+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 13 103 17+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Unicode.hs" 103 13 103 14+                            , SrcSpan "tests/examples/Unicode.hs" 103 14 103 16+                            , SrcSpan "tests/examples/Unicode.hs" 103 16 103 17+                            ]+                        }+                      (Symbol+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 14 103 16+                           , srcInfoPoints = []+                           }+                         "|<")))))+          Nothing+      , RulePragmaDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 105 1 118 6+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unicode.hs" 105 1 105 10+                , SrcSpan "tests/examples/Unicode.hs" 118 3 118 6+                ]+            }+          [ Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 1 107 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 107 1 107 10+                    , SrcSpan "tests/examples/Unicode.hs" 107 11 107 17+                    , SrcSpan "tests/examples/Unicode.hs" 107 22 107 23+                    , SrcSpan "tests/examples/Unicode.hs" 107 42 107 43+                    ]+                }+              "xs |\8803 n"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 18 107 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 18 107 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 21 107 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 21 107 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 25 107 41+                   , srcInfoPoints = []+                   }+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 25 107 36+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 107 25 107 26+                          , SrcSpan "tests/examples/Unicode.hs" 107 35 107 36+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 26 107 35+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 26 107 32+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 26 107 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 26 107 32+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 33 107 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 33 107 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 33 107 35+                                  , srcInfoPoints = []+                                  }+                                "xs")))))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 37 107 39+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 37 107 39+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 37 107 39+                            , srcInfoPoints = []+                            }+                          "==")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 40 107 41+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 40 107 41+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 40 107 41+                            , srcInfoPoints = []+                            }+                          "n"))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 44 107 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 44 107 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 44 107 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 44 107 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 47 107 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 47 107 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 47 107 49+                            , srcInfoPoints = []+                            }+                          "|\8803")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 50 107 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 50 107 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 50 107 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 1 108 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 108 1 108 10+                    , SrcSpan "tests/examples/Unicode.hs" 108 11 108 17+                    , SrcSpan "tests/examples/Unicode.hs" 108 22 108 23+                    , SrcSpan "tests/examples/Unicode.hs" 108 42 108 43+                    ]+                }+              "xs |< n"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 18 108 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 18 108 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 21 108 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 21 108 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 25 108 41+                   , srcInfoPoints = []+                   }+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 25 108 36+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 108 25 108 26+                          , SrcSpan "tests/examples/Unicode.hs" 108 35 108 36+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 26 108 35+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 26 108 32+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 26 108 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 26 108 32+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 33 108 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 33 108 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 33 108 35+                                  , srcInfoPoints = []+                                  }+                                "xs")))))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 37 108 38+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 37 108 38+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 37 108 38+                            , srcInfoPoints = []+                            }+                          "<")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 40 108 41+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 40 108 41+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 40 108 41+                            , srcInfoPoints = []+                            }+                          "n"))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 44 108 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 44 108 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 44 108 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 44 108 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 47 108 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 47 108 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 47 108 49+                            , srcInfoPoints = []+                            }+                          "|<")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 50 108 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 50 108 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 50 108 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 1 109 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 109 1 109 10+                    , SrcSpan "tests/examples/Unicode.hs" 109 11 109 17+                    , SrcSpan "tests/examples/Unicode.hs" 109 22 109 23+                    , SrcSpan "tests/examples/Unicode.hs" 109 42 109 43+                    ]+                }+              "xs |\8804 n"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 18 109 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 18 109 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 21 109 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 21 109 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 25 109 41+                   , srcInfoPoints = []+                   }+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 25 109 36+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 109 25 109 26+                          , SrcSpan "tests/examples/Unicode.hs" 109 35 109 36+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 26 109 35+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 26 109 32+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 26 109 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 26 109 32+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 33 109 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 33 109 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 33 109 35+                                  , srcInfoPoints = []+                                  }+                                "xs")))))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 37 109 39+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 37 109 39+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 37 109 39+                            , srcInfoPoints = []+                            }+                          "<=")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 40 109 41+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 40 109 41+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 40 109 41+                            , srcInfoPoints = []+                            }+                          "n"))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 44 109 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 44 109 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 44 109 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 44 109 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 47 109 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 47 109 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 47 109 49+                            , srcInfoPoints = []+                            }+                          "|\8804")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 50 109 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 50 109 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 50 109 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 1 110 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 110 1 110 10+                    , SrcSpan "tests/examples/Unicode.hs" 110 11 110 17+                    , SrcSpan "tests/examples/Unicode.hs" 110 22 110 23+                    , SrcSpan "tests/examples/Unicode.hs" 110 42 110 43+                    ]+                }+              "xs |> n"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 18 110 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 18 110 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 21 110 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 21 110 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 25 110 41+                   , srcInfoPoints = []+                   }+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 25 110 36+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 110 25 110 26+                          , SrcSpan "tests/examples/Unicode.hs" 110 35 110 36+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 26 110 35+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 26 110 32+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 26 110 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 26 110 32+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 33 110 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 33 110 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 33 110 35+                                  , srcInfoPoints = []+                                  }+                                "xs")))))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 37 110 38+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 37 110 38+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 37 110 38+                            , srcInfoPoints = []+                            }+                          ">")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 40 110 41+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 40 110 41+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 40 110 41+                            , srcInfoPoints = []+                            }+                          "n"))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 44 110 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 44 110 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 44 110 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 44 110 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 47 110 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 47 110 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 47 110 49+                            , srcInfoPoints = []+                            }+                          "|>")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 50 110 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 50 110 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 50 110 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 1 111 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 111 1 111 10+                    , SrcSpan "tests/examples/Unicode.hs" 111 11 111 17+                    , SrcSpan "tests/examples/Unicode.hs" 111 22 111 23+                    , SrcSpan "tests/examples/Unicode.hs" 111 42 111 43+                    ]+                }+              "xs |\8805 n"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 18 111 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 18 111 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 21 111 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 21 111 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 25 111 41+                   , srcInfoPoints = []+                   }+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 25 111 36+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 111 25 111 26+                          , SrcSpan "tests/examples/Unicode.hs" 111 35 111 36+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 26 111 35+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 26 111 32+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 26 111 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 26 111 32+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 33 111 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 33 111 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 33 111 35+                                  , srcInfoPoints = []+                                  }+                                "xs")))))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 37 111 39+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 37 111 39+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 37 111 39+                            , srcInfoPoints = []+                            }+                          ">=")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 40 111 41+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 40 111 41+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 40 111 41+                            , srcInfoPoints = []+                            }+                          "n"))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 44 111 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 44 111 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 44 111 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 44 111 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 47 111 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 47 111 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 47 111 49+                            , srcInfoPoints = []+                            }+                          "|\8805")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 50 111 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 50 111 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 50 111 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 1 113 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 113 1 113 10+                    , SrcSpan "tests/examples/Unicode.hs" 113 11 113 17+                    , SrcSpan "tests/examples/Unicode.hs" 113 22 113 23+                    , SrcSpan "tests/examples/Unicode.hs" 113 42 113 43+                    ]+                }+              "n \8803| xs"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 18 113 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 18 113 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 21 113 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 21 113 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 25 113 41+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 25 113 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 25 113 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 25 113 26+                            , srcInfoPoints = []+                            }+                          "n")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 27 113 29+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 27 113 29+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 27 113 29+                            , srcInfoPoints = []+                            }+                          "==")))+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 30 113 41+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 113 30 113 31+                          , SrcSpan "tests/examples/Unicode.hs" 113 40 113 41+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 31 113 40+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 31 113 37+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 31 113 37+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 31 113 37+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 38 113 40+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 38 113 40+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 38 113 40+                                  , srcInfoPoints = []+                                  }+                                "xs"))))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 44 113 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 44 113 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 44 113 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 44 113 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 47 113 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 47 113 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 47 113 49+                            , srcInfoPoints = []+                            }+                          "|\8803")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 50 113 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 50 113 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 50 113 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 1 114 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 114 1 114 10+                    , SrcSpan "tests/examples/Unicode.hs" 114 11 114 17+                    , SrcSpan "tests/examples/Unicode.hs" 114 22 114 23+                    , SrcSpan "tests/examples/Unicode.hs" 114 42 114 43+                    ]+                }+              "n <| xs"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 18 114 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 18 114 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 21 114 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 21 114 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 25 114 41+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 25 114 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 25 114 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 25 114 26+                            , srcInfoPoints = []+                            }+                          "n")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 27 114 28+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 27 114 28+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 27 114 28+                            , srcInfoPoints = []+                            }+                          "<")))+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 30 114 41+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 114 30 114 31+                          , SrcSpan "tests/examples/Unicode.hs" 114 40 114 41+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 31 114 40+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 31 114 37+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 31 114 37+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 31 114 37+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 38 114 40+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 38 114 40+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 38 114 40+                                  , srcInfoPoints = []+                                  }+                                "xs"))))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 44 114 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 44 114 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 44 114 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 44 114 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 47 114 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 47 114 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 47 114 49+                            , srcInfoPoints = []+                            }+                          "|\8805")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 50 114 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 50 114 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 50 114 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 1 115 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 115 1 115 10+                    , SrcSpan "tests/examples/Unicode.hs" 115 11 115 17+                    , SrcSpan "tests/examples/Unicode.hs" 115 22 115 23+                    , SrcSpan "tests/examples/Unicode.hs" 115 42 115 43+                    ]+                }+              "n \8804| xs"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 18 115 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 18 115 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 21 115 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 21 115 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 25 115 41+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 25 115 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 25 115 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 25 115 26+                            , srcInfoPoints = []+                            }+                          "n")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 27 115 29+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 27 115 29+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 27 115 29+                            , srcInfoPoints = []+                            }+                          "<=")))+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 30 115 41+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 115 30 115 31+                          , SrcSpan "tests/examples/Unicode.hs" 115 40 115 41+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 31 115 40+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 31 115 37+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 31 115 37+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 31 115 37+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 38 115 40+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 38 115 40+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 38 115 40+                                  , srcInfoPoints = []+                                  }+                                "xs"))))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 44 115 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 44 115 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 44 115 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 44 115 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 47 115 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 47 115 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 47 115 49+                            , srcInfoPoints = []+                            }+                          "|>")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 50 115 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 50 115 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 50 115 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 1 116 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 116 1 116 10+                    , SrcSpan "tests/examples/Unicode.hs" 116 11 116 17+                    , SrcSpan "tests/examples/Unicode.hs" 116 22 116 23+                    , SrcSpan "tests/examples/Unicode.hs" 116 42 116 43+                    ]+                }+              "n >| xs"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 18 116 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 18 116 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 21 116 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 21 116 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 25 116 41+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 25 116 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 25 116 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 25 116 26+                            , srcInfoPoints = []+                            }+                          "n")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 27 116 28+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 27 116 28+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 27 116 28+                            , srcInfoPoints = []+                            }+                          ">")))+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 30 116 41+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 116 30 116 31+                          , SrcSpan "tests/examples/Unicode.hs" 116 40 116 41+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 31 116 40+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 31 116 37+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 31 116 37+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 31 116 37+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 38 116 40+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 38 116 40+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 38 116 40+                                  , srcInfoPoints = []+                                  }+                                "xs"))))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 44 116 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 44 116 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 44 116 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 44 116 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 47 116 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 47 116 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 47 116 49+                            , srcInfoPoints = []+                            }+                          "|\8804")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 50 116 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 50 116 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 50 116 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          , Rule+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 1 117 51+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Unicode.hs" 117 1 117 10+                    , SrcSpan "tests/examples/Unicode.hs" 117 11 117 17+                    , SrcSpan "tests/examples/Unicode.hs" 117 22 117 23+                    , SrcSpan "tests/examples/Unicode.hs" 117 42 117 43+                    ]+                }+              "n \8805| xs"+              Nothing+              (Just+                 [ RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 18 117 20+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 18 117 20+                          , srcInfoPoints = []+                          }+                        "xs")+                 , RuleVar+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 21 117 22+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 21 117 22+                          , srcInfoPoints = []+                          }+                        "n")+                 ])+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 25 117 41+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 25 117 26+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 25 117 26+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 25 117 26+                            , srcInfoPoints = []+                            }+                          "n")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 27 117 29+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 27 117 29+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 27 117 29+                            , srcInfoPoints = []+                            }+                          ">=")))+                 (Paren+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 30 117 41+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Unicode.hs" 117 30 117 31+                          , SrcSpan "tests/examples/Unicode.hs" 117 40 117 41+                          ]+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 31 117 40+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 31 117 37+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 31 117 37+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 31 117 37+                                  , srcInfoPoints = []+                                  }+                                "length")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 38 117 40+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 38 117 40+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 38 117 40+                                  , srcInfoPoints = []+                                  }+                                "xs"))))))+              (InfixApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 44 117 51+                   , srcInfoPoints = []+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 44 117 46+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 44 117 46+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 44 117 46+                            , srcInfoPoints = []+                            }+                          "xs")))+                 (QVarOp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 47 117 49+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 47 117 49+                         , srcInfoPoints = []+                         }+                       (Symbol+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 47 117 49+                            , srcInfoPoints = []+                            }+                          "|<")))+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 50 117 51+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 50 117 51+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 50 117 51+                            , srcInfoPoints = []+                            }+                          "n"))))+          ]+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/Unicode.hs" 56 1 56 28)+        "    f  = replicate 2000 x"+    , Comment+        False+        (SrcSpan "tests/examples/Unicode.hs" 58 1 58 20)+        "    lf = length f"+    , Comment+        False+        (SrcSpan "tests/examples/Unicode.hs" 59 1 59 20)+        "    li = length i"+    , Comment+        False+        (SrcSpan "tests/examples/Unicode.hs" 60 1 60 20)+        "    pf = lf > 300"+    , Comment+        False+        (SrcSpan "tests/examples/Unicode.hs" 61 1 61 20)+        "    pi = li > 300"+    , Comment+        False+        (SrcSpan "tests/examples/Unicode.hs" 98 1 98 7)+        " \8803\8804\8805"+    , Comment+        False (SrcSpan "tests/examples/Unicode.hs" 106 1 106 10) " length"+    ]+  )
+ tests/examples/Unicode.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unicode.hs.prettyprinter.golden view
@@ -0,0 +1,98 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where+import System.Environment++main :: IO ()+main+  = do as <- getArgs+       print $ as+       print $ test 0+       print $ test2 0+       print $ testRewrite 0+       print $ testRewriteReverse 0+       print $ testRewrite2 0+       print $ testRewriteReverse2 0++test :: a -> Bool+test x = pi+  where f = replicate 2000 x+        i = repeat x+        pf = f |> 300+        pi = i |> 300++test2 :: a -> (Bool, Bool)+test2 x = (pf, pi)+  where f = replicate 2000 x+        i = repeat x+        pf = f |> 300+        pi = i |> 300++testRewrite :: a -> Bool+testRewrite x = pi+  where f = replicate 2000 x+        i = repeat x+        lf = length f+        li = length i+        pf = lf > 300+        pi = li > 300++testRewriteReverse :: a -> Bool+testRewriteReverse x = pi+  where f = replicate 2000 x+        i = repeat x+        lf = length f+        li = length i+        pf = 300 d lf+        pi = 300 d li++testRewrite2 :: a -> (Bool, Bool)+testRewrite2 x = (length i > 300, 300 > length i)+  where i = repeat x++testRewriteReverse2 :: a -> (Bool, Bool)+testRewriteReverse2 x = (2000 < length i, length i > 20)+  where f = replicate 2000 x+        i = repeat x+        lf = length f+        li = length i+        pf = 2000 == lf+        pi = lf e li++lengthOP ::+           (Num a, Ord a) => Bool -> (a -> a -> Bool) -> [b] -> a -> Bool+lengthOP v (œ) [] n = 0 œ n+lengthOP v (œ) xxs n = co xxs 0+  where co (_ : xs) c+          | n > c = co xs (c + 1)+          | otherwise = v+        co [] c = c œ n+(c) = (==)+(d) = (<=)+(e) = (>=)+(|c) = lengthOP False (c)+(|<) = lengthOP False (<)+(|d) = lengthOP False (d)+(|>) = lengthOP True (>)+(|e) = lengthOP True (e)+(|=) = lengthOP False (==)+(|==) = lengthOP False (==)+(|<=) = lengthOP False (<=)+(|>=) = lengthOP False (>=)+(c|) = flip (|c)+(<|) = flip (|e)+(d|) = flip (|>)+(>|) = flip (|d)+(e|) = flip (|<)++{-# RULES+"xs |\8803 n" forall xs n . (length xs) == n = xs |c n+"xs |< n" forall xs n . (length xs) < n = xs |< n+"xs |\8804 n" forall xs n . (length xs) <= n = xs |d n+"xs |> n" forall xs n . (length xs) > n = xs |> n+"xs |\8805 n" forall xs n . (length xs) >= n = xs |e n+"n \8803| xs" forall xs n . n == (length xs) = xs |c n+"n <| xs" forall xs n . n < (length xs) = xs |e n+"n \8804| xs" forall xs n . n <= (length xs) = xs |> n+"n >| xs" forall xs n . n > (length xs) = xs |d n+"n \8805| xs" forall xs n . n >= (length xs) = xs |< n+ #-}
+ tests/examples/Unicode2.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE UnicodeSyntax #-}++lengthOP n (⊜) = 0 ⊜ n
+ tests/examples/Unicode2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unicode2.hs.parser.golden view
@@ -0,0 +1,134 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Unicode2.hs" 1 1 1 1+            , SrcSpan "tests/examples/Unicode2.hs" 3 1 3 1+            , SrcSpan "tests/examples/Unicode2.hs" 3 1 3 1+            , SrcSpan "tests/examples/Unicode2.hs" 3 1 3 1+            , SrcSpan "tests/examples/Unicode2.hs" 4 1 4 1+            , SrcSpan "tests/examples/Unicode2.hs" 4 1 4 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unicode2.hs" 1 1 1 13+                , SrcSpan "tests/examples/Unicode2.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnicodeSyntax"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 1 3 23+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 1 3 23+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 1 3 9+                   , srcInfoPoints = []+                   }+                 "lengthOP")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 10 3 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 10 3 11+                       , srcInfoPoints = []+                       }+                     "n")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 12 3 15+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Unicode2.hs" 3 12 3 13+                        , SrcSpan "tests/examples/Unicode2.hs" 3 13 3 14+                        , SrcSpan "tests/examples/Unicode2.hs" 3 14 3 15+                        ]+                    }+                  (Symbol+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 13 3 14+                       , srcInfoPoints = []+                       }+                     "\8860")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 16 3 23+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Unicode2.hs" 3 16 3 17 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 18 3 23+                      , srcInfoPoints = []+                      }+                    (Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 18 3 19+                         , srcInfoPoints = []+                         }+                       (Int+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 18 3 19+                            , srcInfoPoints = []+                            }+                          0+                          "0"))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 20 3 21+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 20 3 21+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 20 3 21+                               , srcInfoPoints = []+                               }+                             "\8860")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 22 3 23+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 22 3 23+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 22 3 23+                               , srcInfoPoints = []+                               }+                             "n")))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/Unicode2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unicode2.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE UnicodeSyntax #-}+lengthOP n (œ) = 0 œ n
+ tests/examples/UnicodeArrow.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE UnicodeSyntax #-}++arrowTest ∷ String →   String+arrowTest input =+    case input of+      "hello" → "world"+      "world" → "hello"+      otherwise → "unknow"
+ tests/examples/UnicodeArrow.hs.exactprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE UnicodeSyntax #-}++arrowTest ::String ->  String+arrowTest input =+    case input of+      "hello" ->"world"+      "world" ->"hello"+      otherwise ->"unknow"+
+ tests/examples/UnicodeArrow.hs.parser.golden view
@@ -0,0 +1,271 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/UnicodeArrow.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeArrow.hs" 4 1 4 1+            , SrcSpan "tests/examples/UnicodeArrow.hs" 9 1 9 1+            , SrcSpan "tests/examples/UnicodeArrow.hs" 9 1 9 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeArrow.hs" 1 1 1 13+                , SrcSpan "tests/examples/UnicodeArrow.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnicodeSyntax"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeArrow.hs" 3 11 3 12 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 10+                , srcInfoPoints = []+                }+              "arrowTest"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 13 3 30+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnicodeArrow.hs" 3 20 3 21 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 13 3 19+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 13 3 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 13 3 19+                        , srcInfoPoints = []+                        }+                      "String")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 24 3 30+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 24 3 30+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 24 3 30+                        , srcInfoPoints = []+                        }+                      "String"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 1 8 27+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 1 8 27+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 1 4 10+                   , srcInfoPoints = []+                   }+                 "arrowTest")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 11 4 16+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 11 4 16+                       , srcInfoPoints = []+                       }+                     "input")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 17 8 27+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnicodeArrow.hs" 4 17 4 18 ]+                   }+                 (Case+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 5 5 8 27+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/UnicodeArrow.hs" 5 5 5 9+                          , SrcSpan "tests/examples/UnicodeArrow.hs" 5 16 5 18+                          , SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 7+                          , SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 7+                          , SrcSpan "tests/examples/UnicodeArrow.hs" 8 7 8 7+                          , SrcSpan "tests/examples/UnicodeArrow.hs" 9 1 9 0+                          ]+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 5 10 5 15+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 5 10 5 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 5 10 5 15+                               , srcInfoPoints = []+                               }+                             "input")))+                    [ Alt+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 24+                          , srcInfoPoints = []+                          }+                        (PLit+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 14+                             , srcInfoPoints = []+                             }+                           (Signless+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 14+                                , srcInfoPoints = []+                                })+                           (String+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 14+                                , srcInfoPoints = []+                                }+                              "hello"+                              "hello"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 15 6 24+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/UnicodeArrow.hs" 6 15 6 16 ]+                             }+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 17 6 24+                                , srcInfoPoints = []+                                }+                              (String+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeArrow.hs" 6 17 6 24+                                   , srcInfoPoints = []+                                   }+                                 "world"+                                 "world")))+                        Nothing+                    , Alt+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 24+                          , srcInfoPoints = []+                          }+                        (PLit+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 14+                             , srcInfoPoints = []+                             }+                           (Signless+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 14+                                , srcInfoPoints = []+                                })+                           (String+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 14+                                , srcInfoPoints = []+                                }+                              "world"+                              "world"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 15 7 24+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/UnicodeArrow.hs" 7 15 7 16 ]+                             }+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 17 7 24+                                , srcInfoPoints = []+                                }+                              (String+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeArrow.hs" 7 17 7 24+                                   , srcInfoPoints = []+                                   }+                                 "hello"+                                 "hello")))+                        Nothing+                    , Alt+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 7 8 27+                          , srcInfoPoints = []+                          }+                        (PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 7 8 16+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 7 8 16+                                , srcInfoPoints = []+                                }+                              "otherwise"))+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 17 8 27+                             , srcInfoPoints =+                                 [ SrcSpan "tests/examples/UnicodeArrow.hs" 8 17 8 18 ]+                             }+                           (Lit+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 19 8 27+                                , srcInfoPoints = []+                                }+                              (String+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeArrow.hs" 8 19 8 27+                                   , srcInfoPoints = []+                                   }+                                 "unknow"+                                 "unknow")))+                        Nothing+                    ]))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/UnicodeArrow.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeArrow.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE UnicodeSyntax #-}++arrowTest :: String -> String+arrowTest input+  = case input of+        "hello" -> "world"+        "world" -> "hello"+        otherwise -> "unknow"
+ tests/examples/UnicodeIdents.hs view
@@ -0,0 +1,2 @@+猫 = ()+自乗 x = x * x
+ tests/examples/UnicodeIdents.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeIdents.hs.parser.golden view
@@ -0,0 +1,155 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 3 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 1+            , SrcSpan "tests/examples/UnicodeIdents.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeIdents.hs" 3 1 3 1+            ]+        }+      Nothing+      []+      []+      [ PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 7+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 2+                  , srcInfoPoints = []+                  }+                "\29483"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 3 1 7+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 3 1 4 ]+               }+             (Con+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6+                      , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6+                         , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6+                            , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7+                            ]+                        }))))+          Nothing+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 13+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 13+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 3+                   , srcInfoPoints = []+                   }+                 "\33258\20055")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 4 2 5+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 4 2 5+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 6 2 13+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnicodeIdents.hs" 2 6 2 7 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 13+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9+                               , srcInfoPoints = []+                               }+                             "x")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11+                               , srcInfoPoints = []+                               }+                             "*")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13+                               , srcInfoPoints = []+                               }+                             "x")))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/UnicodeIdents.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeIdents.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@++ = ()+êW x = x * x
+ tests/examples/UnicodeRelation.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE UnicodeSyntax #-}++import Prelude.Unicode++testAnd ∷ Int → Int → Bool+testAnd a b =+    let b₁ = a ≤ 3+        b₂ = b ≥ 5+    in b₁ ∧ b₂++testOr ∷ Int → Int → Int → Int → Int → Bool+testOr a b c d e =+    let b₁ = a ≤ 3+        b₂ = b ≢ 5+        b₃ = c ≮ 5+        b₄ = d ≯ 6+        b₅ = e ∈ [1,2,3,4]+        b₆ = e ∉ [5,6,7,8]+    in b₁ ∨ b₂ ∨ b₃ ∨ b₄ ∨ b₅ ∨ b₆
+ tests/examples/UnicodeRelation.hs.exactprinter.golden view
@@ -0,0 +1,20 @@+{-# LANGUAGE UnicodeSyntax #-}++import Prelude.Unicode++testAnd ::Int ->Int ->Bool+testAnd a b =+    let b = a d 3+        b‚ = b e 5+    in b ' b‚++testOr ::Int ->Int ->Int ->Int ->Int ->Bool+testOr a b c d e =+    let b = a d 3+        b‚ = b b 5+        bƒ = c n 5+        b„ = d o 6+        b… = e  [1,2,3,4]+        b† = e 	 [5,6,7,8]+    in b ( b‚ ( bƒ ( b„ ( b… ( b†+
+ tests/examples/UnicodeRelation.hs.parser.golden view
@@ -0,0 +1,1637 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/UnicodeRelation.hs" 1 1 20 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/UnicodeRelation.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeRelation.hs" 5 1 5 1+            , SrcSpan "tests/examples/UnicodeRelation.hs" 6 1 6 1+            , SrcSpan "tests/examples/UnicodeRelation.hs" 11 1 11 1+            , SrcSpan "tests/examples/UnicodeRelation.hs" 12 1 12 1+            , SrcSpan "tests/examples/UnicodeRelation.hs" 20 1 20 1+            , SrcSpan "tests/examples/UnicodeRelation.hs" 20 1 20 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeRelation.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeRelation.hs" 1 1 1 13+                , SrcSpan "tests/examples/UnicodeRelation.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeRelation.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnicodeSyntax"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 23+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeRelation.hs" 3 8 3 23+                  , srcInfoPoints = []+                  }+                "Prelude.Unicode"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeRelation.hs" 5 1 5 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeRelation.hs" 5 9 5 10 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeRelation.hs" 5 1 5 8+                , srcInfoPoints = []+                }+              "testAnd"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnicodeRelation.hs" 5 11 5 27+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnicodeRelation.hs" 5 15 5 16 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeRelation.hs" 5 11 5 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeRelation.hs" 5 11 5 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeRelation.hs" 5 11 5 14+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeRelation.hs" 5 17 5 27+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnicodeRelation.hs" 5 21 5 22 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeRelation.hs" 5 17 5 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeRelation.hs" 5 17 5 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeRelation.hs" 5 17 5 20+                           , srcInfoPoints = []+                           }+                         "Int")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeRelation.hs" 5 23 5 27+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeRelation.hs" 5 23 5 27+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeRelation.hs" 5 23 5 27+                           , srcInfoPoints = []+                           }+                         "Bool")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeRelation.hs" 6 1 9 15+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeRelation.hs" 6 1 9 15+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeRelation.hs" 6 1 6 8+                   , srcInfoPoints = []+                   }+                 "testAnd")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeRelation.hs" 6 9 6 10+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeRelation.hs" 6 9 6 10+                       , srcInfoPoints = []+                       }+                     "a")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeRelation.hs" 6 11 6 12+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeRelation.hs" 6 11 6 12+                       , srcInfoPoints = []+                       }+                     "b")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeRelation.hs" 6 13 9 15+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnicodeRelation.hs" 6 13 6 14 ]+                   }+                 (Let+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/UnicodeRelation.hs" 7 5 9 15+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/UnicodeRelation.hs" 7 5 7 8+                          , SrcSpan "tests/examples/UnicodeRelation.hs" 9 5 9 7+                          ]+                      }+                    (BDecls+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 8 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 7 9+                             , SrcSpan "tests/examples/UnicodeRelation.hs" 8 9 8 9+                             , SrcSpan "tests/examples/UnicodeRelation.hs" 9 5 9 0+                             ]+                         }+                       [ PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 7 19+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 7 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 7 11+                                   , srcInfoPoints = []+                                   }+                                 "b\8321"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 7 12 7 19+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeRelation.hs" 7 12 7 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 7 14 7 19+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 7 14 7 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 7 14 7 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 7 14 7 15+                                            , srcInfoPoints = []+                                            }+                                          "a")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 7 16 7 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 7 16 7 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 7 16 7 17+                                            , srcInfoPoints = []+                                            }+                                          "\8804")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 7 18 7 19+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 7 18 7 19+                                         , srcInfoPoints = []+                                         }+                                       3+                                       "3"))))+                           Nothing+                       , PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeRelation.hs" 8 9 8 19+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 8 9 8 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 8 9 8 11+                                   , srcInfoPoints = []+                                   }+                                 "b\8322"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 8 12 8 19+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeRelation.hs" 8 12 8 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 8 14 8 19+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 8 14 8 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 8 14 8 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 8 14 8 15+                                            , srcInfoPoints = []+                                            }+                                          "b")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 8 16 8 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 8 16 8 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 8 16 8 17+                                            , srcInfoPoints = []+                                            }+                                          "\8805")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 8 18 8 19+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 8 18 8 19+                                         , srcInfoPoints = []+                                         }+                                       5+                                       "5"))))+                           Nothing+                       ])+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeRelation.hs" 9 8 9 15+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeRelation.hs" 9 8 9 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeRelation.hs" 9 8 9 10+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 9 8 9 10+                                  , srcInfoPoints = []+                                  }+                                "b\8321")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeRelation.hs" 9 11 9 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeRelation.hs" 9 11 9 12+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 9 11 9 12+                                  , srcInfoPoints = []+                                  }+                                "\8743")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeRelation.hs" 9 13 9 15+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeRelation.hs" 9 13 9 15+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 9 13 9 15+                                  , srcInfoPoints = []+                                  }+                                "b\8322"))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeRelation.hs" 11 1 11 44+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 8 11 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeRelation.hs" 11 1 11 7+                , srcInfoPoints = []+                }+              "testOr"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnicodeRelation.hs" 11 10 11 44+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 14 11 15 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeRelation.hs" 11 10 11 13+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeRelation.hs" 11 10 11 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeRelation.hs" 11 10 11 13+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeRelation.hs" 11 16 11 44+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 20 11 21 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeRelation.hs" 11 16 11 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeRelation.hs" 11 16 11 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeRelation.hs" 11 16 11 19+                           , srcInfoPoints = []+                           }+                         "Int")))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeRelation.hs" 11 22 11 44+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 26 11 27 ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeRelation.hs" 11 22 11 25+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeRelation.hs" 11 22 11 25+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/UnicodeRelation.hs" 11 22 11 25+                              , srcInfoPoints = []+                              }+                            "Int")))+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeRelation.hs" 11 28 11 44+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 32 11 33 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeRelation.hs" 11 28 11 31+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/UnicodeRelation.hs" 11 28 11 31+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/UnicodeRelation.hs" 11 28 11 31+                                 , srcInfoPoints = []+                                 }+                               "Int")))+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeRelation.hs" 11 34 11 44+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 38 11 39 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/UnicodeRelation.hs" 11 34 11 37+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/UnicodeRelation.hs" 11 34 11 37+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/UnicodeRelation.hs" 11 34 11 37+                                    , srcInfoPoints = []+                                    }+                                  "Int")))+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan =+                                  SrcSpan "tests/examples/UnicodeRelation.hs" 11 40 11 44+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan =+                                     SrcSpan "tests/examples/UnicodeRelation.hs" 11 40 11 44+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan =+                                        SrcSpan "tests/examples/UnicodeRelation.hs" 11 40 11 44+                                    , srcInfoPoints = []+                                    }+                                  "Bool"))))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeRelation.hs" 12 1 19 35+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeRelation.hs" 12 1 19 35+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeRelation.hs" 12 1 12 7+                   , srcInfoPoints = []+                   }+                 "testOr")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeRelation.hs" 12 8 12 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeRelation.hs" 12 8 12 9+                       , srcInfoPoints = []+                       }+                     "a")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeRelation.hs" 12 10 12 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeRelation.hs" 12 10 12 11+                       , srcInfoPoints = []+                       }+                     "b")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeRelation.hs" 12 12 12 13+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeRelation.hs" 12 12 12 13+                       , srcInfoPoints = []+                       }+                     "c")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeRelation.hs" 12 14 12 15+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeRelation.hs" 12 14 12 15+                       , srcInfoPoints = []+                       }+                     "d")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeRelation.hs" 12 16 12 17+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeRelation.hs" 12 16 12 17+                       , srcInfoPoints = []+                       }+                     "e")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeRelation.hs" 12 18 19 35+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnicodeRelation.hs" 12 18 12 19 ]+                   }+                 (Let+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/UnicodeRelation.hs" 13 5 19 35+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/UnicodeRelation.hs" 13 5 13 8+                          , SrcSpan "tests/examples/UnicodeRelation.hs" 19 5 19 7+                          ]+                      }+                    (BDecls+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 18 27+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 13 9+                             , SrcSpan "tests/examples/UnicodeRelation.hs" 14 9 14 9+                             , SrcSpan "tests/examples/UnicodeRelation.hs" 15 9 15 9+                             , SrcSpan "tests/examples/UnicodeRelation.hs" 16 9 16 9+                             , SrcSpan "tests/examples/UnicodeRelation.hs" 17 9 17 9+                             , SrcSpan "tests/examples/UnicodeRelation.hs" 18 9 18 9+                             , SrcSpan "tests/examples/UnicodeRelation.hs" 19 5 19 0+                             ]+                         }+                       [ PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 13 19+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 13 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 13 11+                                   , srcInfoPoints = []+                                   }+                                 "b\8321"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 13 12 13 19+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeRelation.hs" 13 12 13 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 13 14 13 19+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 13 14 13 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 13 14 13 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 13 14 13 15+                                            , srcInfoPoints = []+                                            }+                                          "a")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 13 16 13 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 13 16 13 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 13 16 13 17+                                            , srcInfoPoints = []+                                            }+                                          "\8804")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 13 18 13 19+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 13 18 13 19+                                         , srcInfoPoints = []+                                         }+                                       3+                                       "3"))))+                           Nothing+                       , PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeRelation.hs" 14 9 14 19+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 14 9 14 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 14 9 14 11+                                   , srcInfoPoints = []+                                   }+                                 "b\8322"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 14 12 14 19+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeRelation.hs" 14 12 14 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 14 14 14 19+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 14 14 14 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 14 14 14 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 14 14 14 15+                                            , srcInfoPoints = []+                                            }+                                          "b")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 14 16 14 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 14 16 14 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 14 16 14 17+                                            , srcInfoPoints = []+                                            }+                                          "\8802")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 14 18 14 19+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 14 18 14 19+                                         , srcInfoPoints = []+                                         }+                                       5+                                       "5"))))+                           Nothing+                       , PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeRelation.hs" 15 9 15 19+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 15 9 15 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 15 9 15 11+                                   , srcInfoPoints = []+                                   }+                                 "b\8323"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 15 12 15 19+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeRelation.hs" 15 12 15 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 15 14 15 19+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 15 14 15 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 15 14 15 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 15 14 15 15+                                            , srcInfoPoints = []+                                            }+                                          "c")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 15 16 15 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 15 16 15 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 15 16 15 17+                                            , srcInfoPoints = []+                                            }+                                          "\8814")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 15 18 15 19+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 15 18 15 19+                                         , srcInfoPoints = []+                                         }+                                       5+                                       "5"))))+                           Nothing+                       , PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeRelation.hs" 16 9 16 19+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 16 9 16 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 16 9 16 11+                                   , srcInfoPoints = []+                                   }+                                 "b\8324"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 16 12 16 19+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeRelation.hs" 16 12 16 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 16 14 16 19+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 16 14 16 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 16 14 16 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 16 14 16 15+                                            , srcInfoPoints = []+                                            }+                                          "d")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 16 16 16 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 16 16 16 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 16 16 16 17+                                            , srcInfoPoints = []+                                            }+                                          "\8815")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 16 18 16 19+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 16 18 16 19+                                         , srcInfoPoints = []+                                         }+                                       6+                                       "6"))))+                           Nothing+                       , PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeRelation.hs" 17 9 17 27+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 17 9 17 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 17 9 17 11+                                   , srcInfoPoints = []+                                   }+                                 "b\8325"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 17 12 17 27+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeRelation.hs" 17 12 17 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 17 14 17 27+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 17 14 17 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 17 14 17 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 17 14 17 15+                                            , srcInfoPoints = []+                                            }+                                          "e")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 17 16 17 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 17 16 17 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 17 16 17 17+                                            , srcInfoPoints = []+                                            }+                                          "\8712")))+                                 (List+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 17 18 17 27+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/UnicodeRelation.hs" 17 18 17 19+                                          , SrcSpan "tests/examples/UnicodeRelation.hs" 17 20 17 21+                                          , SrcSpan "tests/examples/UnicodeRelation.hs" 17 22 17 23+                                          , SrcSpan "tests/examples/UnicodeRelation.hs" 17 24 17 25+                                          , SrcSpan "tests/examples/UnicodeRelation.hs" 17 26 17 27+                                          ]+                                      }+                                    [ Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/UnicodeRelation.hs" 17 19 17 20+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/UnicodeRelation.hs" 17 19 17 20+                                             , srcInfoPoints = []+                                             }+                                           1+                                           "1")+                                    , Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/UnicodeRelation.hs" 17 21 17 22+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/UnicodeRelation.hs" 17 21 17 22+                                             , srcInfoPoints = []+                                             }+                                           2+                                           "2")+                                    , Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/UnicodeRelation.hs" 17 23 17 24+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/UnicodeRelation.hs" 17 23 17 24+                                             , srcInfoPoints = []+                                             }+                                           3+                                           "3")+                                    , Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/UnicodeRelation.hs" 17 25 17 26+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/UnicodeRelation.hs" 17 25 17 26+                                             , srcInfoPoints = []+                                             }+                                           4+                                           "4")+                                    ])))+                           Nothing+                       , PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeRelation.hs" 18 9 18 27+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 18 9 18 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 18 9 18 11+                                   , srcInfoPoints = []+                                   }+                                 "b\8326"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeRelation.hs" 18 12 18 27+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeRelation.hs" 18 12 18 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeRelation.hs" 18 14 18 27+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 18 14 18 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 18 14 18 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 18 14 18 15+                                            , srcInfoPoints = []+                                            }+                                          "e")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 18 16 18 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/UnicodeRelation.hs" 18 16 18 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeRelation.hs" 18 16 18 17+                                            , srcInfoPoints = []+                                            }+                                          "\8713")))+                                 (List+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeRelation.hs" 18 18 18 27+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/UnicodeRelation.hs" 18 18 18 19+                                          , SrcSpan "tests/examples/UnicodeRelation.hs" 18 20 18 21+                                          , SrcSpan "tests/examples/UnicodeRelation.hs" 18 22 18 23+                                          , SrcSpan "tests/examples/UnicodeRelation.hs" 18 24 18 25+                                          , SrcSpan "tests/examples/UnicodeRelation.hs" 18 26 18 27+                                          ]+                                      }+                                    [ Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/UnicodeRelation.hs" 18 19 18 20+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/UnicodeRelation.hs" 18 19 18 20+                                             , srcInfoPoints = []+                                             }+                                           5+                                           "5")+                                    , Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/UnicodeRelation.hs" 18 21 18 22+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/UnicodeRelation.hs" 18 21 18 22+                                             , srcInfoPoints = []+                                             }+                                           6+                                           "6")+                                    , Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/UnicodeRelation.hs" 18 23 18 24+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/UnicodeRelation.hs" 18 23 18 24+                                             , srcInfoPoints = []+                                             }+                                           7+                                           "7")+                                    , Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan+                                                "tests/examples/UnicodeRelation.hs" 18 25 18 26+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan+                                                   "tests/examples/UnicodeRelation.hs" 18 25 18 26+                                             , srcInfoPoints = []+                                             }+                                           8+                                           "8")+                                    ])))+                           Nothing+                       ])+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 35+                         , srcInfoPoints = []+                         }+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 30+                            , srcInfoPoints = []+                            }+                          (InfixApp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 25+                               , srcInfoPoints = []+                               }+                             (InfixApp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 20+                                  , srcInfoPoints = []+                                  }+                                (InfixApp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 15+                                     , srcInfoPoints = []+                                     }+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 10+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/UnicodeRelation.hs" 19 8 19 10+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/UnicodeRelation.hs" 19 8 19 10+                                              , srcInfoPoints = []+                                              }+                                            "b\8321")))+                                   (QVarOp+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/UnicodeRelation.hs" 19 11 19 12+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/UnicodeRelation.hs" 19 11 19 12+                                           , srcInfoPoints = []+                                           }+                                         (Symbol+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/UnicodeRelation.hs" 19 11 19 12+                                              , srcInfoPoints = []+                                              }+                                            "\8744")))+                                   (Var+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/UnicodeRelation.hs" 19 13 19 15+                                        , srcInfoPoints = []+                                        }+                                      (UnQual+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/UnicodeRelation.hs" 19 13 19 15+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan+                                                    "tests/examples/UnicodeRelation.hs" 19 13 19 15+                                              , srcInfoPoints = []+                                              }+                                            "b\8322"))))+                                (QVarOp+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeRelation.hs" 19 16 19 17+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/UnicodeRelation.hs" 19 16 19 17+                                        , srcInfoPoints = []+                                        }+                                      (Symbol+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/UnicodeRelation.hs" 19 16 19 17+                                           , srcInfoPoints = []+                                           }+                                         "\8744")))+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeRelation.hs" 19 18 19 20+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/UnicodeRelation.hs" 19 18 19 20+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan+                                                 "tests/examples/UnicodeRelation.hs" 19 18 19 20+                                           , srcInfoPoints = []+                                           }+                                         "b\8323"))))+                             (QVarOp+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 19 21 19 22+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeRelation.hs" 19 21 19 22+                                     , srcInfoPoints = []+                                     }+                                   (Symbol+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/UnicodeRelation.hs" 19 21 19 22+                                        , srcInfoPoints = []+                                        }+                                      "\8744")))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 19 23 19 25+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeRelation.hs" 19 23 19 25+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan =+                                            SrcSpan "tests/examples/UnicodeRelation.hs" 19 23 19 25+                                        , srcInfoPoints = []+                                        }+                                      "b\8324"))))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeRelation.hs" 19 26 19 27+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 19 26 19 27+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeRelation.hs" 19 26 19 27+                                     , srcInfoPoints = []+                                     }+                                   "\8744")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeRelation.hs" 19 28 19 30+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 19 28 19 30+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeRelation.hs" 19 28 19 30+                                     , srcInfoPoints = []+                                     }+                                   "b\8325"))))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeRelation.hs" 19 31 19 32+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeRelation.hs" 19 31 19 32+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 19 31 19 32+                                  , srcInfoPoints = []+                                  }+                                "\8744")))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeRelation.hs" 19 33 19 35+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeRelation.hs" 19 33 19 35+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeRelation.hs" 19 33 19 35+                                  , srcInfoPoints = []+                                  }+                                "b\8326"))))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/UnicodeRelation.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeRelation.hs.prettyprinter.golden view
@@ -0,0 +1,18 @@+{-# LANGUAGE UnicodeSyntax #-}+import Prelude.Unicode++testAnd :: Int -> Int -> Bool+testAnd a b+  = let b = a d 3+        b‚ = b e 5+      in b ' b‚++testOr :: Int -> Int -> Int -> Int -> Int -> Bool+testOr a b c d e+  = let b = a d 3+        b‚ = b b 5+        bƒ = c n 5+        b„ = d o 6+        b… = e  [1, 2, 3, 4]+        b† = e 	 [5, 6, 7, 8]+      in b ( b‚ ( bƒ ( b„ ( b… ( b†
+ tests/examples/UnicodeSubscript.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++data Point = Point+    { pointX, pointY ∷ Double+    , name           ∷ String+    } deriving (Show)++distance ∷ Point → Point → Double+distance x y =+    let t₁ = (pointX x - pointX y)^2+        t₂ = (pointY x - pointY y)^2+    in sqrt $ t₁ + t₂
+ tests/examples/UnicodeSubscript.hs.exactprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++data Point = Point+    { pointX, pointY ::Double+    , name           ::String+    } deriving (Show)++distance ::Point ->Point ->Double+distance x y =+    let t = (pointX x - pointX y)^2+        t‚ = (pointY x - pointY y)^2+    in sqrt $ t + t‚+
+ tests/examples/UnicodeSubscript.hs.parser.golden view
@@ -0,0 +1,1036 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/UnicodeSubscript.hs" 1 1 14 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/UnicodeSubscript.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnicodeSubscript.hs" 2 1 2 1+            , SrcSpan "tests/examples/UnicodeSubscript.hs" 2 1 2 1+            , SrcSpan "tests/examples/UnicodeSubscript.hs" 4 1 4 1+            , SrcSpan "tests/examples/UnicodeSubscript.hs" 9 1 9 1+            , SrcSpan "tests/examples/UnicodeSubscript.hs" 10 1 10 1+            , SrcSpan "tests/examples/UnicodeSubscript.hs" 14 1 14 1+            , SrcSpan "tests/examples/UnicodeSubscript.hs" 14 1 14 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan =+                  SrcSpan "tests/examples/UnicodeSubscript.hs" 2 1 2 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/UnicodeSubscript.hs" 2 1 2 7+                  , SrcSpan "tests/examples/UnicodeSubscript.hs" 2 13 2 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan =+                     SrcSpan "tests/examples/UnicodeSubscript.hs" 2 8 2 12+                 , srcInfoPoints = []+                 }+               "Main")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSubscript.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeSubscript.hs" 1 1 1 13+                , SrcSpan "tests/examples/UnicodeSubscript.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSubscript.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnicodeSyntax"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSubscript.hs" 4 1 7 22+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeSubscript.hs" 4 12 4 13 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnicodeSubscript.hs" 4 1 4 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnicodeSubscript.hs" 4 6 4 11+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeSubscript.hs" 4 6 4 11+                  , srcInfoPoints = []+                  }+                "Point"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSubscript.hs" 4 14 7 6+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 5 5 6+                    , SrcSpan "tests/examples/UnicodeSubscript.hs" 6 5 6 6+                    , SrcSpan "tests/examples/UnicodeSubscript.hs" 7 5 7 6+                    ]+                }+              Nothing+              Nothing+              (RecDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeSubscript.hs" 4 14 7 6+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 5 5 6+                       , SrcSpan "tests/examples/UnicodeSubscript.hs" 6 5 6 6+                       , SrcSpan "tests/examples/UnicodeSubscript.hs" 7 5 7 6+                       ]+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/UnicodeSubscript.hs" 4 14 4 19+                      , srcInfoPoints = []+                      }+                    "Point")+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeSubscript.hs" 5 7 5 30+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 13 5 14+                           , SrcSpan "tests/examples/UnicodeSubscript.hs" 5 22 5 23+                           ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeSubscript.hs" 5 7 5 13+                           , srcInfoPoints = []+                           }+                         "pointX"+                     , Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeSubscript.hs" 5 15 5 21+                           , srcInfoPoints = []+                           }+                         "pointY"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/UnicodeSubscript.hs" 5 24 5 30+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeSubscript.hs" 5 24 5 30+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSubscript.hs" 5 24 5 30+                                , srcInfoPoints = []+                                }+                              "Double")))+                 , FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeSubscript.hs" 6 7 6 30+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/UnicodeSubscript.hs" 6 22 6 23 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeSubscript.hs" 6 7 6 11+                           , srcInfoPoints = []+                           }+                         "name"+                     ]+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/UnicodeSubscript.hs" 6 24 6 30+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeSubscript.hs" 6 24 6 30+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSubscript.hs" 6 24 6 30+                                , srcInfoPoints = []+                                }+                              "String")))+                 ])+          ]+          [ Deriving+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSubscript.hs" 7 7 7 22+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 7 7 15 ]+                }+              Nothing+              [ IParen+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeSubscript.hs" 7 16 7 22+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 16 7 17+                        , SrcSpan "tests/examples/UnicodeSubscript.hs" 7 21 7 22+                        ]+                    }+                  (IRule+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeSubscript.hs" 7 17 7 21+                       , srcInfoPoints = []+                       }+                     Nothing+                     Nothing+                     (IHCon+                        SrcSpanInfo+                          { srcInfoSpan =+                              SrcSpan "tests/examples/UnicodeSubscript.hs" 7 17 7 21+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeSubscript.hs" 7 17 7 21+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSubscript.hs" 7 17 7 21+                                , srcInfoPoints = []+                                }+                              "Show"))))+              ]+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSubscript.hs" 9 1 9 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 10 9 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSubscript.hs" 9 1 9 9+                , srcInfoPoints = []+                }+              "distance"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnicodeSubscript.hs" 9 12 9 34+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 18 9 19 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeSubscript.hs" 9 12 9 17+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSubscript.hs" 9 12 9 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSubscript.hs" 9 12 9 17+                        , srcInfoPoints = []+                        }+                      "Point")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeSubscript.hs" 9 20 9 34+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 26 9 27 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSubscript.hs" 9 20 9 25+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSubscript.hs" 9 20 9 25+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeSubscript.hs" 9 20 9 25+                           , srcInfoPoints = []+                           }+                         "Point")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSubscript.hs" 9 28 9 34+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSubscript.hs" 9 28 9 34+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeSubscript.hs" 9 28 9 34+                           , srcInfoPoints = []+                           }+                         "Double")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSubscript.hs" 10 1 13 22+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSubscript.hs" 10 1 13 22+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeSubscript.hs" 10 1 10 9+                   , srcInfoPoints = []+                   }+                 "distance")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeSubscript.hs" 10 10 10 11+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeSubscript.hs" 10 10 10 11+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeSubscript.hs" 10 12 10 13+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeSubscript.hs" 10 12 10 13+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeSubscript.hs" 10 14 13 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 14 10 15 ]+                   }+                 (Let+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/UnicodeSubscript.hs" 11 5 13 22+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 5 11 8+                          , SrcSpan "tests/examples/UnicodeSubscript.hs" 13 5 13 7+                          ]+                      }+                    (BDecls+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 12 37+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 11 9+                             , SrcSpan "tests/examples/UnicodeSubscript.hs" 12 9 12 9+                             , SrcSpan "tests/examples/UnicodeSubscript.hs" 13 5 13 0+                             ]+                         }+                       [ PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 11 37+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 11 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 11 11+                                   , srcInfoPoints = []+                                   }+                                 "t\8321"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSubscript.hs" 11 12 11 37+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 12 11 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeSubscript.hs" 11 14 11 37+                                   , srcInfoPoints = []+                                   }+                                 (Paren+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSubscript.hs" 11 14 11 35+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 14 11 15+                                          , SrcSpan "tests/examples/UnicodeSubscript.hs" 11 34 11 35+                                          ]+                                      }+                                    (InfixApp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSubscript.hs" 11 15 11 34+                                         , srcInfoPoints = []+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSubscript.hs" 11 15 11 23+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     11+                                                     15+                                                     11+                                                     21+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        11+                                                        15+                                                        11+                                                        21+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/UnicodeSubscript.hs"+                                                           11+                                                           15+                                                           11+                                                           21+                                                     , srcInfoPoints = []+                                                     }+                                                   "pointX")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     11+                                                     22+                                                     11+                                                     23+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        11+                                                        22+                                                        11+                                                        23+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/UnicodeSubscript.hs"+                                                           11+                                                           22+                                                           11+                                                           23+                                                     , srcInfoPoints = []+                                                     }+                                                   "x"))))+                                       (QVarOp+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSubscript.hs" 11 24 11 25+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     11+                                                     24+                                                     11+                                                     25+                                               , srcInfoPoints = []+                                               }+                                             (Symbol+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        11+                                                        24+                                                        11+                                                        25+                                                  , srcInfoPoints = []+                                                  }+                                                "-")))+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSubscript.hs" 11 26 11 34+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     11+                                                     26+                                                     11+                                                     32+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        11+                                                        26+                                                        11+                                                        32+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/UnicodeSubscript.hs"+                                                           11+                                                           26+                                                           11+                                                           32+                                                     , srcInfoPoints = []+                                                     }+                                                   "pointX")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     11+                                                     33+                                                     11+                                                     34+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        11+                                                        33+                                                        11+                                                        34+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/UnicodeSubscript.hs"+                                                           11+                                                           33+                                                           11+                                                           34+                                                     , srcInfoPoints = []+                                                     }+                                                   "y"))))))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSubscript.hs" 11 35 11 36+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSubscript.hs" 11 35 11 36+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSubscript.hs" 11 35 11 36+                                            , srcInfoPoints = []+                                            }+                                          "^")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSubscript.hs" 11 36 11 37+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSubscript.hs" 11 36 11 37+                                         , srcInfoPoints = []+                                         }+                                       2+                                       "2"))))+                           Nothing+                       , PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeSubscript.hs" 12 9 12 37+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSubscript.hs" 12 9 12 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeSubscript.hs" 12 9 12 11+                                   , srcInfoPoints = []+                                   }+                                 "t\8322"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSubscript.hs" 12 12 12 37+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 12 12 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeSubscript.hs" 12 14 12 37+                                   , srcInfoPoints = []+                                   }+                                 (Paren+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSubscript.hs" 12 14 12 35+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 14 12 15+                                          , SrcSpan "tests/examples/UnicodeSubscript.hs" 12 34 12 35+                                          ]+                                      }+                                    (InfixApp+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSubscript.hs" 12 15 12 34+                                         , srcInfoPoints = []+                                         }+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSubscript.hs" 12 15 12 23+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     12+                                                     15+                                                     12+                                                     21+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        12+                                                        15+                                                        12+                                                        21+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/UnicodeSubscript.hs"+                                                           12+                                                           15+                                                           12+                                                           21+                                                     , srcInfoPoints = []+                                                     }+                                                   "pointY")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     12+                                                     22+                                                     12+                                                     23+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        12+                                                        22+                                                        12+                                                        23+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/UnicodeSubscript.hs"+                                                           12+                                                           22+                                                           12+                                                           23+                                                     , srcInfoPoints = []+                                                     }+                                                   "x"))))+                                       (QVarOp+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSubscript.hs" 12 24 12 25+                                            , srcInfoPoints = []+                                            }+                                          (UnQual+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     12+                                                     24+                                                     12+                                                     25+                                               , srcInfoPoints = []+                                               }+                                             (Symbol+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        12+                                                        24+                                                        12+                                                        25+                                                  , srcInfoPoints = []+                                                  }+                                                "-")))+                                       (App+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSubscript.hs" 12 26 12 34+                                            , srcInfoPoints = []+                                            }+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     12+                                                     26+                                                     12+                                                     32+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        12+                                                        26+                                                        12+                                                        32+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/UnicodeSubscript.hs"+                                                           12+                                                           26+                                                           12+                                                           32+                                                     , srcInfoPoints = []+                                                     }+                                                   "pointY")))+                                          (Var+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan+                                                     "tests/examples/UnicodeSubscript.hs"+                                                     12+                                                     33+                                                     12+                                                     34+                                               , srcInfoPoints = []+                                               }+                                             (UnQual+                                                SrcSpanInfo+                                                  { srcInfoSpan =+                                                      SrcSpan+                                                        "tests/examples/UnicodeSubscript.hs"+                                                        12+                                                        33+                                                        12+                                                        34+                                                  , srcInfoPoints = []+                                                  }+                                                (Ident+                                                   SrcSpanInfo+                                                     { srcInfoSpan =+                                                         SrcSpan+                                                           "tests/examples/UnicodeSubscript.hs"+                                                           12+                                                           33+                                                           12+                                                           34+                                                     , srcInfoPoints = []+                                                     }+                                                   "y"))))))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSubscript.hs" 12 35 12 36+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSubscript.hs" 12 35 12 36+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSubscript.hs" 12 35 12 36+                                            , srcInfoPoints = []+                                            }+                                          "^")))+                                 (Lit+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSubscript.hs" 12 36 12 37+                                      , srcInfoPoints = []+                                      }+                                    (Int+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSubscript.hs" 12 36 12 37+                                         , srcInfoPoints = []+                                         }+                                       2+                                       "2"))))+                           Nothing+                       ])+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeSubscript.hs" 13 8 13 22+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSubscript.hs" 13 8 13 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSubscript.hs" 13 8 13 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSubscript.hs" 13 8 13 12+                                  , srcInfoPoints = []+                                  }+                                "sqrt")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSubscript.hs" 13 13 13 14+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSubscript.hs" 13 13 13 14+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSubscript.hs" 13 13 13 14+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSubscript.hs" 13 15 13 22+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSubscript.hs" 13 15 13 17+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSubscript.hs" 13 15 13 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeSubscript.hs" 13 15 13 17+                                     , srcInfoPoints = []+                                     }+                                   "t\8321")))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSubscript.hs" 13 18 13 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSubscript.hs" 13 18 13 19+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeSubscript.hs" 13 18 13 19+                                     , srcInfoPoints = []+                                     }+                                   "+")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSubscript.hs" 13 20 13 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSubscript.hs" 13 20 13 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeSubscript.hs" 13 20 13 22+                                     , srcInfoPoints = []+                                     }+                                   "t\8322")))))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/UnicodeSubscript.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeSubscript.hs.prettyprinter.golden view
@@ -0,0 +1,11 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++data Point = Point{pointX, pointY :: Double, name :: String}+               deriving (Show)++distance :: Point -> Point -> Double+distance x y+  = let t = (pointX x - pointX y) ^ 2+        t‚ = (pointY x - pointY y) ^ 2+      in sqrt $ t + t‚
+ tests/examples/UnicodeSuperscript.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE UnicodeSyntax #-}++dumy ∷ Double → Double → Double+dumy a b =+    let a² = a ★ a+        b² = b ★ b+    in sqrt $ a² + b²
+ tests/examples/UnicodeSuperscript.hs.exactprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE UnicodeSyntax #-}++dumy ::Double ->Double ->Double+dumy a b =+    let a² = a  a+        b² = b  b+    in sqrt $ a² + b²+
+ tests/examples/UnicodeSuperscript.hs.parser.golden view
@@ -0,0 +1,498 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 1 8 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 1 4 1+            , SrcSpan "tests/examples/UnicodeSuperscript.hs" 8 1 8 1+            , SrcSpan "tests/examples/UnicodeSuperscript.hs" 8 1 8 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 1 1 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 1 1 13+                , SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 28 1 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnicodeSyntax"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 6 3 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 5+                , srcInfoPoints = []+                }+              "dumy"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 8 3 32+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 15 3 16 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 8 3 14+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 8 3 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 8 3 14+                        , srcInfoPoints = []+                        }+                      "Double")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 17 3 32+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 24 3 25 ]+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 17 3 23+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 17 3 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 17 3 23+                           , srcInfoPoints = []+                           }+                         "Double")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 26 3 32+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 26 3 32+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan =+                               SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 26 3 32+                           , srcInfoPoints = []+                           }+                         "Double")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 1 7 22+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 1 7 22+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 1 4 5+                   , srcInfoPoints = []+                   }+                 "dumy")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 6 4 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 6 4 7+                       , srcInfoPoints = []+                       }+                     "a")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan =+                        SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 8 4 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan =+                           SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 8 4 9+                       , srcInfoPoints = []+                       }+                     "b")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 10 7 22+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 10 4 11 ]+                   }+                 (Let+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 5 7 22+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 5 5 8+                          , SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 5 7 7+                          ]+                      }+                    (BDecls+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 6 19+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 5 9+                             , SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 9 6 9+                             , SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 5 7 0+                             ]+                         }+                       [ PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 5 19+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 5 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 5 11+                                   , srcInfoPoints = []+                                   }+                                 "a\178"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 12 5 19+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 12 5 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 14 5 19+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 14 5 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSuperscript.hs" 5 14 5 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSuperscript.hs" 5 14 5 15+                                            , srcInfoPoints = []+                                            }+                                          "a")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 16 5 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSuperscript.hs" 5 16 5 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSuperscript.hs" 5 16 5 17+                                            , srcInfoPoints = []+                                            }+                                          "\9733")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 18 5 19+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSuperscript.hs" 5 18 5 19+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSuperscript.hs" 5 18 5 19+                                            , srcInfoPoints = []+                                            }+                                          "a")))))+                           Nothing+                       , PatBind+                           SrcSpanInfo+                             { srcInfoSpan =+                                 SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 9 6 19+                             , srcInfoPoints = []+                             }+                           (PVar+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 9 6 11+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 9 6 11+                                   , srcInfoPoints = []+                                   }+                                 "b\178"))+                           (UnGuardedRhs+                              SrcSpanInfo+                                { srcInfoSpan =+                                    SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 12 6 19+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 12 6 13 ]+                                }+                              (InfixApp+                                 SrcSpanInfo+                                   { srcInfoSpan =+                                       SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 14 6 19+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 14 6 15+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSuperscript.hs" 6 14 6 15+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSuperscript.hs" 6 14 6 15+                                            , srcInfoPoints = []+                                            }+                                          "b")))+                                 (QVarOp+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 16 6 17+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSuperscript.hs" 6 16 6 17+                                         , srcInfoPoints = []+                                         }+                                       (Symbol+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSuperscript.hs" 6 16 6 17+                                            , srcInfoPoints = []+                                            }+                                          "\9733")))+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan =+                                          SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 18 6 19+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan+                                               "tests/examples/UnicodeSuperscript.hs" 6 18 6 19+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan+                                                  "tests/examples/UnicodeSuperscript.hs" 6 18 6 19+                                            , srcInfoPoints = []+                                            }+                                          "b")))))+                           Nothing+                       ])+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 8 7 22+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 8 7 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 8 7 12+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 8 7 12+                                  , srcInfoPoints = []+                                  }+                                "sqrt")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 13 7 14+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 13 7 14+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 13 7 14+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (InfixApp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 15 7 22+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 15 7 17+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 15 7 17+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 15 7 17+                                     , srcInfoPoints = []+                                     }+                                   "a\178")))+                          (QVarOp+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 18 7 19+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 18 7 19+                                  , srcInfoPoints = []+                                  }+                                (Symbol+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 18 7 19+                                     , srcInfoPoints = []+                                     }+                                   "+")))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 20 7 22+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 20 7 22+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 20 7 22+                                     , srcInfoPoints = []+                                     }+                                   "b\178")))))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/UnicodeSuperscript.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeSuperscript.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE UnicodeSyntax #-}++dumy :: Double -> Double -> Double+dumy a b+  = let a² = a  a+        b² = b  b+      in sqrt $ a² + b²
+ tests/examples/UnicodeSyntax.hs view
@@ -0,0 +1,15 @@+{-# LANGUAGE UnicodeSyntax, ExplicitForAll #-}+module UnicodeSyntax where++import System.Environment (getArgs)++main ∷ IO ()+main = do+  as ← getArgs+  print $ test 0++test ∷ Int → Bool+test x = x*5 == x+8++id1 ∷ ∀ a . a → a+id1 x = x
+ tests/examples/UnicodeSyntax.hs.exactprinter.golden view
@@ -0,0 +1,16 @@+{-# LANGUAGE UnicodeSyntax, ExplicitForAll #-}+module UnicodeSyntax where++import System.Environment (getArgs)++main ::IO ()+main = do+  as <-getArgs+  print $ test 0++test ::Int ->Bool+test x = x*5 == x+8++id1 ::foralla.a->a+id1 x = x+
+ tests/examples/UnicodeSyntax.hs.parser.golden view
@@ -0,0 +1,678 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 1 1 16 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/UnicodeSyntax.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 2 1 2 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 2 1 2 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 4 1 4 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 6 1 6 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 7 1 7 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 11 1 11 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 12 1 12 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 14 1 14 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 15 1 15 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 16 1 16 1+            , SrcSpan "tests/examples/UnicodeSyntax.hs" 16 1 16 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 2 1 2 27+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/UnicodeSyntax.hs" 2 1 2 7+                  , SrcSpan "tests/examples/UnicodeSyntax.hs" 2 22 2 27+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 2 8 2 21+                 , srcInfoPoints = []+                 }+               "UnicodeSyntax")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 1 1 1 47+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeSyntax.hs" 1 1 1 13+                , SrcSpan "tests/examples/UnicodeSyntax.hs" 1 27 1 28+                , SrcSpan "tests/examples/UnicodeSyntax.hs" 1 44 1 47+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 1 14 1 27+                , srcInfoPoints = []+                }+              "UnicodeSyntax"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 1 29 1 43+                , srcInfoPoints = []+                }+              "ExplicitForAll"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 1 4 36+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/UnicodeSyntax.hs" 4 1 4 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 8 4 26+                  , srcInfoPoints = []+                  }+                "System.Environment"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs =+              Just+                (ImportSpecList+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 27 4 36+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/UnicodeSyntax.hs" 4 27 4 28+                         , SrcSpan "tests/examples/UnicodeSyntax.hs" 4 35 4 36+                         ]+                     }+                   False+                   [ IVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 28 4 35+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 28 4 35+                            , srcInfoPoints = []+                            }+                          "getArgs")+                   ])+          }+      ]+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 1 6 13+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeSyntax.hs" 6 6 6 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 1 6 5+                , srcInfoPoints = []+                }+              "main"+          ]+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 8 6 13+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 8 6 10+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 8 6 10+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 8 6 10+                        , srcInfoPoints = []+                        }+                      "IO")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 13+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 12+                      , SrcSpan "tests/examples/UnicodeSyntax.hs" 6 12 6 13+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 13+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 12+                         , SrcSpan "tests/examples/UnicodeSyntax.hs" 6 12 6 13+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 13+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 12+                            , SrcSpan "tests/examples/UnicodeSyntax.hs" 6 12 6 13+                            ]+                        }))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 1 9 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 1 7 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 1 7 5+                  , srcInfoPoints = []+                  }+                "main"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 6 9 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnicodeSyntax.hs" 7 6 7 7 ]+               }+             (Do+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 8 9 17+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnicodeSyntax.hs" 7 8 7 10+                      , SrcSpan "tests/examples/UnicodeSyntax.hs" 8 3 8 3+                      , SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 3+                      , SrcSpan "tests/examples/UnicodeSyntax.hs" 11 1 11 0+                      ]+                  }+                [ Generator+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 3 8 15+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/UnicodeSyntax.hs" 8 6 8 7 ]+                      }+                    (PVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 3 8 5+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 3 8 5+                            , srcInfoPoints = []+                            }+                          "as"))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 8 8 15+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 8 8 15+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 8 8 15+                               , srcInfoPoints = []+                               }+                             "getArgs")))+                , Qualifier+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 17+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 17+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 8+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 8+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 8+                                  , srcInfoPoints = []+                                  }+                                "print")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 9 9 10+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 9 9 10+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 9 9 10+                                  , srcInfoPoints = []+                                  }+                                "$")))+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 11 9 17+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 11 9 15+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSyntax.hs" 9 11 9 15+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/UnicodeSyntax.hs" 9 11 9 15+                                     , srcInfoPoints = []+                                     }+                                   "test")))+                          (Lit+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 16 9 17+                               , srcInfoPoints = []+                               }+                             (Int+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSyntax.hs" 9 16 9 17+                                  , srcInfoPoints = []+                                  }+                                0+                                "0"))))+                ]))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSyntax.hs" 11 1 11 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 6 11 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 11 1 11 5+                , srcInfoPoints = []+                }+              "test"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnicodeSyntax.hs" 11 8 11 18+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 12 11 13 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeSyntax.hs" 11 8 11 11+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSyntax.hs" 11 8 11 11+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSyntax.hs" 11 8 11 11+                        , srcInfoPoints = []+                        }+                      "Int")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeSyntax.hs" 11 14 11 18+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSyntax.hs" 11 14 11 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSyntax.hs" 11 14 11 18+                        , srcInfoPoints = []+                        }+                      "Bool"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSyntax.hs" 12 1 12 20+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSyntax.hs" 12 1 12 20+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 12 1 12 5+                   , srcInfoPoints = []+                   }+                 "test")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 12 6 12 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 12 6 12 7+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeSyntax.hs" 12 8 12 20+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 8 12 9 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 20+                      , srcInfoPoints = []+                      }+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 13+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 11+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 11+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 11+                                  , srcInfoPoints = []+                                  }+                                "x")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSyntax.hs" 12 11 12 12+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSyntax.hs" 12 11 12 12+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSyntax.hs" 12 11 12 12+                                  , srcInfoPoints = []+                                  }+                                "*")))+                       (Lit+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSyntax.hs" 12 12 12 13+                            , srcInfoPoints = []+                            }+                          (Int+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSyntax.hs" 12 12 12 13+                               , srcInfoPoints = []+                               }+                             5+                             "5")))+                    (QVarOp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeSyntax.hs" 12 14 12 16+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSyntax.hs" 12 14 12 16+                            , srcInfoPoints = []+                            }+                          (Symbol+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSyntax.hs" 12 14 12 16+                               , srcInfoPoints = []+                               }+                             "==")))+                    (InfixApp+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeSyntax.hs" 12 17 12 20+                         , srcInfoPoints = []+                         }+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSyntax.hs" 12 17 12 18+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSyntax.hs" 12 17 12 18+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSyntax.hs" 12 17 12 18+                                  , srcInfoPoints = []+                                  }+                                "x")))+                       (QVarOp+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSyntax.hs" 12 18 12 19+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSyntax.hs" 12 18 12 19+                               , srcInfoPoints = []+                               }+                             (Symbol+                                SrcSpanInfo+                                  { srcInfoSpan =+                                      SrcSpan "tests/examples/UnicodeSyntax.hs" 12 18 12 19+                                  , srcInfoPoints = []+                                  }+                                "+")))+                       (Lit+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSyntax.hs" 12 19 12 20+                            , srcInfoPoints = []+                            }+                          (Int+                             SrcSpanInfo+                               { srcInfoSpan =+                                   SrcSpan "tests/examples/UnicodeSyntax.hs" 12 19 12 20+                               , srcInfoPoints = []+                               }+                             8+                             "8")))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSyntax.hs" 14 1 14 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 5 14 6 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 14 1 14 4+                , srcInfoPoints = []+                }+              "id1"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnicodeSyntax.hs" 14 7 14 18+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 7 14 8+                   , SrcSpan "tests/examples/UnicodeSyntax.hs" 14 11 14 12+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/UnicodeSyntax.hs" 14 9 14 10+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeSyntax.hs" 14 9 14 10+                         , srcInfoPoints = []+                         }+                       "a")+                ])+             Nothing+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnicodeSyntax.hs" 14 13 14 18+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 15 14 16 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSyntax.hs" 14 13 14 14+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSyntax.hs" 14 13 14 14+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnicodeSyntax.hs" 14 17 14 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/UnicodeSyntax.hs" 14 17 14 18+                        , srcInfoPoints = []+                        }+                      "a"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnicodeSyntax.hs" 15 1 15 10+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnicodeSyntax.hs" 15 1 15 10+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 15 1 15 4+                   , srcInfoPoints = []+                   }+                 "id1")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 15 5 15 6+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 15 5 15 6+                       , srcInfoPoints = []+                       }+                     "x")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/UnicodeSyntax.hs" 15 7 15 10+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/UnicodeSyntax.hs" 15 7 15 8 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/UnicodeSyntax.hs" 15 9 15 10+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/UnicodeSyntax.hs" 15 9 15 10+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/UnicodeSyntax.hs" 15 9 15 10+                            , srcInfoPoints = []+                            }+                          "x"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/UnicodeSyntax.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeSyntax.hs.prettyprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE UnicodeSyntax, ExplicitForAll #-}+module UnicodeSyntax where+import System.Environment (getArgs)++main :: IO ()+main+  = do as <- getArgs+       print $ test 0++test :: Int -> Bool+test x = x * 5 == x + 8++id1 :: forall a . a -> a+id1 x = x
+ tests/examples/UnindentedPragmaClose.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE MultiParamTypeClasses+#-}+f :: Int+f = 4
+ tests/examples/UnindentedPragmaClose.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnindentedPragmaClose.hs.parser.golden view
@@ -0,0 +1,114 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan =+            SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 1 1 1+            , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 1+            , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 1 4 1+            , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 5 1 5 1+            , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 1 2 4+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 1 1 13+                , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 2 1 2 1+                , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 2 1 2 4+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 14 1 35+                , srcInfoPoints = []+                }+              "MultiParamTypeClasses"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 9+            , srcInfoPoints =+                [ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 3 3 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 6 3 9+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 6 3 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 6 3 9+                     , srcInfoPoints = []+                     }+                   "Int")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 1 4 6+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 1 4 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 1 4 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 3 4 6+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 3 4 4 ]+               }+             (Lit+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 5 4 6+                  , srcInfoPoints = []+                  }+                (Int+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 5 4 6+                     , srcInfoPoints = []+                     }+                   4+                   "4")))+          Nothing+      ]+  , []+  )
+ tests/examples/UnindentedPragmaClose.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnindentedPragmaClose.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE MultiParamTypeClasses #-}++f :: Int+f = 4
+ tests/examples/Unpack.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE GADTs #-}++data CmmNode e x where+        CmmEntry :: {-# UNPACK #-} !Int -> CmmNode e x++data UI = UI {-# UNPACK #-} !Int
+ tests/examples/Unpack.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unpack.hs.parser.golden view
@@ -0,0 +1,274 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 1 1 7 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Unpack.hs" 1 1 1 1+            , SrcSpan "tests/examples/Unpack.hs" 3 1 3 1+            , SrcSpan "tests/examples/Unpack.hs" 3 1 3 1+            , SrcSpan "tests/examples/Unpack.hs" 3 1 3 1+            , SrcSpan "tests/examples/Unpack.hs" 6 1 6 1+            , SrcSpan "tests/examples/Unpack.hs" 7 1 7 1+            , SrcSpan "tests/examples/Unpack.hs" 7 1 7 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 1 1 1 23+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unpack.hs" 1 1 1 13+                , SrcSpan "tests/examples/Unpack.hs" 1 20 1 23+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 1 14 1 19+                , srcInfoPoints = []+                }+              "GADTs"+          ]+      ]+      []+      [ GDataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 1 6 0+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Unpack.hs" 3 18 3 23+                , SrcSpan "tests/examples/Unpack.hs" 4 9 4 9+                , SrcSpan "tests/examples/Unpack.hs" 6 1 6 0+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 1 3 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 6 3 17+               , srcInfoPoints = []+               }+             (DHApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 6 3 15+                  , srcInfoPoints = []+                  }+                (DHead+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 6 3 13+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 6 3 13+                        , srcInfoPoints = []+                        }+                      "CmmNode"))+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 14 3 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 14 3 15+                        , srcInfoPoints = []+                        }+                      "e")))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 16 3 17+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 16 3 17+                     , srcInfoPoints = []+                     }+                   "x")))+          Nothing+          [ GadtDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 9 4 55+                , srcInfoPoints = [ SrcSpan "tests/examples/Unpack.hs" 4 18 4 20 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 9 4 17+                   , srcInfoPoints = []+                   }+                 "CmmEntry")+              Nothing+              Nothing+              Nothing+              (TyFun+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 21 4 55+                   , srcInfoPoints = [ SrcSpan "tests/examples/Unpack.hs" 4 41 4 43 ]+                   }+                 (TyBang+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 21 4 40+                      , srcInfoPoints = []+                      }+                    (BangedTy+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 36 4 37+                         , srcInfoPoints = []+                         })+                    (Unpack+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 21 4 35+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Unpack.hs" 4 21 4 31+                             , SrcSpan "tests/examples/Unpack.hs" 4 32 4 35+                             ]+                         })+                    (TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 37 4 40+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 37 4 40+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 37 4 40+                               , srcInfoPoints = []+                               }+                             "Int"))))+                 (TyApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 55+                      , srcInfoPoints = []+                      }+                    (TyApp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 53+                         , srcInfoPoints = []+                         }+                       (TyCon+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 51+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 51+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 51+                                  , srcInfoPoints = []+                                  }+                                "CmmNode")))+                       (TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 52 4 53+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 52 4 53+                               , srcInfoPoints = []+                               }+                             "e")))+                    (TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 54 4 55+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 54 4 55+                            , srcInfoPoints = []+                            }+                          "x"))))+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 1 6 33+            , srcInfoPoints = [ SrcSpan "tests/examples/Unpack.hs" 6 9 6 10 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 1 6 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 6 6 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 6 6 8+                  , srcInfoPoints = []+                  }+                "UI"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 11 6 33+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 11 6 33+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 11 6 13+                      , srcInfoPoints = []+                      }+                    "UI")+                 [ TyBang+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 14 6 33+                       , srcInfoPoints = []+                       }+                     (BangedTy+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 29 6 30+                          , srcInfoPoints = []+                          })+                     (Unpack+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 14 6 28+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Unpack.hs" 6 14 6 24+                              , SrcSpan "tests/examples/Unpack.hs" 6 25 6 28+                              ]+                          })+                     (TyCon+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 30 6 33+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 30 6 33+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 30 6 33+                                , srcInfoPoints = []+                                }+                              "Int")))+                 ])+          ]+          []+      ]+  , []+  )
+ tests/examples/Unpack.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unpack.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE GADTs #-}++data CmmNode e x where+        CmmEntry :: {-# UNPACK #-} !Int -> CmmNode e x++data UI = UI {-# UNPACK #-} !Int
+ tests/examples/ViewPatterns.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE ViewPatterns #-}+f (id -> Just _) "" = ""++g (id -> True) = False+
+ tests/examples/ViewPatterns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ViewPatterns.hs.parser.golden view
@@ -0,0 +1,229 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 1 1 6 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/ViewPatterns.hs" 1 1 1 1+            , SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 1+            , SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 1+            , SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 1+            , SrcSpan "tests/examples/ViewPatterns.hs" 4 1 4 1+            , SrcSpan "tests/examples/ViewPatterns.hs" 6 1 6 1+            , SrcSpan "tests/examples/ViewPatterns.hs" 6 1 6 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/ViewPatterns.hs" 1 1 1 13+                , SrcSpan "tests/examples/ViewPatterns.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "ViewPatterns"+          ]+      ]+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 25+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 25+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 2+                   , srcInfoPoints = []+                   }+                 "f")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 3 2 17+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/ViewPatterns.hs" 2 3 2 4+                        , SrcSpan "tests/examples/ViewPatterns.hs" 2 16 2 17+                        ]+                    }+                  (PViewPat+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 4 2 16+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/ViewPatterns.hs" 2 7 2 9 ]+                       }+                     (Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 4 2 6+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 4 2 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 4 2 6+                                , srcInfoPoints = []+                                }+                              "id")))+                     (PApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 10 2 16+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 10 2 14+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 10 2 14+                                , srcInfoPoints = []+                                }+                              "Just"))+                        [ PWildCard+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 15 2 16+                              , srcInfoPoints = []+                              }+                        ]))+              , PLit+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 18 2 20+                    , srcInfoPoints = []+                    }+                  (Signless+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 18 2 20+                       , srcInfoPoints = []+                       })+                  (String+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 18 2 20+                       , srcInfoPoints = []+                       }+                     ""+                     "")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 21 2 25+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ViewPatterns.hs" 2 21 2 22 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 23 2 25+                      , srcInfoPoints = []+                      }+                    (String+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 23 2 25+                         , srcInfoPoints = []+                         }+                       ""+                       "")))+              Nothing+          ]+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 1 4 23+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 1 4 23+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 1 4 2+                   , srcInfoPoints = []+                   }+                 "g")+              [ PParen+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 3 4 15+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/ViewPatterns.hs" 4 3 4 4+                        , SrcSpan "tests/examples/ViewPatterns.hs" 4 14 4 15+                        ]+                    }+                  (PViewPat+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 4 4 14+                       , srcInfoPoints =+                           [ SrcSpan "tests/examples/ViewPatterns.hs" 4 7 4 9 ]+                       }+                     (Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 4 4 6+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 4 4 6+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 4 4 6+                                , srcInfoPoints = []+                                }+                              "id")))+                     (PApp+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 10 4 14+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 10 4 14+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 10 4 14+                                , srcInfoPoints = []+                                }+                              "True"))+                        []))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 16 4 23+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/ViewPatterns.hs" 4 16 4 17 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 18 4 23+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 18 4 23+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 18 4 23+                            , srcInfoPoints = []+                            }+                          "False"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/ViewPatterns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ViewPatterns.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE ViewPatterns #-}+f (id -> Just _) "" = ""+g (id -> True) = False
+ tests/examples/Vta1.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE TypeApplications, ScopedTypeVariables, PolyKinds,+             TypeFamilies, RankNTypes,+             FlexibleContexts #-}+-- tests about visible type application++module Vta1 where++quad :: a -> b -> c -> d -> (a, b, c, d)+quad = (,,,)++silly = quad @_ @Bool @Char @_ 5 True 'a' "Hello"++pairup_nosig x y = (x, y)++pairup_sig :: a -> b -> (a,b)+pairup_sig u w = (u, w)++answer_sig = pairup_sig @Bool @Int False 7 --+-- (False, 7) :: (Bool, Int)++answer_read = show (read @Int "3") -- "3" :: String+answer_show = show @Integer (read "5") -- "5" :: String+answer_showread = show @Int (read @Int "7") -- "7" :: String++intcons a = (:) @Int a++intpair x y = pairup_sig @Int x y++answer_pairup = pairup_sig @Int 5 True -- (5, True) :: (Int, Bool)+answer_intpair = intpair 1 "hello" -- (1, "hello") :: (Int, String)+answer_intcons = intcons 7 []      -- [7] :: [Int]++type family F a+type instance F Char = Bool++g :: F a -> a+g _ = undefined++f :: Char+f = g True++answer = g @Char False++mapSame :: forall b. (forall a. a -> a) -> [b] -> [b]+mapSame _ [] = []+mapSame fun (x:xs) = fun @b x : (mapSame @b fun xs)++pair :: forall a. a-> (forall b. b -> (a, b))+pair x y = (x, y)++b = pair @Int 3 @Bool True+c = mapSame id [1,2,3]+d = pair 3 @Bool True++pairnum :: forall a. Num a => forall b. b -> (a, b)+pairnum = pair 3++e = (pair 3 :: forall a. Num a => forall b. b -> (a, b)) @Int @Bool True+h = pairnum @Int @Bool True++data First (a :: * -> *) = F+data Proxy (a :: k) = P -- This expands to P (kind variable) (type variable)+data Three (a :: * -> k -> *) = T++foo :: Proxy a -> Int+foo _ = 0++first :: First a -> Int+first _ = 0++fTest = first F+fMaybe = first @Maybe F++test = foo P+bar = foo @Bool P -- should work++too :: Three a -> Int+too _ = 3++threeBase = too T+threeOk = too @Either T++blah = Nothing @Int++newtype N = MkN { unMkN :: forall a. Show a => a -> String }++n = MkN show++boo = unMkN n @Bool++boo2 :: forall (a :: * -> *) . Proxy a -> Bool+boo2 _ = False++base = boo2 P+bar'= boo2 @Maybe P -- should work
+ tests/examples/Vta1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Vta1.hs.parser.golden view
@@ -0,0 +1,5436 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 1 96 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Vta1.hs" 1 1 1 1+            , SrcSpan "tests/examples/Vta1.hs" 6 1 6 1+            , SrcSpan "tests/examples/Vta1.hs" 6 1 6 1+            , SrcSpan "tests/examples/Vta1.hs" 8 1 8 1+            , SrcSpan "tests/examples/Vta1.hs" 9 1 9 1+            , SrcSpan "tests/examples/Vta1.hs" 11 1 11 1+            , SrcSpan "tests/examples/Vta1.hs" 13 1 13 1+            , SrcSpan "tests/examples/Vta1.hs" 15 1 15 1+            , SrcSpan "tests/examples/Vta1.hs" 16 1 16 1+            , SrcSpan "tests/examples/Vta1.hs" 18 1 18 1+            , SrcSpan "tests/examples/Vta1.hs" 21 1 21 1+            , SrcSpan "tests/examples/Vta1.hs" 22 1 22 1+            , SrcSpan "tests/examples/Vta1.hs" 23 1 23 1+            , SrcSpan "tests/examples/Vta1.hs" 25 1 25 1+            , SrcSpan "tests/examples/Vta1.hs" 27 1 27 1+            , SrcSpan "tests/examples/Vta1.hs" 29 1 29 1+            , SrcSpan "tests/examples/Vta1.hs" 30 1 30 1+            , SrcSpan "tests/examples/Vta1.hs" 31 1 31 1+            , SrcSpan "tests/examples/Vta1.hs" 33 1 33 1+            , SrcSpan "tests/examples/Vta1.hs" 34 1 34 1+            , SrcSpan "tests/examples/Vta1.hs" 36 1 36 1+            , SrcSpan "tests/examples/Vta1.hs" 37 1 37 1+            , SrcSpan "tests/examples/Vta1.hs" 39 1 39 1+            , SrcSpan "tests/examples/Vta1.hs" 40 1 40 1+            , SrcSpan "tests/examples/Vta1.hs" 42 1 42 1+            , SrcSpan "tests/examples/Vta1.hs" 44 1 44 1+            , SrcSpan "tests/examples/Vta1.hs" 45 1 45 1+            , SrcSpan "tests/examples/Vta1.hs" 46 1 46 1+            , SrcSpan "tests/examples/Vta1.hs" 48 1 48 1+            , SrcSpan "tests/examples/Vta1.hs" 49 1 49 1+            , SrcSpan "tests/examples/Vta1.hs" 51 1 51 1+            , SrcSpan "tests/examples/Vta1.hs" 52 1 52 1+            , SrcSpan "tests/examples/Vta1.hs" 53 1 53 1+            , SrcSpan "tests/examples/Vta1.hs" 55 1 55 1+            , SrcSpan "tests/examples/Vta1.hs" 56 1 56 1+            , SrcSpan "tests/examples/Vta1.hs" 58 1 58 1+            , SrcSpan "tests/examples/Vta1.hs" 59 1 59 1+            , SrcSpan "tests/examples/Vta1.hs" 61 1 61 1+            , SrcSpan "tests/examples/Vta1.hs" 62 1 62 1+            , SrcSpan "tests/examples/Vta1.hs" 63 1 63 1+            , SrcSpan "tests/examples/Vta1.hs" 65 1 65 1+            , SrcSpan "tests/examples/Vta1.hs" 66 1 66 1+            , SrcSpan "tests/examples/Vta1.hs" 68 1 68 1+            , SrcSpan "tests/examples/Vta1.hs" 69 1 69 1+            , SrcSpan "tests/examples/Vta1.hs" 71 1 71 1+            , SrcSpan "tests/examples/Vta1.hs" 72 1 72 1+            , SrcSpan "tests/examples/Vta1.hs" 74 1 74 1+            , SrcSpan "tests/examples/Vta1.hs" 75 1 75 1+            , SrcSpan "tests/examples/Vta1.hs" 77 1 77 1+            , SrcSpan "tests/examples/Vta1.hs" 78 1 78 1+            , SrcSpan "tests/examples/Vta1.hs" 80 1 80 1+            , SrcSpan "tests/examples/Vta1.hs" 81 1 81 1+            , SrcSpan "tests/examples/Vta1.hs" 83 1 83 1+            , SrcSpan "tests/examples/Vta1.hs" 85 1 85 1+            , SrcSpan "tests/examples/Vta1.hs" 87 1 87 1+            , SrcSpan "tests/examples/Vta1.hs" 89 1 89 1+            , SrcSpan "tests/examples/Vta1.hs" 91 1 91 1+            , SrcSpan "tests/examples/Vta1.hs" 92 1 92 1+            , SrcSpan "tests/examples/Vta1.hs" 94 1 94 1+            , SrcSpan "tests/examples/Vta1.hs" 95 1 95 1+            , SrcSpan "tests/examples/Vta1.hs" 96 1 96 1+            , SrcSpan "tests/examples/Vta1.hs" 96 1 96 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 6 1 6 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/Vta1.hs" 6 1 6 7+                  , SrcSpan "tests/examples/Vta1.hs" 6 13 6 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 6 8 6 12+                 , srcInfoPoints = []+                 }+               "Vta1")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 1 3 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Vta1.hs" 1 1 1 13+                , SrcSpan "tests/examples/Vta1.hs" 1 30 1 31+                , SrcSpan "tests/examples/Vta1.hs" 1 51 1 52+                , SrcSpan "tests/examples/Vta1.hs" 1 62 1 63+                , SrcSpan "tests/examples/Vta1.hs" 2 26 2 27+                , SrcSpan "tests/examples/Vta1.hs" 2 38 2 39+                , SrcSpan "tests/examples/Vta1.hs" 3 31 3 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 14 1 30+                , srcInfoPoints = []+                }+              "TypeApplications"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 32 1 51+                , srcInfoPoints = []+                }+              "ScopedTypeVariables"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 53 1 62+                , srcInfoPoints = []+                }+              "PolyKinds"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 2 14 2 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 2 28 2 38+                , srcInfoPoints = []+                }+              "RankNTypes"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 3 14 3 30+                , srcInfoPoints = []+                }+              "FlexibleContexts"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 1 8 41+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 6 8 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 1 8 5+                , srcInfoPoints = []+                }+              "quad"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 9 8 41+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 11 8 13 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 9 8 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 9 8 10+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 14 8 41+                  , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 16 8 18 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 14 8 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 14 8 15+                        , srcInfoPoints = []+                        }+                      "b"))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 19 8 41+                     , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 21 8 23 ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 19 8 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 19 8 20+                           , srcInfoPoints = []+                           }+                         "c"))+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 24 8 41+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 26 8 28 ]+                        }+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 24 8 25+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 24 8 25+                              , srcInfoPoints = []+                              }+                            "d"))+                      (TyTuple+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 29 8 41+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Vta1.hs" 8 29 8 30+                               , SrcSpan "tests/examples/Vta1.hs" 8 31 8 32+                               , SrcSpan "tests/examples/Vta1.hs" 8 34 8 35+                               , SrcSpan "tests/examples/Vta1.hs" 8 37 8 38+                               , SrcSpan "tests/examples/Vta1.hs" 8 40 8 41+                               ]+                           }+                         Boxed+                         [ TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 30 8 31+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 30 8 31+                                  , srcInfoPoints = []+                                  }+                                "a")+                         , TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 33 8 34+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 33 8 34+                                  , srcInfoPoints = []+                                  }+                                "b")+                         , TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 36 8 37+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 36 8 37+                                  , srcInfoPoints = []+                                  }+                                "c")+                         , TyVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 39 8 40+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 39 8 40+                                  , srcInfoPoints = []+                                  }+                                "d")+                         ])))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 1 9 13+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 1 9 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 1 9 5+                  , srcInfoPoints = []+                  }+                "quad"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 6 9 13+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 9 6 9 7 ]+               }+             (Con+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 8 9 13+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Vta1.hs" 9 8 9 9+                      , SrcSpan "tests/examples/Vta1.hs" 9 9 9 10+                      , SrcSpan "tests/examples/Vta1.hs" 9 10 9 11+                      , SrcSpan "tests/examples/Vta1.hs" 9 11 9 12+                      , SrcSpan "tests/examples/Vta1.hs" 9 12 9 13+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 8 9 13+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta1.hs" 9 8 9 9+                         , SrcSpan "tests/examples/Vta1.hs" 9 9 9 10+                         , SrcSpan "tests/examples/Vta1.hs" 9 10 9 11+                         , SrcSpan "tests/examples/Vta1.hs" 9 11 9 12+                         , SrcSpan "tests/examples/Vta1.hs" 9 12 9 13+                         ]+                     }+                   (TupleCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 8 9 13+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Vta1.hs" 9 8 9 9+                            , SrcSpan "tests/examples/Vta1.hs" 9 9 9 10+                            , SrcSpan "tests/examples/Vta1.hs" 9 10 9 11+                            , SrcSpan "tests/examples/Vta1.hs" 9 11 9 12+                            , SrcSpan "tests/examples/Vta1.hs" 9 12 9 13+                            ]+                        }+                      Boxed+                      4))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 1 11 50+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 1 11 6+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 1 11 6+                  , srcInfoPoints = []+                  }+                "silly"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 7 11 50+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 11 7 11 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 50+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 42+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 38+                        , srcInfoPoints = []+                        }+                      (App+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 33+                           , srcInfoPoints = []+                           }+                         (App+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 31+                              , srcInfoPoints = []+                              }+                            (App+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 28+                                 , srcInfoPoints = []+                                 }+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 22+                                    , srcInfoPoints = []+                                    }+                                  (App+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 16+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta1.hs" 11 9 11 13+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta1.hs" 11 9 11 13+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta1.hs" 11 9 11 13+                                                , srcInfoPoints = []+                                                }+                                              "quad")))+                                     (TypeApp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta1.hs" 11 14 11 16+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Vta1.hs" 11 14 11 15 ]+                                          }+                                        (TyWildCard+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta1.hs" 11 15 11 16+                                             , srcInfoPoints = []+                                             }+                                           Nothing)))+                                  (TypeApp+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 17 11 22+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Vta1.hs" 11 17 11 18 ]+                                       }+                                     (TyCon+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta1.hs" 11 18 11 22+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta1.hs" 11 18 11 22+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta1.hs" 11 18 11 22+                                                , srcInfoPoints = []+                                                }+                                              "Bool")))))+                               (TypeApp+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 23 11 28+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Vta1.hs" 11 23 11 24 ]+                                    }+                                  (TyCon+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 24 11 28+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta1.hs" 11 24 11 28+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta1.hs" 11 24 11 28+                                             , srcInfoPoints = []+                                             }+                                           "Char")))))+                            (TypeApp+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 29 11 31+                                 , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 11 29 11 30 ]+                                 }+                               (TyWildCard+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 30 11 31+                                    , srcInfoPoints = []+                                    }+                                  Nothing)))+                         (Lit+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 32 11 33+                              , srcInfoPoints = []+                              }+                            (Int+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 32 11 33+                                 , srcInfoPoints = []+                                 }+                               5+                               "5")))+                      (Con+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 34 11 38+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 34 11 38+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 34 11 38+                                 , srcInfoPoints = []+                                 }+                               "True"))))+                   (Lit+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 39 11 42+                        , srcInfoPoints = []+                        }+                      (Char+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 39 11 42+                           , srcInfoPoints = []+                           }+                         'a'+                         "a")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 43 11 50+                     , srcInfoPoints = []+                     }+                   (String+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 43 11 50+                        , srcInfoPoints = []+                        }+                      "Hello"+                      "Hello"))))+          Nothing+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 1 13 26+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 1 13 26+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 1 13 13+                   , srcInfoPoints = []+                   }+                 "pairup_nosig")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 14 13 15+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 14 13 15+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 16 13 17+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 16 13 17+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 18 13 26+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 13 18 13 19 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 20 13 26+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Vta1.hs" 13 20 13 21+                          , SrcSpan "tests/examples/Vta1.hs" 13 22 13 23+                          , SrcSpan "tests/examples/Vta1.hs" 13 25 13 26+                          ]+                      }+                    Boxed+                    [ Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 21 13 22+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 21 13 22+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 21 13 22+                                , srcInfoPoints = []+                                }+                              "x"))+                    , Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 24 13 25+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 24 13 25+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 24 13 25+                                , srcInfoPoints = []+                                }+                              "y"))+                    ]))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 1 15 30+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 15 12 15 14 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 1 15 11+                , srcInfoPoints = []+                }+              "pairup_sig"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 15 15 30+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 15 17 15 19 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 15 15 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 15 15 16+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 20 15 30+                  , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 15 22 15 24 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 20 15 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 20 15 21+                        , srcInfoPoints = []+                        }+                      "b"))+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 25 15 30+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta1.hs" 15 25 15 26+                         , SrcSpan "tests/examples/Vta1.hs" 15 27 15 28+                         , SrcSpan "tests/examples/Vta1.hs" 15 29 15 30+                         ]+                     }+                   Boxed+                   [ TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 26 15 27+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 26 15 27+                            , srcInfoPoints = []+                            }+                          "a")+                   , TyVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 28 15 29+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 28 15 29+                            , srcInfoPoints = []+                            }+                          "b")+                   ])))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 1 16 24+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 1 16 24+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 1 16 11+                   , srcInfoPoints = []+                   }+                 "pairup_sig")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 12 16 13+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 12 16 13+                       , srcInfoPoints = []+                       }+                     "u")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 14 16 15+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 14 16 15+                       , srcInfoPoints = []+                       }+                     "w")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 16 16 24+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 16 16 16 17 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 18 16 24+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Vta1.hs" 16 18 16 19+                          , SrcSpan "tests/examples/Vta1.hs" 16 20 16 21+                          , SrcSpan "tests/examples/Vta1.hs" 16 23 16 24+                          ]+                      }+                    Boxed+                    [ Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 19 16 20+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 19 16 20+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 19 16 20+                                , srcInfoPoints = []+                                }+                              "u"))+                    , Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 22 16 23+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 22 16 23+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 22 16 23+                                , srcInfoPoints = []+                                }+                              "w"))+                    ]))+              Nothing+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 1 18 43+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 1 18 11+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 1 18 11+                  , srcInfoPoints = []+                  }+                "answer_sig"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 12 18 43+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 18 12 18 13 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 43+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 41+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 35+                        , srcInfoPoints = []+                        }+                      (App+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 30+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 24+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 24+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 24+                                    , srcInfoPoints = []+                                    }+                                  "pairup_sig")))+                         (TypeApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 25 18 30+                              , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 18 25 18 26 ]+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 26 18 30+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 26 18 30+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 26 18 30+                                       , srcInfoPoints = []+                                       }+                                     "Bool")))))+                      (TypeApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 31 18 35+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 18 31 18 32 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 32 18 35+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 32 18 35+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 32 18 35+                                    , srcInfoPoints = []+                                    }+                                  "Int")))))+                   (Con+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 36 18 41+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 36 18 41+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 36 18 41+                              , srcInfoPoints = []+                              }+                            "False"))))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 42 18 43+                     , srcInfoPoints = []+                     }+                   (Int+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 42 18 43+                        , srcInfoPoints = []+                        }+                      7+                      "7"))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 1 21 35+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 1 21 12+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 1 21 12+                  , srcInfoPoints = []+                  }+                "answer_read"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 13 21 35+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 21 13 21 14 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 15 21 35+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 15 21 19+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 15 21 19+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 15 21 19+                           , srcInfoPoints = []+                           }+                         "show")))+                (Paren+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 20 21 35+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta1.hs" 21 20 21 21+                         , SrcSpan "tests/examples/Vta1.hs" 21 34 21 35+                         ]+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 34+                        , srcInfoPoints = []+                        }+                      (App+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 30+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 25+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 25+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 25+                                    , srcInfoPoints = []+                                    }+                                  "read")))+                         (TypeApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 26 21 30+                              , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 21 26 21 27 ]+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 27 21 30+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 27 21 30+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 27 21 30+                                       , srcInfoPoints = []+                                       }+                                     "Int")))))+                      (Lit+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 31 21 34+                           , srcInfoPoints = []+                           }+                         (String+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 31 21 34+                              , srcInfoPoints = []+                              }+                            "3"+                            "3"))))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 1 22 39+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 1 22 12+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 1 22 12+                  , srcInfoPoints = []+                  }+                "answer_show"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 13 22 39+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 22 13 22 14 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 39+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 28+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 19+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 19+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 19+                              , srcInfoPoints = []+                              }+                            "show")))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 20 22 28+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 22 20 22 21 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 21 22 28+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 21 22 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 21 22 28+                                 , srcInfoPoints = []+                                 }+                               "Integer")))))+                (Paren+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 29 22 39+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta1.hs" 22 29 22 30+                         , SrcSpan "tests/examples/Vta1.hs" 22 38 22 39+                         ]+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 30 22 38+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 30 22 34+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 30 22 34+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 30 22 34+                                 , srcInfoPoints = []+                                 }+                               "read")))+                      (Lit+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 35 22 38+                           , srcInfoPoints = []+                           }+                         (String+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 35 22 38+                              , srcInfoPoints = []+                              }+                            "5"+                            "5"))))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 1 23 44+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 1 23 16+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 1 23 16+                  , srcInfoPoints = []+                  }+                "answer_showread"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 17 23 44+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 23 17 23 18 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 44+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 28+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 23+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 23+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 23+                              , srcInfoPoints = []+                              }+                            "show")))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 24 23 28+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 23 24 23 25 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 25 23 28+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 25 23 28+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 25 23 28+                                 , srcInfoPoints = []+                                 }+                               "Int")))))+                (Paren+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 29 23 44+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta1.hs" 23 29 23 30+                         , SrcSpan "tests/examples/Vta1.hs" 23 43 23 44+                         ]+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 43+                        , srcInfoPoints = []+                        }+                      (App+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 39+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 34+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 34+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 34+                                    , srcInfoPoints = []+                                    }+                                  "read")))+                         (TypeApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 35 23 39+                              , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 23 35 23 36 ]+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 36 23 39+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 36 23 39+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 36 23 39+                                       , srcInfoPoints = []+                                       }+                                     "Int")))))+                      (Lit+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 40 23 43+                           , srcInfoPoints = []+                           }+                         (String+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 40 23 43+                              , srcInfoPoints = []+                              }+                            "7"+                            "7"))))))+          Nothing+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 1 25 23+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 1 25 23+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 1 25 8+                   , srcInfoPoints = []+                   }+                 "intcons")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 9 25 10+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 9 25 10+                       , srcInfoPoints = []+                       }+                     "a")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 11 25 23+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 25 11 25 12 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 13 25 23+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 13 25 21+                         , srcInfoPoints = []+                         }+                       (Con+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 13 25 16+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Vta1.hs" 25 13 25 14+                                , SrcSpan "tests/examples/Vta1.hs" 25 14 25 15+                                , SrcSpan "tests/examples/Vta1.hs" 25 15 25 16+                                ]+                            }+                          (Special+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 13 25 16+                               , srcInfoPoints =+                                   [ SrcSpan "tests/examples/Vta1.hs" 25 13 25 14+                                   , SrcSpan "tests/examples/Vta1.hs" 25 14 25 15+                                   , SrcSpan "tests/examples/Vta1.hs" 25 15 25 16+                                   ]+                               }+                             (Cons+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 14 25 15+                                  , srcInfoPoints = []+                                  })))+                       (TypeApp+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 17 25 21+                            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 25 17 25 18 ]+                            }+                          (TyCon+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 18 25 21+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 18 25 21+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 18 25 21+                                     , srcInfoPoints = []+                                     }+                                   "Int")))))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 22 25 23+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 22 25 23+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 22 25 23+                               , srcInfoPoints = []+                               }+                             "a")))))+              Nothing+          ]+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 1 27 34+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 1 27 34+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 1 27 8+                   , srcInfoPoints = []+                   }+                 "intpair")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 9 27 10+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 9 27 10+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 11 27 12+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 11 27 12+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 13 27 34+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 27 13 27 14 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 34+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 32+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 30+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 25+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 25+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 25+                                     , srcInfoPoints = []+                                     }+                                   "pairup_sig")))+                          (TypeApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 26 27 30+                               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 27 26 27 27 ]+                               }+                             (TyCon+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 27 27 30+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 27 27 30+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 27 27 30+                                        , srcInfoPoints = []+                                        }+                                      "Int")))))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 31 27 32+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 31 27 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 31 27 32+                                  , srcInfoPoints = []+                                  }+                                "x"))))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 33 27 34+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 33 27 34+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 33 27 34+                               , srcInfoPoints = []+                               }+                             "y")))))+              Nothing+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 1 29 39+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 1 29 14+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 1 29 14+                  , srcInfoPoints = []+                  }+                "answer_pairup"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 15 29 39+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 29 15 29 16 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 39+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 34+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 32+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 27+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 27+                                 , srcInfoPoints = []+                                 }+                               "pairup_sig")))+                      (TypeApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 28 29 32+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 29 28 29 29 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 29 29 32+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 29 29 32+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 29 29 32+                                    , srcInfoPoints = []+                                    }+                                  "Int")))))+                   (Lit+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 33 29 34+                        , srcInfoPoints = []+                        }+                      (Int+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 33 29 34+                           , srcInfoPoints = []+                           }+                         5+                         "5")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 35 29 39+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 35 29 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 35 29 39+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 1 30 35+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 1 30 15+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 1 30 15+                  , srcInfoPoints = []+                  }+                "answer_intpair"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 16 30 35+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 30 16 30 17 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 35+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 27+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 25+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 25+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 25+                              , srcInfoPoints = []+                              }+                            "intpair")))+                   (Lit+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 26 30 27+                        , srcInfoPoints = []+                        }+                      (Int+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 26 30 27+                           , srcInfoPoints = []+                           }+                         1+                         "1")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 28 30 35+                     , srcInfoPoints = []+                     }+                   (String+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 28 30 35+                        , srcInfoPoints = []+                        }+                      "hello"+                      "hello"))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 1 31 30+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 1 31 15+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 1 31 15+                  , srcInfoPoints = []+                  }+                "answer_intcons"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 16 31 30+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 31 16 31 17 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 30+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 27+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 25+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 25+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 25+                              , srcInfoPoints = []+                              }+                            "intcons")))+                   (Lit+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 26 31 27+                        , srcInfoPoints = []+                        }+                      (Int+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 26 31 27+                           , srcInfoPoints = []+                           }+                         7+                         "7")))+                (List+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 28 31 30+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta1.hs" 31 28 31 29+                         , SrcSpan "tests/examples/Vta1.hs" 31 29 31 30+                         ]+                     }+                   [])))+          Nothing+      , TypeFamDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 1 33 16+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Vta1.hs" 33 1 33 5+                , SrcSpan "tests/examples/Vta1.hs" 33 6 33 12+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 13 33 16+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 13 33 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 13 33 14+                     , srcInfoPoints = []+                     }+                   "F"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 15 33 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 15 33 16+                     , srcInfoPoints = []+                     }+                   "a")))+          Nothing+          Nothing+      , TypeInsDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 1 34 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Vta1.hs" 34 1 34 5+                , SrcSpan "tests/examples/Vta1.hs" 34 6 34 14+                , SrcSpan "tests/examples/Vta1.hs" 34 22 34 23+                ]+            }+          (TyApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 15 34 21+               , srcInfoPoints = []+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 15 34 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 15 34 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 15 34 16+                        , srcInfoPoints = []+                        }+                      "F")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 17 34 21+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 17 34 21+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 17 34 21+                        , srcInfoPoints = []+                        }+                      "Char"))))+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 24 34 28+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 24 34 28+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 24 34 28+                     , srcInfoPoints = []+                     }+                   "Bool")))+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 1 36 14+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 36 3 36 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 1 36 2+                , srcInfoPoints = []+                }+              "g"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 14+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 36 10 36 12 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 9+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 7+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 7+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 7+                           , srcInfoPoints = []+                           }+                         "F")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 8 36 9+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 8 36 9+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 13 36 14+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 13 36 14+                     , srcInfoPoints = []+                     }+                   "a")))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 1 37 16+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 1 37 16+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 1 37 2+                   , srcInfoPoints = []+                   }+                 "g")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 3 37 4+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 5 37 16+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 37 5 37 6 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 7 37 16+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 7 37 16+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 7 37 16+                            , srcInfoPoints = []+                            }+                          "undefined"))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 1 39 10+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 39 3 39 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 1 39 2+                , srcInfoPoints = []+                }+              "f"+          ]+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 6 39 10+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 6 39 10+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 6 39 10+                     , srcInfoPoints = []+                     }+                   "Char")))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 1 40 11+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 1 40 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 1 40 2+                  , srcInfoPoints = []+                  }+                "f"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 3 40 11+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 40 3 40 4 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 5 40 11+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 5 40 6+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 5 40 6+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 5 40 6+                           , srcInfoPoints = []+                           }+                         "g")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 7 40 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 7 40 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 7 40 11+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 1 42 23+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 1 42 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 1 42 7+                  , srcInfoPoints = []+                  }+                "answer"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 8 42 23+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 42 8 42 9 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 23+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 17+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 11+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 11+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 11+                              , srcInfoPoints = []+                              }+                            "g")))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 12 42 17+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 42 12 42 13 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 13 42 17+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 13 42 17+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 13 42 17+                                 , srcInfoPoints = []+                                 }+                               "Char")))))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 18 42 23+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 18 42 23+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 18 42 23+                           , srcInfoPoints = []+                           }+                         "False")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 1 44 54+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 44 9 44 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 1 44 8+                , srcInfoPoints = []+                }+              "mapSame"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 12 44 54+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Vta1.hs" 44 12 44 18+                   , SrcSpan "tests/examples/Vta1.hs" 44 20 44 21+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 19 44 20+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 19 44 20+                         , srcInfoPoints = []+                         }+                       "b")+                ])+             Nothing+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 22 44 54+                  , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 44 41 44 43 ]+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 22 44 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta1.hs" 44 22 44 23+                         , SrcSpan "tests/examples/Vta1.hs" 44 39 44 40+                         ]+                     }+                   (TyForall+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 23 44 39+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Vta1.hs" 44 23 44 29+                            , SrcSpan "tests/examples/Vta1.hs" 44 31 44 32+                            ]+                        }+                      (Just+                         [ UnkindedVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 30 44 31+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 30 44 31+                                  , srcInfoPoints = []+                                  }+                                "a")+                         ])+                      Nothing+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 33 44 39+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 44 35 44 37 ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 33 44 34+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 33 44 34+                                 , srcInfoPoints = []+                                 }+                               "a"))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 38 44 39+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 38 44 39+                                 , srcInfoPoints = []+                                 }+                               "a")))))+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 44 44 54+                     , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 44 48 44 50 ]+                     }+                   (TyList+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 44 44 47+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Vta1.hs" 44 44 44 45+                            , SrcSpan "tests/examples/Vta1.hs" 44 46 44 47+                            ]+                        }+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 45 44 46+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 45 44 46+                              , srcInfoPoints = []+                              }+                            "b")))+                   (TyList+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 51 44 54+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Vta1.hs" 44 51 44 52+                            , SrcSpan "tests/examples/Vta1.hs" 44 53 44 54+                            ]+                        }+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 52 44 53+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 52 44 53+                              , srcInfoPoints = []+                              }+                            "b"))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 1 46 52+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 1 45 18+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 1 45 8+                   , srcInfoPoints = []+                   }+                 "mapSame")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 9 45 10+                    , srcInfoPoints = []+                    }+              , PList+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 11 45 13+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Vta1.hs" 45 11 45 12+                        , SrcSpan "tests/examples/Vta1.hs" 45 12 45 13+                        ]+                    }+                  []+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 14 45 18+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 45 14 45 15 ]+                   }+                 (List+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 16 45 18+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Vta1.hs" 45 16 45 17+                          , SrcSpan "tests/examples/Vta1.hs" 45 17 45 18+                          ]+                      }+                    []))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 1 46 52+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 1 46 8+                   , srcInfoPoints = []+                   }+                 "mapSame")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 9 46 12+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 9 46 12+                       , srcInfoPoints = []+                       }+                     "fun")+              , PParen+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 13 46 19+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/Vta1.hs" 46 13 46 14+                        , SrcSpan "tests/examples/Vta1.hs" 46 18 46 19+                        ]+                    }+                  (PInfixApp+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 14 46 18+                       , srcInfoPoints = []+                       }+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 14 46 15+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 14 46 15+                             , srcInfoPoints = []+                             }+                           "x"))+                     (Special+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 15 46 16+                          , srcInfoPoints = []+                          }+                        (Cons+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 15 46 16+                             , srcInfoPoints = []+                             }))+                     (PVar+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 16 46 18+                          , srcInfoPoints = []+                          }+                        (Ident+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 16 46 18+                             , srcInfoPoints = []+                             }+                           "xs")))+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 20 46 52+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 46 20 46 21 ]+                   }+                 (InfixApp+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 52+                      , srcInfoPoints = []+                      }+                    (App+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 30+                         , srcInfoPoints = []+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 28+                            , srcInfoPoints = []+                            }+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 25+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 25+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 25+                                     , srcInfoPoints = []+                                     }+                                   "fun")))+                          (TypeApp+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 26 46 28+                               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 46 26 46 27 ]+                               }+                             (TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 27 46 28+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 27 46 28+                                     , srcInfoPoints = []+                                     }+                                   "b"))))+                       (Var+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 29 46 30+                            , srcInfoPoints = []+                            }+                          (UnQual+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 29 46 30+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 29 46 30+                                  , srcInfoPoints = []+                                  }+                                "x"))))+                    (QConOp+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 31 46 32+                         , srcInfoPoints = []+                         }+                       (Special+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 31 46 32+                            , srcInfoPoints = []+                            }+                          (Cons+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 31 46 32+                               , srcInfoPoints = []+                               })))+                    (Paren+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 33 46 52+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Vta1.hs" 46 33 46 34+                             , SrcSpan "tests/examples/Vta1.hs" 46 51 46 52+                             ]+                         }+                       (App+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 51+                            , srcInfoPoints = []+                            }+                          (App+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 48+                               , srcInfoPoints = []+                               }+                             (App+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 44+                                  , srcInfoPoints = []+                                  }+                                (Var+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 41+                                     , srcInfoPoints = []+                                     }+                                   (UnQual+                                      SrcSpanInfo+                                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 41+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Vta1.hs" 46 34 46 41+                                           , srcInfoPoints = []+                                           }+                                         "mapSame")))+                                (TypeApp+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 42 46 44+                                     , srcInfoPoints =+                                         [ SrcSpan "tests/examples/Vta1.hs" 46 42 46 43 ]+                                     }+                                   (TyVar+                                      SrcSpanInfo+                                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 43 46 44+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Vta1.hs" 46 43 46 44+                                           , srcInfoPoints = []+                                           }+                                         "b"))))+                             (Var+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 45 46 48+                                  , srcInfoPoints = []+                                  }+                                (UnQual+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 45 46 48+                                     , srcInfoPoints = []+                                     }+                                   (Ident+                                      SrcSpanInfo+                                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 45 46 48+                                        , srcInfoPoints = []+                                        }+                                      "fun"))))+                          (Var+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 49 46 51+                               , srcInfoPoints = []+                               }+                             (UnQual+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 49 46 51+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 49 46 51+                                     , srcInfoPoints = []+                                     }+                                   "xs")))))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 1 48 46+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 48 6 48 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 1 48 5+                , srcInfoPoints = []+                }+              "pair"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 9 48 46+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Vta1.hs" 48 9 48 15+                   , SrcSpan "tests/examples/Vta1.hs" 48 17 48 18+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 16 48 17+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 16 48 17+                         , srcInfoPoints = []+                         }+                       "a")+                ])+             Nothing+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 19 48 46+                  , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 48 20 48 22 ]+                  }+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 19 48 20+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 19 48 20+                        , srcInfoPoints = []+                        }+                      "a"))+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 23 48 46+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta1.hs" 48 23 48 24+                         , SrcSpan "tests/examples/Vta1.hs" 48 45 48 46+                         ]+                     }+                   (TyForall+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 24 48 45+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Vta1.hs" 48 24 48 30+                            , SrcSpan "tests/examples/Vta1.hs" 48 32 48 33+                            ]+                        }+                      (Just+                         [ UnkindedVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 31 48 32+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 31 48 32+                                  , srcInfoPoints = []+                                  }+                                "b")+                         ])+                      Nothing+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 34 48 45+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 48 36 48 38 ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 34 48 35+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 34 48 35+                                 , srcInfoPoints = []+                                 }+                               "b"))+                         (TyTuple+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 39 48 45+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/Vta1.hs" 48 39 48 40+                                  , SrcSpan "tests/examples/Vta1.hs" 48 41 48 42+                                  , SrcSpan "tests/examples/Vta1.hs" 48 44 48 45+                                  ]+                              }+                            Boxed+                            [ TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 40 48 41+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 40 48 41+                                     , srcInfoPoints = []+                                     }+                                   "a")+                            , TyVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 43 48 44+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 43 48 44+                                     , srcInfoPoints = []+                                     }+                                   "b")+                            ]))))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 1 49 18+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 1 49 18+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 1 49 5+                   , srcInfoPoints = []+                   }+                 "pair")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 6 49 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 6 49 7+                       , srcInfoPoints = []+                       }+                     "x")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 8 49 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 8 49 9+                       , srcInfoPoints = []+                       }+                     "y")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 10 49 18+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 49 10 49 11 ]+                   }+                 (Tuple+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 12 49 18+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Vta1.hs" 49 12 49 13+                          , SrcSpan "tests/examples/Vta1.hs" 49 14 49 15+                          , SrcSpan "tests/examples/Vta1.hs" 49 17 49 18+                          ]+                      }+                    Boxed+                    [ Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 13 49 14+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 13 49 14+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 13 49 14+                                , srcInfoPoints = []+                                }+                              "x"))+                    , Var+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 16 49 17+                          , srcInfoPoints = []+                          }+                        (UnQual+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 16 49 17+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 16 49 17+                                , srcInfoPoints = []+                                }+                              "y"))+                    ]))+              Nothing+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 1 51 27+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 1 51 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 1 51 2+                  , srcInfoPoints = []+                  }+                "b"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 3 51 27+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 51 3 51 4 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 27+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 22+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 16+                        , srcInfoPoints = []+                        }+                      (App+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 14+                           , srcInfoPoints = []+                           }+                         (Var+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 9+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 9+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 9+                                    , srcInfoPoints = []+                                    }+                                  "pair")))+                         (TypeApp+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 10 51 14+                              , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 51 10 51 11 ]+                              }+                            (TyCon+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 11 51 14+                                 , srcInfoPoints = []+                                 }+                               (UnQual+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 11 51 14+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 11 51 14+                                       , srcInfoPoints = []+                                       }+                                     "Int")))))+                      (Lit+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 15 51 16+                           , srcInfoPoints = []+                           }+                         (Int+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 15 51 16+                              , srcInfoPoints = []+                              }+                            3+                            "3")))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 17 51 22+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 51 17 51 18 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 18 51 22+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 18 51 22+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 18 51 22+                                 , srcInfoPoints = []+                                 }+                               "Bool")))))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 23 51 27+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 23 51 27+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 23 51 27+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 1 52 23+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 1 52 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 1 52 2+                  , srcInfoPoints = []+                  }+                "c"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 3 52 23+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 52 3 52 4 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 23+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 15+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 12+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 12+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 12+                              , srcInfoPoints = []+                              }+                            "mapSame")))+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 13 52 15+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 13 52 15+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 13 52 15+                              , srcInfoPoints = []+                              }+                            "id"))))+                (List+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 16 52 23+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta1.hs" 52 16 52 17+                         , SrcSpan "tests/examples/Vta1.hs" 52 18 52 19+                         , SrcSpan "tests/examples/Vta1.hs" 52 20 52 21+                         , SrcSpan "tests/examples/Vta1.hs" 52 22 52 23+                         ]+                     }+                   [ Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 17 52 18+                         , srcInfoPoints = []+                         }+                       (Int+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 17 52 18+                            , srcInfoPoints = []+                            }+                          1+                          "1")+                   , Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 19 52 20+                         , srcInfoPoints = []+                         }+                       (Int+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 19 52 20+                            , srcInfoPoints = []+                            }+                          2+                          "2")+                   , Lit+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 21 52 22+                         , srcInfoPoints = []+                         }+                       (Int+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 21 52 22+                            , srcInfoPoints = []+                            }+                          3+                          "3")+                   ])))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 1 53 22+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 1 53 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 1 53 2+                  , srcInfoPoints = []+                  }+                "d"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 3 53 22+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 53 3 53 4 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 22+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 17+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 11+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 9+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 9+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 9+                                 , srcInfoPoints = []+                                 }+                               "pair")))+                      (Lit+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 10 53 11+                           , srcInfoPoints = []+                           }+                         (Int+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 10 53 11+                              , srcInfoPoints = []+                              }+                            3+                            "3")))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 12 53 17+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 53 12 53 13 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 13 53 17+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 13 53 17+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 13 53 17+                                 , srcInfoPoints = []+                                 }+                               "Bool")))))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 18 53 22+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 18 53 22+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 18 53 22+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 1 55 52+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 9 55 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 1 55 8+                , srcInfoPoints = []+                }+              "pairnum"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 12 55 52+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Vta1.hs" 55 12 55 18+                   , SrcSpan "tests/examples/Vta1.hs" 55 20 55 21+                   ]+               }+             (Just+                [ UnkindedVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 19 55 20+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 19 55 20+                         , srcInfoPoints = []+                         }+                       "a")+                ])+             (Just+                (CxSingle+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30+                     , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]+                        }+                      (TyApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30+                              , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25+                                    , srcInfoPoints = []+                                    }+                                  "Num")))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27+                                 , srcInfoPoints = []+                                 }+                               "a"))))))+             (TyForall+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 31 55 52+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Vta1.hs" 55 31 55 37+                      , SrcSpan "tests/examples/Vta1.hs" 55 39 55 40+                      ]+                  }+                (Just+                   [ UnkindedVar+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 38 55 39+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 38 55 39+                            , srcInfoPoints = []+                            }+                          "b")+                   ])+                Nothing+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 41 55 52+                     , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 43 55 45 ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 41 55 42+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 41 55 42+                           , srcInfoPoints = []+                           }+                         "b"))+                   (TyTuple+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 46 55 52+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Vta1.hs" 55 46 55 47+                            , SrcSpan "tests/examples/Vta1.hs" 55 48 55 49+                            , SrcSpan "tests/examples/Vta1.hs" 55 51 55 52+                            ]+                        }+                      Boxed+                      [ TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 47 55 48+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 47 55 48+                               , srcInfoPoints = []+                               }+                             "a")+                      , TyVar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 50 55 51+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 50 55 51+                               , srcInfoPoints = []+                               }+                             "b")+                      ]))))+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 1 56 17+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 1 56 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 1 56 8+                  , srcInfoPoints = []+                  }+                "pairnum"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 9 56 17+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 56 9 56 10 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 11 56 17+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 11 56 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 11 56 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 11 56 15+                           , srcInfoPoints = []+                           }+                         "pair")))+                (Lit+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 16 56 17+                     , srcInfoPoints = []+                     }+                   (Int+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 16 56 17+                        , srcInfoPoints = []+                        }+                      3+                      "3"))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 1 58 73+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 1 58 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 1 58 2+                  , srcInfoPoints = []+                  }+                "e"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 3 58 73+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 58 3 58 4 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 5 58 73+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 5 58 68+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 5 58 62+                        , srcInfoPoints = []+                        }+                      (Paren+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 5 58 57+                           , srcInfoPoints =+                               [ SrcSpan "tests/examples/Vta1.hs" 58 5 58 6+                               , SrcSpan "tests/examples/Vta1.hs" 58 56 58 57+                               ]+                           }+                         (ExpTypeSig+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 6 58 56+                              , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 58 13 58 15 ]+                              }+                            (App+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 6 58 12+                                 , srcInfoPoints = []+                                 }+                               (Var+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 6 58 10+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 6 58 10+                                       , srcInfoPoints = []+                                       }+                                     (Ident+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta1.hs" 58 6 58 10+                                          , srcInfoPoints = []+                                          }+                                        "pair")))+                               (Lit+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 11 58 12+                                    , srcInfoPoints = []+                                    }+                                  (Int+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 11 58 12+                                       , srcInfoPoints = []+                                       }+                                     3+                                     "3")))+                            (TyForall+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 16 58 56+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/Vta1.hs" 58 16 58 22+                                     , SrcSpan "tests/examples/Vta1.hs" 58 24 58 25+                                     ]+                                 }+                               (Just+                                  [ UnkindedVar+                                      SrcSpanInfo+                                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 23 58 24+                                        , srcInfoPoints = []+                                        }+                                      (Ident+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Vta1.hs" 58 23 58 24+                                           , srcInfoPoints = []+                                           }+                                         "a")+                                  ])+                               (Just+                                  (CxSingle+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 26 58 34+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]+                                       }+                                     (TypeA+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta1.hs" 58 26 58 34+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]+                                          }+                                        (TyApp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta1.hs" 58 26 58 34+                                             , srcInfoPoints =+                                                 [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]+                                             }+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta1.hs" 58 26 58 34+                                                , srcInfoPoints =+                                                    [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan "tests/examples/Vta1.hs" 58 26 58 29+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Vta1.hs" 58 26 58 29+                                                      , srcInfoPoints = []+                                                      }+                                                    "Num")))+                                           (TyVar+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta1.hs" 58 30 58 31+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan "tests/examples/Vta1.hs" 58 30 58 31+                                                   , srcInfoPoints = []+                                                   }+                                                 "a"))))))+                               (TyForall+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 35 58 56+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/Vta1.hs" 58 35 58 41+                                        , SrcSpan "tests/examples/Vta1.hs" 58 43 58 44+                                        ]+                                    }+                                  (Just+                                     [ UnkindedVar+                                         SrcSpanInfo+                                           { srcInfoSpan =+                                               SrcSpan "tests/examples/Vta1.hs" 58 42 58 43+                                           , srcInfoPoints = []+                                           }+                                         (Ident+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Vta1.hs" 58 42 58 43+                                              , srcInfoPoints = []+                                              }+                                            "b")+                                     ])+                                  Nothing+                                  (TyFun+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 45 58 56+                                       , srcInfoPoints =+                                           [ SrcSpan "tests/examples/Vta1.hs" 58 47 58 49 ]+                                       }+                                     (TyVar+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta1.hs" 58 45 58 46+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta1.hs" 58 45 58 46+                                             , srcInfoPoints = []+                                             }+                                           "b"))+                                     (TyTuple+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta1.hs" 58 50 58 56+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/Vta1.hs" 58 50 58 51+                                              , SrcSpan "tests/examples/Vta1.hs" 58 52 58 53+                                              , SrcSpan "tests/examples/Vta1.hs" 58 55 58 56+                                              ]+                                          }+                                        Boxed+                                        [ TyVar+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Vta1.hs" 58 51 58 52+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/Vta1.hs" 58 51 58 52+                                                 , srcInfoPoints = []+                                                 }+                                               "a")+                                        , TyVar+                                            SrcSpanInfo+                                              { srcInfoSpan =+                                                  SrcSpan "tests/examples/Vta1.hs" 58 54 58 55+                                              , srcInfoPoints = []+                                              }+                                            (Ident+                                               SrcSpanInfo+                                                 { srcInfoSpan =+                                                     SrcSpan "tests/examples/Vta1.hs" 58 54 58 55+                                                 , srcInfoPoints = []+                                                 }+                                               "b")+                                        ]))))))+                      (TypeApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 58 58 62+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 58 58 58 59 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 59 58 62+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 59 58 62+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 59 58 62+                                    , srcInfoPoints = []+                                    }+                                  "Int")))))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 63 58 68+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 58 63 58 64 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 64 58 68+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 64 58 68+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 64 58 68+                                 , srcInfoPoints = []+                                 }+                               "Bool")))))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 69 58 73+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 69 58 73+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 69 58 73+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 1 59 28+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 1 59 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 1 59 2+                  , srcInfoPoints = []+                  }+                "h"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 3 59 28+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 59 3 59 4 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 28+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 23+                     , srcInfoPoints = []+                     }+                   (App+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 17+                        , srcInfoPoints = []+                        }+                      (Var+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 12+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 12+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 12+                                 , srcInfoPoints = []+                                 }+                               "pairnum")))+                      (TypeApp+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 13 59 17+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 59 13 59 14 ]+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 14 59 17+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 14 59 17+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 14 59 17+                                    , srcInfoPoints = []+                                    }+                                  "Int")))))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 18 59 23+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 59 18 59 19 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 19 59 23+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 19 59 23+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 19 59 23+                                 , srcInfoPoints = []+                                 }+                               "Bool")))))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 24 59 28+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 24 59 28+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 24 59 28+                           , srcInfoPoints = []+                           }+                         "True")))))+          Nothing+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 1 61 29+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 61 26 61 27 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 1 61 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 6 61 25+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 6 61 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 6 61 11+                     , srcInfoPoints = []+                     }+                   "First"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 12 61 25+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Vta1.hs" 61 12 61 13+                      , SrcSpan "tests/examples/Vta1.hs" 61 15 61 17+                      , SrcSpan "tests/examples/Vta1.hs" 61 24 61 25+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 13 61 14+                     , srcInfoPoints = []+                     }+                   "a")+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 18 61 24+                     , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 61 20 61 22 ]+                     }+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 18 61 19+                        , srcInfoPoints = []+                        })+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 23 61 24+                        , srcInfoPoints = []+                        }))))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 28 61 29+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 28 61 29+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 28 61 29+                      , srcInfoPoints = []+                      }+                    "F")+                 [])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 1 62 24+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 62 21 62 22 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 1 62 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 6 62 20+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 6 62 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 6 62 11+                     , srcInfoPoints = []+                     }+                   "Proxy"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 12 62 20+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Vta1.hs" 62 12 62 13+                      , SrcSpan "tests/examples/Vta1.hs" 62 15 62 17+                      , SrcSpan "tests/examples/Vta1.hs" 62 19 62 20+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 13 62 14+                     , srcInfoPoints = []+                     }+                   "a")+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 18 62 19+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 18 62 19+                        , srcInfoPoints = []+                        }+                      "k"))))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 23 62 24+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 23 62 24+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 23 62 24+                      , srcInfoPoints = []+                      }+                    "P")+                 [])+          ]+          []+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 1 63 34+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 63 31 63 32 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 1 63 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 6 63 30+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 6 63 11+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 6 63 11+                     , srcInfoPoints = []+                     }+                   "Three"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 12 63 30+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/Vta1.hs" 63 12 63 13+                      , SrcSpan "tests/examples/Vta1.hs" 63 15 63 17+                      , SrcSpan "tests/examples/Vta1.hs" 63 29 63 30+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 13 63 14+                     , srcInfoPoints = []+                     }+                   "a")+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 18 63 29+                     , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 63 20 63 22 ]+                     }+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 18 63 19+                        , srcInfoPoints = []+                        })+                   (TyFun+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 29+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 63 25 63 27 ]+                        }+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 24+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 24+                              , srcInfoPoints = []+                              }+                            "k"))+                      (TyStar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 28 63 29+                           , srcInfoPoints = []+                           })))))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 33 63 34+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 33 63 34+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 33 63 34+                      , srcInfoPoints = []+                      }+                    "T")+                 [])+          ]+          []+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 1 65 22+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 65 5 65 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 1 65 4+                , srcInfoPoints = []+                }+              "foo"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 22+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 65 16 65 18 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 15+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 13+                           , srcInfoPoints = []+                           }+                         "Proxy")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 14 65 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 14 65 15+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 19 65 22+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 19 65 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 19 65 22+                        , srcInfoPoints = []+                        }+                      "Int"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 1 66 10+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 1 66 10+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 1 66 4+                   , srcInfoPoints = []+                   }+                 "foo")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 5 66 6+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 7 66 10+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 66 7 66 8 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 9 66 10+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 9 66 10+                         , srcInfoPoints = []+                         }+                       0+                       "0")))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 1 68 24+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 68 7 68 9 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 1 68 6+                , srcInfoPoints = []+                }+              "first"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 24+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 68 18 68 20 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 17+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 15+                           , srcInfoPoints = []+                           }+                         "First")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 16 68 17+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 16 68 17+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 21 68 24+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 21 68 24+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 21 68 24+                        , srcInfoPoints = []+                        }+                      "Int"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 1 69 12+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 1 69 12+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 1 69 6+                   , srcInfoPoints = []+                   }+                 "first")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 7 69 8+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 9 69 12+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 69 9 69 10 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 11 69 12+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 11 69 12+                         , srcInfoPoints = []+                         }+                       0+                       "0")))+              Nothing+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 1 71 16+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 1 71 6+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 1 71 6+                  , srcInfoPoints = []+                  }+                "fTest"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 7 71 16+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 71 7 71 8 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 9 71 16+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 9 71 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 9 71 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 9 71 14+                           , srcInfoPoints = []+                           }+                         "first")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 15 71 16+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 15 71 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 15 71 16+                           , srcInfoPoints = []+                           }+                         "F")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 1 72 24+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 1 72 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 1 72 7+                  , srcInfoPoints = []+                  }+                "fMaybe"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 8 72 24+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 72 8 72 9 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 24+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 22+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 15+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 15+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 15+                              , srcInfoPoints = []+                              }+                            "first")))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 16 72 22+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 72 16 72 17 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 17 72 22+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 17 72 22+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 17 72 22+                                 , srcInfoPoints = []+                                 }+                               "Maybe")))))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 23 72 24+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 23 72 24+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 23 72 24+                           , srcInfoPoints = []+                           }+                         "F")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 1 74 13+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 1 74 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 1 74 5+                  , srcInfoPoints = []+                  }+                "test"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 6 74 13+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 74 6 74 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 8 74 13+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 8 74 11+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 8 74 11+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 8 74 11+                           , srcInfoPoints = []+                           }+                         "foo")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 12 74 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 12 74 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 12 74 13+                           , srcInfoPoints = []+                           }+                         "P")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 1 75 18+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 1 75 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 1 75 4+                  , srcInfoPoints = []+                  }+                "bar"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 5 75 18+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 75 5 75 6 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 18+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 16+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 10+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 10+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 10+                              , srcInfoPoints = []+                              }+                            "foo")))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 11 75 16+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 75 11 75 12 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 12 75 16+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 12 75 16+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 12 75 16+                                 , srcInfoPoints = []+                                 }+                               "Bool")))))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 17 75 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 17 75 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 17 75 18+                           , srcInfoPoints = []+                           }+                         "P")))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 1 77 22+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 77 5 77 7 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 1 77 4+                , srcInfoPoints = []+                }+              "too"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 22+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 77 16 77 18 ]+               }+             (TyApp+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 15+                  , srcInfoPoints = []+                  }+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 13+                           , srcInfoPoints = []+                           }+                         "Three")))+                (TyVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 14 77 15+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 14 77 15+                        , srcInfoPoints = []+                        }+                      "a")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 19 77 22+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 19 77 22+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 19 77 22+                        , srcInfoPoints = []+                        }+                      "Int"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 1 78 10+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 1 78 10+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 1 78 4+                   , srcInfoPoints = []+                   }+                 "too")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 5 78 6+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 7 78 10+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 78 7 78 8 ]+                   }+                 (Lit+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 9 78 10+                      , srcInfoPoints = []+                      }+                    (Int+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 9 78 10+                         , srcInfoPoints = []+                         }+                       3+                       "3")))+              Nothing+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 1 80 18+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 1 80 10+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 1 80 10+                  , srcInfoPoints = []+                  }+                "threeBase"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 11 80 18+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 80 11 80 12 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 13 80 18+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 13 80 16+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 13 80 16+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 13 80 16+                           , srcInfoPoints = []+                           }+                         "too")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 17 80 18+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 17 80 18+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 17 80 18+                           , srcInfoPoints = []+                           }+                         "T")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 1 81 24+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 1 81 8+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 1 81 8+                  , srcInfoPoints = []+                  }+                "threeOk"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 9 81 24+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 81 9 81 10 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 24+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 22+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 14+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 14+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 14+                              , srcInfoPoints = []+                              }+                            "too")))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 15 81 22+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 81 15 81 16 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 16 81 22+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 16 81 22+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 16 81 22+                                 , srcInfoPoints = []+                                 }+                               "Either")))))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 23 81 24+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 23 81 24+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 23 81 24+                           , srcInfoPoints = []+                           }+                         "T")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 1 83 20+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 1 83 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 1 83 5+                  , srcInfoPoints = []+                  }+                "blah"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 6 83 20+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 83 6 83 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 8 83 20+                  , srcInfoPoints = []+                  }+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 8 83 15+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 8 83 15+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 8 83 15+                           , srcInfoPoints = []+                           }+                         "Nothing")))+                (TypeApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 16 83 20+                     , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 83 16 83 17 ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 17 83 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 17 83 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 17 83 20+                              , srcInfoPoints = []+                              }+                            "Int"))))))+          Nothing+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 1 85 61+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 11 85 12 ]+            }+          (NewType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 1 85 8+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 9 85 10+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 9 85 10+                  , srcInfoPoints = []+                  }+                "N"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 13 85 61+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/Vta1.hs" 85 17 85 18+                    , SrcSpan "tests/examples/Vta1.hs" 85 60 85 61+                    ]+                }+              Nothing+              Nothing+              (RecDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 13 85 61+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/Vta1.hs" 85 17 85 18+                       , SrcSpan "tests/examples/Vta1.hs" 85 60 85 61+                       ]+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 13 85 16+                      , srcInfoPoints = []+                      }+                    "MkN")+                 [ FieldDecl+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 19 85 59+                       , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 25 85 27 ]+                       }+                     [ Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 19 85 24+                           , srcInfoPoints = []+                           }+                         "unMkN"+                     ]+                     (TyForall+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 28 85 59+                          , srcInfoPoints =+                              [ SrcSpan "tests/examples/Vta1.hs" 85 28 85 34+                              , SrcSpan "tests/examples/Vta1.hs" 85 36 85 37+                              ]+                          }+                        (Just+                           [ UnkindedVar+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 35 85 36+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 35 85 36+                                    , srcInfoPoints = []+                                    }+                                  "a")+                           ])+                        (Just+                           (CxSingle+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47+                                , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]+                                }+                              (TypeA+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]+                                   }+                                 (TyApp+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]+                                      }+                                    (TyCon+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Vta1.hs" 85 38 85 47+                                         , srcInfoPoints =+                                             [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Vta1.hs" 85 38 85 42+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/Vta1.hs" 85 38 85 42+                                               , srcInfoPoints = []+                                               }+                                             "Show")))+                                    (TyVar+                                       SrcSpanInfo+                                         { srcInfoSpan =+                                             SrcSpan "tests/examples/Vta1.hs" 85 43 85 44+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Vta1.hs" 85 43 85 44+                                            , srcInfoPoints = []+                                            }+                                          "a"))))))+                        (TyFun+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 48 85 59+                             , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 50 85 52 ]+                             }+                           (TyVar+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 48 85 49+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 48 85 49+                                   , srcInfoPoints = []+                                   }+                                 "a"))+                           (TyCon+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 53 85 59+                                , srcInfoPoints = []+                                }+                              (UnQual+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 53 85 59+                                   , srcInfoPoints = []+                                   }+                                 (Ident+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 53 85 59+                                      , srcInfoPoints = []+                                      }+                                    "String")))))+                 ])+          ]+          []+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 1 87 13+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 1 87 2+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 1 87 2+                  , srcInfoPoints = []+                  }+                "n"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 3 87 13+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 87 3 87 4 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 5 87 13+                  , srcInfoPoints = []+                  }+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 5 87 8+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 5 87 8+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 5 87 8+                           , srcInfoPoints = []+                           }+                         "MkN")))+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 9 87 13+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 9 87 13+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 9 87 13+                           , srcInfoPoints = []+                           }+                         "show")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 1 89 20+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 1 89 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 1 89 4+                  , srcInfoPoints = []+                  }+                "boo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 5 89 20+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 89 5 89 6 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 20+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 14+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 12+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 12+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 12+                              , srcInfoPoints = []+                              }+                            "unMkN")))+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 13 89 14+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 13 89 14+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 13 89 14+                              , srcInfoPoints = []+                              }+                            "n"))))+                (TypeApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 15 89 20+                     , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 89 15 89 16 ]+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 16 89 20+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 16 89 20+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 16 89 20+                              , srcInfoPoints = []+                              }+                            "Bool"))))))+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 1 91 47+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 91 6 91 8 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 1 91 5+                , srcInfoPoints = []+                }+              "boo2"+          ]+          (TyForall+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 9 91 47+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/Vta1.hs" 91 9 91 15+                   , SrcSpan "tests/examples/Vta1.hs" 91 30 91 31+                   ]+               }+             (Just+                [ KindedVar+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 16 91 29+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Vta1.hs" 91 16 91 17+                          , SrcSpan "tests/examples/Vta1.hs" 91 19 91 21+                          , SrcSpan "tests/examples/Vta1.hs" 91 28 91 29+                          ]+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 17 91 18+                         , srcInfoPoints = []+                         }+                       "a")+                    (TyFun+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 22 91 28+                         , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 91 24 91 26 ]+                         }+                       (TyStar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 22 91 23+                            , srcInfoPoints = []+                            })+                       (TyStar+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 27 91 28+                            , srcInfoPoints = []+                            }))+                ])+             Nothing+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 47+                  , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 91 40 91 42 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 39+                     , srcInfoPoints = []+                     }+                   (TyCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 37+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 37+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 37+                              , srcInfoPoints = []+                              }+                            "Proxy")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 38 91 39+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 38 91 39+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 43 91 47+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 43 91 47+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 43 91 47+                           , srcInfoPoints = []+                           }+                         "Bool")))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 1 92 15+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 1 92 15+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 1 92 5+                   , srcInfoPoints = []+                   }+                 "boo2")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 6 92 7+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 8 92 15+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 92 8 92 9 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 10 92 15+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 10 92 15+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 10 92 15+                            , srcInfoPoints = []+                            }+                          "False"))))+              Nothing+          ]+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 1 94 14+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 1 94 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 1 94 5+                  , srcInfoPoints = []+                  }+                "base"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 6 94 14+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 94 6 94 7 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 8 94 14+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 8 94 12+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 8 94 12+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 8 94 12+                           , srcInfoPoints = []+                           }+                         "boo2")))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 13 94 14+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 13 94 14+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 13 94 14+                           , srcInfoPoints = []+                           }+                         "P")))))+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 1 95 20+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 1 95 5+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 1 95 5+                  , srcInfoPoints = []+                  }+                "bar'"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 5 95 20+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 95 5 95 6 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 20+                  , srcInfoPoints = []+                  }+                (App+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 18+                     , srcInfoPoints = []+                     }+                   (Var+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 11+                        , srcInfoPoints = []+                        }+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 11+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 11+                              , srcInfoPoints = []+                              }+                            "boo2")))+                   (TypeApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 12 95 18+                        , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 95 12 95 13 ]+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 13 95 18+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 13 95 18+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 13 95 18+                                 , srcInfoPoints = []+                                 }+                               "Maybe")))))+                (Con+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 19 95 20+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 19 95 20+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 19 95 20+                           , srcInfoPoints = []+                           }+                         "P")))))+          Nothing+      ]+  , [ Comment+        False+        (SrcSpan "tests/examples/Vta1.hs" 4 1 4 40)+        " tests about visible type application"+    , Comment False (SrcSpan "tests/examples/Vta1.hs" 18 44 18 46) ""+    , Comment+        False+        (SrcSpan "tests/examples/Vta1.hs" 19 1 19 29)+        " (False, 7) :: (Bool, Int)"+    , Comment+        False+        (SrcSpan "tests/examples/Vta1.hs" 21 36 21 52)+        " \"3\" :: String"+    , Comment+        False+        (SrcSpan "tests/examples/Vta1.hs" 22 40 22 56)+        " \"5\" :: String"+    , Comment+        False+        (SrcSpan "tests/examples/Vta1.hs" 23 45 23 61)+        " \"7\" :: String"+    , Comment+        False+        (SrcSpan "tests/examples/Vta1.hs" 29 40 29 67)+        " (5, True) :: (Int, Bool)"+    , Comment+        False+        (SrcSpan "tests/examples/Vta1.hs" 30 36 30 68)+        " (1, \"hello\") :: (Int, String)"+    , Comment+        False+        (SrcSpan "tests/examples/Vta1.hs" 31 36 31 51)+        " [7] :: [Int]"+    , Comment+        False+        (SrcSpan "tests/examples/Vta1.hs" 62 25 62 77)+        " This expands to P (kind variable) (type variable)"+    , Comment+        False (SrcSpan "tests/examples/Vta1.hs" 75 19 75 33) " should work"+    , Comment+        False (SrcSpan "tests/examples/Vta1.hs" 95 21 95 35) " should work"+    ]+  )
+ tests/examples/Vta1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Vta1.hs.prettyprinter.golden view
@@ -0,0 +1,79 @@+{-# LANGUAGE TypeApplications, ScopedTypeVariables, PolyKinds,+  TypeFamilies, RankNTypes, FlexibleContexts #-}+module Vta1 where++quad :: a -> b -> c -> d -> (a, b, c, d)+quad = (,,,)+silly = quad @_ @Bool @Char @_ 5 True 'a' "Hello"+pairup_nosig x y = (x, y)++pairup_sig :: a -> b -> (a, b)+pairup_sig u w = (u, w)+answer_sig = pairup_sig @Bool @Int False 7+answer_read = show (read @Int "3")+answer_show = show @Integer (read "5")+answer_showread = show @Int (read @Int "7")+intcons a = (:) @Int a+intpair x y = pairup_sig @Int x y+answer_pairup = pairup_sig @Int 5 True+answer_intpair = intpair 1 "hello"+answer_intcons = intcons 7 []++type family F a++type instance F Char = Bool++g :: F a -> a+g _ = undefined++f :: Char+f = g True+answer = g @Char False++mapSame :: forall b . (forall a . a -> a) -> [b] -> [b]+mapSame _ [] = []+mapSame fun (x : xs) = fun @b x : (mapSame @b fun xs)++pair :: forall a . a -> (forall b . b -> (a, b))+pair x y = (x, y)+b = pair @Int 3 @Bool True+c = mapSame id [1, 2, 3]+d = pair 3 @Bool True++pairnum :: forall a . Num a => forall b . b -> (a, b)+pairnum = pair 3+e = (pair 3 :: forall a . Num a => forall b . b -> (a, b)) @Int+      @Bool+      True+h = pairnum @Int @Bool True++data First (a :: * -> *) = F++data Proxy (a :: k) = P++data Three (a :: * -> k -> *) = T++foo :: Proxy a -> Int+foo _ = 0++first :: First a -> Int+first _ = 0+fTest = first F+fMaybe = first @Maybe F+test = foo P+bar = foo @Bool P++too :: Three a -> Int+too _ = 3+threeBase = too T+threeOk = too @Either T+blah = Nothing @Int++newtype N = MkN{unMkN :: forall a . Show a => a -> String}+n = MkN show+boo = unMkN n @Bool++boo2 :: forall (a :: * -> *) . Proxy a -> Bool+boo2 _ = False+base = boo2 P+bar' = boo2 @Maybe P
+ tests/examples/Vta2.hs view
@@ -0,0 +1,14 @@+{-# LANGUAGE RankNTypes, TypeApplications #-}+++module Vta2 where++checkIf :: Bool -> (forall a. a -> a) -> (Bool, Int)+checkIf _ = if True+            then \f -> (f True, f 5)+            else \f -> (f False, f @Int 3)++checkCase :: Bool -> (forall a. a -> a) -> (Bool, Int)+checkCase _ = case True of+                True -> \f -> (f True, f 5)+                False -> \f -> (f False, f @Int 3)
+ tests/examples/Vta2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Vta2.hs.parser.golden view
@@ -0,0 +1,992 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 1 1 15 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/Vta2.hs" 1 1 1 1+            , SrcSpan "tests/examples/Vta2.hs" 4 1 4 1+            , SrcSpan "tests/examples/Vta2.hs" 4 1 4 1+            , SrcSpan "tests/examples/Vta2.hs" 6 1 6 1+            , SrcSpan "tests/examples/Vta2.hs" 7 1 7 1+            , SrcSpan "tests/examples/Vta2.hs" 11 1 11 1+            , SrcSpan "tests/examples/Vta2.hs" 12 1 12 1+            , SrcSpan "tests/examples/Vta2.hs" 15 1 15 1+            , SrcSpan "tests/examples/Vta2.hs" 15 1 15 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 4 1 4 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/Vta2.hs" 4 1 4 7+                  , SrcSpan "tests/examples/Vta2.hs" 4 13 4 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 4 8 4 12+                 , srcInfoPoints = []+                 }+               "Vta2")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 1 1 1 46+            , srcInfoPoints =+                [ SrcSpan "tests/examples/Vta2.hs" 1 1 1 13+                , SrcSpan "tests/examples/Vta2.hs" 1 24 1 25+                , SrcSpan "tests/examples/Vta2.hs" 1 43 1 46+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 1 14 1 24+                , srcInfoPoints = []+                }+              "RankNTypes"+          , Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 1 26 1 42+                , srcInfoPoints = []+                }+              "TypeApplications"+          ]+      ]+      []+      [ TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 1 6 53+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 6 9 6 11 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 1 6 8+                , srcInfoPoints = []+                }+              "checkIf"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 12 6 53+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 6 17 6 19 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 12 6 16+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 12 6 16+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 12 6 16+                        , srcInfoPoints = []+                        }+                      "Bool")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 20 6 53+                  , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 6 39 6 41 ]+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 20 6 38+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta2.hs" 6 20 6 21+                         , SrcSpan "tests/examples/Vta2.hs" 6 37 6 38+                         ]+                     }+                   (TyForall+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 21 6 37+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Vta2.hs" 6 21 6 27+                            , SrcSpan "tests/examples/Vta2.hs" 6 29 6 30+                            ]+                        }+                      (Just+                         [ UnkindedVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 28 6 29+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 28 6 29+                                  , srcInfoPoints = []+                                  }+                                "a")+                         ])+                      Nothing+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 31 6 37+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 6 33 6 35 ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 31 6 32+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 31 6 32+                                 , srcInfoPoints = []+                                 }+                               "a"))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 36 6 37+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 36 6 37+                                 , srcInfoPoints = []+                                 }+                               "a")))))+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 42 6 53+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta2.hs" 6 42 6 43+                         , SrcSpan "tests/examples/Vta2.hs" 6 47 6 48+                         , SrcSpan "tests/examples/Vta2.hs" 6 52 6 53+                         ]+                     }+                   Boxed+                   [ TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 43 6 47+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 43 6 47+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 43 6 47+                               , srcInfoPoints = []+                               }+                             "Bool"))+                   , TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 49 6 52+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 49 6 52+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 49 6 52+                               , srcInfoPoints = []+                               }+                             "Int"))+                   ])))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 1 9 43+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 1 9 43+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 1 7 8+                   , srcInfoPoints = []+                   }+                 "checkIf")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 9 7 10+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 11 9 43+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 7 11 7 12 ]+                   }+                 (If+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 13 9 43+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Vta2.hs" 7 13 7 15+                          , SrcSpan "tests/examples/Vta2.hs" 8 13 8 17+                          , SrcSpan "tests/examples/Vta2.hs" 9 13 9 17+                          ]+                      }+                    (Con+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 16 7 20+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 16 7 20+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 16 7 20+                               , srcInfoPoints = []+                               }+                             "True")))+                    (Lambda+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 18 8 37+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Vta2.hs" 8 18 8 19+                             , SrcSpan "tests/examples/Vta2.hs" 8 21 8 23+                             ]+                         }+                       [ PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 19 8 20+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 19 8 20+                                , srcInfoPoints = []+                                }+                              "f")+                       ]+                       (Tuple+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 24 8 37+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Vta2.hs" 8 24 8 25+                                , SrcSpan "tests/examples/Vta2.hs" 8 31 8 32+                                , SrcSpan "tests/examples/Vta2.hs" 8 36 8 37+                                ]+                            }+                          Boxed+                          [ App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 25 8 31+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 25 8 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 25 8 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 25 8 26+                                         , srcInfoPoints = []+                                         }+                                       "f")))+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 27 8 31+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 27 8 31+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 27 8 31+                                         , srcInfoPoints = []+                                         }+                                       "True")))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 33 8 36+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 33 8 34+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 33 8 34+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 33 8 34+                                         , srcInfoPoints = []+                                         }+                                       "f")))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 35 8 36+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 35 8 36+                                      , srcInfoPoints = []+                                      }+                                    5+                                    "5"))+                          ]))+                    (Lambda+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 18 9 43+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/Vta2.hs" 9 18 9 19+                             , SrcSpan "tests/examples/Vta2.hs" 9 21 9 23+                             ]+                         }+                       [ PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 19 9 20+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 19 9 20+                                , srcInfoPoints = []+                                }+                              "f")+                       ]+                       (Tuple+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 24 9 43+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/Vta2.hs" 9 24 9 25+                                , SrcSpan "tests/examples/Vta2.hs" 9 32 9 33+                                , SrcSpan "tests/examples/Vta2.hs" 9 42 9 43+                                ]+                            }+                          Boxed+                          [ App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 25 9 32+                                , srcInfoPoints = []+                                }+                              (Var+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 25 9 26+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 25 9 26+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 25 9 26+                                         , srcInfoPoints = []+                                         }+                                       "f")))+                              (Con+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 27 9 32+                                   , srcInfoPoints = []+                                   }+                                 (UnQual+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 27 9 32+                                      , srcInfoPoints = []+                                      }+                                    (Ident+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 27 9 32+                                         , srcInfoPoints = []+                                         }+                                       "False")))+                          , App+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 34 9 42+                                , srcInfoPoints = []+                                }+                              (App+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 34 9 40+                                   , srcInfoPoints = []+                                   }+                                 (Var+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 34 9 35+                                      , srcInfoPoints = []+                                      }+                                    (UnQual+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 34 9 35+                                         , srcInfoPoints = []+                                         }+                                       (Ident+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Vta2.hs" 9 34 9 35+                                            , srcInfoPoints = []+                                            }+                                          "f")))+                                 (TypeApp+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 36 9 40+                                      , srcInfoPoints =+                                          [ SrcSpan "tests/examples/Vta2.hs" 9 36 9 37 ]+                                      }+                                    (TyCon+                                       SrcSpanInfo+                                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 37 9 40+                                         , srcInfoPoints = []+                                         }+                                       (UnQual+                                          SrcSpanInfo+                                            { srcInfoSpan =+                                                SrcSpan "tests/examples/Vta2.hs" 9 37 9 40+                                            , srcInfoPoints = []+                                            }+                                          (Ident+                                             SrcSpanInfo+                                               { srcInfoSpan =+                                                   SrcSpan "tests/examples/Vta2.hs" 9 37 9 40+                                               , srcInfoPoints = []+                                               }+                                             "Int")))))+                              (Lit+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 41 9 42+                                   , srcInfoPoints = []+                                   }+                                 (Int+                                    SrcSpanInfo+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 41 9 42+                                      , srcInfoPoints = []+                                      }+                                    3+                                    "3"))+                          ]))))+              Nothing+          ]+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 1 11 55+            , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 11 11 11 13 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 1 11 10+                , srcInfoPoints = []+                }+              "checkCase"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 14 11 55+               , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 11 19 11 21 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 14 11 18+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 14 11 18+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 14 11 18+                        , srcInfoPoints = []+                        }+                      "Bool")))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 22 11 55+                  , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 11 41 11 43 ]+                  }+                (TyParen+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 22 11 40+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta2.hs" 11 22 11 23+                         , SrcSpan "tests/examples/Vta2.hs" 11 39 11 40+                         ]+                     }+                   (TyForall+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 23 11 39+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/Vta2.hs" 11 23 11 29+                            , SrcSpan "tests/examples/Vta2.hs" 11 31 11 32+                            ]+                        }+                      (Just+                         [ UnkindedVar+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 30 11 31+                               , srcInfoPoints = []+                               }+                             (Ident+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 30 11 31+                                  , srcInfoPoints = []+                                  }+                                "a")+                         ])+                      Nothing+                      (TyFun+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 33 11 39+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 11 35 11 37 ]+                           }+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 33 11 34+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 33 11 34+                                 , srcInfoPoints = []+                                 }+                               "a"))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 38 11 39+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 38 11 39+                                 , srcInfoPoints = []+                                 }+                               "a")))))+                (TyTuple+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 44 11 55+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/Vta2.hs" 11 44 11 45+                         , SrcSpan "tests/examples/Vta2.hs" 11 49 11 50+                         , SrcSpan "tests/examples/Vta2.hs" 11 54 11 55+                         ]+                     }+                   Boxed+                   [ TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 45 11 49+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 45 11 49+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 45 11 49+                               , srcInfoPoints = []+                               }+                             "Bool"))+                   , TyCon+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 51 11 54+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 51 11 54+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 51 11 54+                               , srcInfoPoints = []+                               }+                             "Int"))+                   ])))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 1 14 51+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 1 14 51+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 1 12 10+                   , srcInfoPoints = []+                   }+                 "checkCase")+              [ PWildCard+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 11 12 12+                    , srcInfoPoints = []+                    }+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 13 14 51+                   , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 12 13 12 14 ]+                   }+                 (Case+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 15 14 51+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/Vta2.hs" 12 15 12 19+                          , SrcSpan "tests/examples/Vta2.hs" 12 25 12 27+                          , SrcSpan "tests/examples/Vta2.hs" 13 17 13 17+                          , SrcSpan "tests/examples/Vta2.hs" 14 17 14 17+                          , SrcSpan "tests/examples/Vta2.hs" 15 1 15 0+                          ]+                      }+                    (Con+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 20 12 24+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 20 12 24+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 20 12 24+                               , srcInfoPoints = []+                               }+                             "True")))+                    [ Alt+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 17 13 44+                          , srcInfoPoints = []+                          }+                        (PApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 17 13 21+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 17 13 21+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 17 13 21+                                   , srcInfoPoints = []+                                   }+                                 "True"))+                           [])+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 22 13 44+                             , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 13 22 13 24 ]+                             }+                           (Lambda+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 25 13 44+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Vta2.hs" 13 25 13 26+                                    , SrcSpan "tests/examples/Vta2.hs" 13 28 13 30+                                    ]+                                }+                              [ PVar+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 26 13 27+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 26 13 27+                                       , srcInfoPoints = []+                                       }+                                     "f")+                              ]+                              (Tuple+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 31 13 44+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Vta2.hs" 13 31 13 32+                                       , SrcSpan "tests/examples/Vta2.hs" 13 38 13 39+                                       , SrcSpan "tests/examples/Vta2.hs" 13 43 13 44+                                       ]+                                   }+                                 Boxed+                                 [ App+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 32 13 38+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta2.hs" 13 32 13 33+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta2.hs" 13 32 13 33+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta2.hs" 13 32 13 33+                                                , srcInfoPoints = []+                                                }+                                              "f")))+                                     (Con+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta2.hs" 13 34 13 38+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta2.hs" 13 34 13 38+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta2.hs" 13 34 13 38+                                                , srcInfoPoints = []+                                                }+                                              "True")))+                                 , App+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 40 13 43+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta2.hs" 13 40 13 41+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta2.hs" 13 40 13 41+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta2.hs" 13 40 13 41+                                                , srcInfoPoints = []+                                                }+                                              "f")))+                                     (Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta2.hs" 13 42 13 43+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta2.hs" 13 42 13 43+                                             , srcInfoPoints = []+                                             }+                                           5+                                           "5"))+                                 ])))+                        Nothing+                    , Alt+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 17 14 51+                          , srcInfoPoints = []+                          }+                        (PApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 17 14 22+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 17 14 22+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 17 14 22+                                   , srcInfoPoints = []+                                   }+                                 "False"))+                           [])+                        (UnGuardedRhs+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 23 14 51+                             , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 14 23 14 25 ]+                             }+                           (Lambda+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 26 14 51+                                , srcInfoPoints =+                                    [ SrcSpan "tests/examples/Vta2.hs" 14 26 14 27+                                    , SrcSpan "tests/examples/Vta2.hs" 14 29 14 31+                                    ]+                                }+                              [ PVar+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 27 14 28+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 27 14 28+                                       , srcInfoPoints = []+                                       }+                                     "f")+                              ]+                              (Tuple+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 32 14 51+                                   , srcInfoPoints =+                                       [ SrcSpan "tests/examples/Vta2.hs" 14 32 14 33+                                       , SrcSpan "tests/examples/Vta2.hs" 14 40 14 41+                                       , SrcSpan "tests/examples/Vta2.hs" 14 50 14 51+                                       ]+                                   }+                                 Boxed+                                 [ App+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 33 14 40+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta2.hs" 14 33 14 34+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta2.hs" 14 33 14 34+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta2.hs" 14 33 14 34+                                                , srcInfoPoints = []+                                                }+                                              "f")))+                                     (Con+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta2.hs" 14 35 14 40+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta2.hs" 14 35 14 40+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta2.hs" 14 35 14 40+                                                , srcInfoPoints = []+                                                }+                                              "False")))+                                 , App+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 42 14 50+                                       , srcInfoPoints = []+                                       }+                                     (App+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta2.hs" 14 42 14 48+                                          , srcInfoPoints = []+                                          }+                                        (Var+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta2.hs" 14 42 14 43+                                             , srcInfoPoints = []+                                             }+                                           (UnQual+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta2.hs" 14 42 14 43+                                                , srcInfoPoints = []+                                                }+                                              (Ident+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan "tests/examples/Vta2.hs" 14 42 14 43+                                                   , srcInfoPoints = []+                                                   }+                                                 "f")))+                                        (TypeApp+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta2.hs" 14 44 14 48+                                             , srcInfoPoints =+                                                 [ SrcSpan "tests/examples/Vta2.hs" 14 44 14 45 ]+                                             }+                                           (TyCon+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/Vta2.hs" 14 45 14 48+                                                , srcInfoPoints = []+                                                }+                                              (UnQual+                                                 SrcSpanInfo+                                                   { srcInfoSpan =+                                                       SrcSpan "tests/examples/Vta2.hs" 14 45 14 48+                                                   , srcInfoPoints = []+                                                   }+                                                 (Ident+                                                    SrcSpanInfo+                                                      { srcInfoSpan =+                                                          SrcSpan+                                                            "tests/examples/Vta2.hs" 14 45 14 48+                                                      , srcInfoPoints = []+                                                      }+                                                    "Int")))))+                                     (Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/Vta2.hs" 14 49 14 50+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/Vta2.hs" 14 49 14 50+                                             , srcInfoPoints = []+                                             }+                                           3+                                           "3"))+                                 ])))+                        Nothing+                    ]))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/Vta2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Vta2.hs.prettyprinter.golden view
@@ -0,0 +1,12 @@+{-# LANGUAGE RankNTypes, TypeApplications #-}+module Vta2 where++checkIf :: Bool -> (forall a . a -> a) -> (Bool, Int)+checkIf _+  = if True then \ f -> (f True, f 5) else \ f -> (f False, f @Int 3)++checkCase :: Bool -> (forall a . a -> a) -> (Bool, Int)+checkCase _+  = case True of+        True -> \ f -> (f True, f 5)+        False -> \ f -> (f False, f @Int 3)
+ tests/examples/WhereBlock.hs view
@@ -0,0 +1,3 @@+hash ptr len = f len+ where f h = return h+       f p = (p `advancePtr` 1)
+ tests/examples/WhereBlock.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/WhereBlock.hs.parser.golden view
@@ -0,0 +1,299 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 1 4 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/WhereBlock.hs" 1 1 1 1+            , SrcSpan "tests/examples/WhereBlock.hs" 1 1 1 1+            , SrcSpan "tests/examples/WhereBlock.hs" 1 1 1 1+            , SrcSpan "tests/examples/WhereBlock.hs" 4 1 4 1+            , SrcSpan "tests/examples/WhereBlock.hs" 4 1 4 1+            ]+        }+      Nothing+      []+      []+      [ FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 1 3 32+            , srcInfoPoints =+                [ SrcSpan "tests/examples/WhereBlock.hs" 2 2 2 7 ]+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 1 3 32+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/WhereBlock.hs" 2 2 2 7 ]+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 1 1 5+                   , srcInfoPoints = []+                   }+                 "hash")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 6 1 9+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 6 1 9+                       , srcInfoPoints = []+                       }+                     "ptr")+              , PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 10 1 13+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 10 1 13+                       , srcInfoPoints = []+                       }+                     "len")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 14 1 21+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/WhereBlock.hs" 1 14 1 15 ]+                   }+                 (App+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 16 1 21+                      , srcInfoPoints = []+                      }+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 16 1 17+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 16 1 17+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 16 1 17+                               , srcInfoPoints = []+                               }+                             "f")))+                    (Var+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 18 1 21+                         , srcInfoPoints = []+                         }+                       (UnQual+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 18 1 21+                            , srcInfoPoints = []+                            }+                          (Ident+                             SrcSpanInfo+                               { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 18 1 21+                               , srcInfoPoints = []+                               }+                             "len")))))+              (Just+                 (BDecls+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 8 3 32+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/WhereBlock.hs" 2 8 2 8+                          , SrcSpan "tests/examples/WhereBlock.hs" 3 8 3 8+                          , SrcSpan "tests/examples/WhereBlock.hs" 4 1 4 0+                          ]+                      }+                    [ FunBind+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 8 3 32+                          , srcInfoPoints = []+                          }+                        [ Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 8 2 22+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 8 2 9+                                 , srcInfoPoints = []+                                 }+                               "f")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 10 2 11+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/WhereBlock.hs" 2 10 2 11+                                     , srcInfoPoints = []+                                     }+                                   "h")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 12 2 22+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/WhereBlock.hs" 2 12 2 13 ]+                                 }+                               (App+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 14 2 22+                                    , srcInfoPoints = []+                                    }+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/WhereBlock.hs" 2 14 2 20+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/WhereBlock.hs" 2 14 2 20+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/WhereBlock.hs" 2 14 2 20+                                             , srcInfoPoints = []+                                             }+                                           "return")))+                                  (Var+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/WhereBlock.hs" 2 21 2 22+                                       , srcInfoPoints = []+                                       }+                                     (UnQual+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/WhereBlock.hs" 2 21 2 22+                                          , srcInfoPoints = []+                                          }+                                        (Ident+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/WhereBlock.hs" 2 21 2 22+                                             , srcInfoPoints = []+                                             }+                                           "h")))))+                            Nothing+                        , Match+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 8 3 32+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 8 3 9+                                 , srcInfoPoints = []+                                 }+                               "f")+                            [ PVar+                                SrcSpanInfo+                                  { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 10 3 11+                                  , srcInfoPoints = []+                                  }+                                (Ident+                                   SrcSpanInfo+                                     { srcInfoSpan =+                                         SrcSpan "tests/examples/WhereBlock.hs" 3 10 3 11+                                     , srcInfoPoints = []+                                     }+                                   "p")+                            ]+                            (UnGuardedRhs+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 12 3 32+                                 , srcInfoPoints =+                                     [ SrcSpan "tests/examples/WhereBlock.hs" 3 12 3 13 ]+                                 }+                               (Paren+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 14 3 32+                                    , srcInfoPoints =+                                        [ SrcSpan "tests/examples/WhereBlock.hs" 3 14 3 15+                                        , SrcSpan "tests/examples/WhereBlock.hs" 3 31 3 32+                                        ]+                                    }+                                  (InfixApp+                                     SrcSpanInfo+                                       { srcInfoSpan =+                                           SrcSpan "tests/examples/WhereBlock.hs" 3 15 3 31+                                       , srcInfoPoints = []+                                       }+                                     (Var+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/WhereBlock.hs" 3 15 3 16+                                          , srcInfoPoints = []+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/WhereBlock.hs" 3 15 3 16+                                             , srcInfoPoints = []+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/WhereBlock.hs" 3 15 3 16+                                                , srcInfoPoints = []+                                                }+                                              "p")))+                                     (QVarOp+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/WhereBlock.hs" 3 17 3 29+                                          , srcInfoPoints =+                                              [ SrcSpan "tests/examples/WhereBlock.hs" 3 17 3 18+                                              , SrcSpan "tests/examples/WhereBlock.hs" 3 18 3 28+                                              , SrcSpan "tests/examples/WhereBlock.hs" 3 28 3 29+                                              ]+                                          }+                                        (UnQual+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/WhereBlock.hs" 3 17 3 29+                                             , srcInfoPoints =+                                                 [ SrcSpan "tests/examples/WhereBlock.hs" 3 17 3 18+                                                 , SrcSpan "tests/examples/WhereBlock.hs" 3 18 3 28+                                                 , SrcSpan "tests/examples/WhereBlock.hs" 3 28 3 29+                                                 ]+                                             }+                                           (Ident+                                              SrcSpanInfo+                                                { srcInfoSpan =+                                                    SrcSpan "tests/examples/WhereBlock.hs" 3 18 3 28+                                                , srcInfoPoints = []+                                                }+                                              "advancePtr")))+                                     (Lit+                                        SrcSpanInfo+                                          { srcInfoSpan =+                                              SrcSpan "tests/examples/WhereBlock.hs" 3 30 3 31+                                          , srcInfoPoints = []+                                          }+                                        (Int+                                           SrcSpanInfo+                                             { srcInfoSpan =+                                                 SrcSpan "tests/examples/WhereBlock.hs" 3 30 3 31+                                             , srcInfoPoints = []+                                             }+                                           1+                                           "1")))))+                            Nothing+                        ]+                    ]))+          ]+      ]+  , []+  )
+ tests/examples/WhereBlock.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/WhereBlock.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+hash ptr len = f len+  where f h = return h+        f p = (p `advancePtr` 1)
+ tests/examples/WildcardTyFam.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}++type family Foo a where+  Foo _ = Int
+ tests/examples/WildcardTyFam.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/WildcardTyFam.hs.parser.golden view
@@ -0,0 +1,122 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 1 1 5 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/WildcardTyFam.hs" 1 1 1 1+            , SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 1+            , SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 1+            , SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 1+            , SrcSpan "tests/examples/WildcardTyFam.hs" 5 1 5 1+            , SrcSpan "tests/examples/WildcardTyFam.hs" 5 1 5 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 1 1 1 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/WildcardTyFam.hs" 1 1 1 13+                , SrcSpan "tests/examples/WildcardTyFam.hs" 1 27 1 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 1 14 1 26+                , srcInfoPoints = []+                }+              "TypeFamilies"+          ]+      ]+      []+      [ ClosedTypeFamDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 5+                , SrcSpan "tests/examples/WildcardTyFam.hs" 3 6 3 12+                , SrcSpan "tests/examples/WildcardTyFam.hs" 3 19 3 24+                ]+            }+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 13 3 18+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 13 3 16+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 13 3 16+                     , srcInfoPoints = []+                     }+                   "Foo"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 17 3 18+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 17 3 18+                     , srcInfoPoints = []+                     }+                   "a")))+          Nothing+          Nothing+          [ TypeEqn+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 14+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/WildcardTyFam.hs" 4 9 4 10 ]+                }+              (TyApp+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 8+                   , srcInfoPoints = []+                   }+                 (TyCon+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 6+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 6+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 6+                            , srcInfoPoints = []+                            }+                          "Foo")))+                 (TyWildCard+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 7 4 8+                      , srcInfoPoints = []+                      }+                    Nothing))+              (TyCon+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 11 4 14+                   , srcInfoPoints = []+                   }+                 (UnQual+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 11 4 14+                      , srcInfoPoints = []+                      }+                    (Ident+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 11 4 14+                         , srcInfoPoints = []+                         }+                       "Int")))+          ]+      ]+  , []+  )
+ tests/examples/WildcardTyFam.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/WildcardTyFam.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}++type family Foo a where+        Foo _ = Int
+ tests/examples/brackets.hs view
@@ -0,0 +1,44 @@+{-# LANGUAGE Arrows          #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE UnicodeSyntax   #-}++-- See Trac #10162 and #11743 for details++module ShouldCompile where++import Control.Arrow+import Language.Haskell.TH++handle :: ArrowPlus a => a (b,s) c -> a (b,(String,s)) c -> a (b,s) c+handle f h = proc (b,s) -> (f -< (b,s)) <+> (h -< (b,("FAIL",s)))++f :: ArrowPlus a => a (Int,Int) String+f = proc (x,y) ->+  ⦇handle+    (returnA -< show y)+    (\s -> returnA -< s ++ show x)+  ⦈++g :: ArrowPlus a => a (Int,Int) String+g = proc (x,y) ->+  ⦇handle+    (\msg -> returnA -< msg ++ show y)+    (\s msg -> returnA -< s ++ show x)+  ⦈ ("hello " ++ show x)++h :: ArrowPlus a => a (Int,Int) Int+h = proc (x,y) ->+  (+    (\z -> returnA -< x + z)+    <+>+    (\z -> returnA -< y + z)+  ) (x*y)+++matches :: PatQ -> ExpQ+matches pat = ⟦\x ->+  case x of+    $pat -> True+    _    -> False+  ⟧+
+ tests/examples/brackets.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/brackets.hs" 17 3) "Parse error: \10631"
+ tests/examples/brackets.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+  (SrcLoc "tests/examples/brackets.hs" 17 3) "Parse error: \10631"
+ tests/examples/brackets.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/brackets.hs" 17 3) "Parse error: \10631"
+ tests/examples/brackets.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/brackets.hs" 17 3) "Parse error: \10631"
+ tests/examples/completesig01.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -Wall #-}+module Simple where++pattern Foo :: ()+pattern Foo = ()++a :: () -> ()+a Foo = ()++data A = B | C | D++{-# COMPLETE Foo #-}+{-# COMPLETE B,C #-}+{-# COMPLETE B #-}++b :: A -> A+b B = B+b C = C++{-# COMPLETE Foo :: () #-}+
+ tests/examples/completesig01.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/completesig01.hs.parser.golden view
@@ -0,0 +1,681 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 1 1 24 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/completesig01.hs" 1 1 1 1+            , SrcSpan "tests/examples/completesig01.hs" 2 1 2 1+            , SrcSpan "tests/examples/completesig01.hs" 3 1 3 1+            , SrcSpan "tests/examples/completesig01.hs" 4 1 4 1+            , SrcSpan "tests/examples/completesig01.hs" 4 1 4 1+            , SrcSpan "tests/examples/completesig01.hs" 6 1 6 1+            , SrcSpan "tests/examples/completesig01.hs" 7 1 7 1+            , SrcSpan "tests/examples/completesig01.hs" 9 1 9 1+            , SrcSpan "tests/examples/completesig01.hs" 10 1 10 1+            , SrcSpan "tests/examples/completesig01.hs" 12 1 12 1+            , SrcSpan "tests/examples/completesig01.hs" 14 1 14 1+            , SrcSpan "tests/examples/completesig01.hs" 15 1 15 1+            , SrcSpan "tests/examples/completesig01.hs" 16 1 16 1+            , SrcSpan "tests/examples/completesig01.hs" 18 1 18 1+            , SrcSpan "tests/examples/completesig01.hs" 19 1 19 1+            , SrcSpan "tests/examples/completesig01.hs" 20 1 20 1+            , SrcSpan "tests/examples/completesig01.hs" 22 1 22 1+            , SrcSpan "tests/examples/completesig01.hs" 24 1 24 1+            , SrcSpan "tests/examples/completesig01.hs" 24 1 24 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 4 1 4 20+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/completesig01.hs" 4 1 4 7+                  , SrcSpan "tests/examples/completesig01.hs" 4 15 4 20+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 4 8 4 14+                 , srcInfoPoints = []+                 }+               "Simple")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 1 1 1 13+                , SrcSpan "tests/examples/completesig01.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 2 1 2 35+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 2 1 2 13+                , SrcSpan "tests/examples/completesig01.hs" 2 32 2 35+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 2 14 2 31+                , srcInfoPoints = []+                }+              "NoImplicitPrelude"+          ]+      , OptionsPragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 3 1 3 26+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 3 1 3 23+                , SrcSpan "tests/examples/completesig01.hs" 3 23 3 26+                ]+            }+          (Just GHC)+          "-Wall "+      ]+      []+      [ PatSynSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 1 6 18+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 6 1 6 8+                , SrcSpan "tests/examples/completesig01.hs" 6 13 6 15+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 9 6 12+                , srcInfoPoints = []+                }+              "Foo"+          ]+          Nothing+          Nothing+          Nothing+          Nothing+          (TyCon+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 16 6 18+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/completesig01.hs" 6 16 6 17+                   , SrcSpan "tests/examples/completesig01.hs" 6 17 6 18+                   ]+               }+             (Special+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 16 6 18+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/completesig01.hs" 6 16 6 17+                      , SrcSpan "tests/examples/completesig01.hs" 6 17 6 18+                      ]+                  }+                (UnitCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 16 6 18+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/completesig01.hs" 6 16 6 17+                         , SrcSpan "tests/examples/completesig01.hs" 6 17 6 18+                         ]+                     })))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 1 7 17+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 7 1 7 8+                , SrcSpan "tests/examples/completesig01.hs" 7 13 7 14+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 9 7 12+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 9 7 12+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 9 7 12+                     , srcInfoPoints = []+                     }+                   "Foo"))+             [])+          (PApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 15 7 17+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/completesig01.hs" 7 15 7 16+                   , SrcSpan "tests/examples/completesig01.hs" 7 16 7 17+                   ]+               }+             (Special+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 15 7 17+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/completesig01.hs" 7 15 7 16+                      , SrcSpan "tests/examples/completesig01.hs" 7 16 7 17+                      ]+                  }+                (UnitCon+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 15 7 17+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/completesig01.hs" 7 15 7 16+                         , SrcSpan "tests/examples/completesig01.hs" 7 16 7 17+                         ]+                     }))+             [])+          ImplicitBidirectional+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 1 9 14+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 9 3 9 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 1 9 2+                , srcInfoPoints = []+                }+              "a"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 6 9 14+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/completesig01.hs" 9 9 9 11 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 6 9 8+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/completesig01.hs" 9 6 9 7+                      , SrcSpan "tests/examples/completesig01.hs" 9 7 9 8+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 6 9 8+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/completesig01.hs" 9 6 9 7+                         , SrcSpan "tests/examples/completesig01.hs" 9 7 9 8+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 6 9 8+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/completesig01.hs" 9 6 9 7+                            , SrcSpan "tests/examples/completesig01.hs" 9 7 9 8+                            ]+                        })))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 12 9 14+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/completesig01.hs" 9 12 9 13+                      , SrcSpan "tests/examples/completesig01.hs" 9 13 9 14+                      ]+                  }+                (Special+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 12 9 14+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/completesig01.hs" 9 12 9 13+                         , SrcSpan "tests/examples/completesig01.hs" 9 13 9 14+                         ]+                     }+                   (UnitCon+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 12 9 14+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/completesig01.hs" 9 12 9 13+                            , SrcSpan "tests/examples/completesig01.hs" 9 13 9 14+                            ]+                        }))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/completesig01.hs" 10 1 10 11+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/completesig01.hs" 10 1 10 11+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 10 1 10 2+                   , srcInfoPoints = []+                   }+                 "a")+              [ PApp+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 10 3 10 6+                    , srcInfoPoints = []+                    }+                  (UnQual+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 10 3 10 6+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 10 3 10 6+                          , srcInfoPoints = []+                          }+                        "Foo"))+                  []+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/completesig01.hs" 10 7 10 11+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/completesig01.hs" 10 7 10 8 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/completesig01.hs" 10 9 10 11+                      , srcInfoPoints =+                          [ SrcSpan "tests/examples/completesig01.hs" 10 9 10 10+                          , SrcSpan "tests/examples/completesig01.hs" 10 10 10 11+                          ]+                      }+                    (Special+                       SrcSpanInfo+                         { srcInfoSpan =+                             SrcSpan "tests/examples/completesig01.hs" 10 9 10 11+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/completesig01.hs" 10 9 10 10+                             , SrcSpan "tests/examples/completesig01.hs" 10 10 10 11+                             ]+                         }+                       (UnitCon+                          SrcSpanInfo+                            { srcInfoSpan =+                                SrcSpan "tests/examples/completesig01.hs" 10 9 10 11+                            , srcInfoPoints =+                                [ SrcSpan "tests/examples/completesig01.hs" 10 9 10 10+                                , SrcSpan "tests/examples/completesig01.hs" 10 10 10 11+                                ]+                            }))))+              Nothing+          ]+      , DataDecl+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/completesig01.hs" 12 1 12 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 12 8 12 9+                , SrcSpan "tests/examples/completesig01.hs" 12 12 12 13+                , SrcSpan "tests/examples/completesig01.hs" 12 16 12 17+                ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 12 1 12 5+               , srcInfoPoints = []+               })+          Nothing+          (DHead+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 12 6 12 7+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 12 6 12 7+                  , srcInfoPoints = []+                  }+                "A"))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/completesig01.hs" 12 10 12 11+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/completesig01.hs" 12 10 12 11+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/completesig01.hs" 12 10 12 11+                      , srcInfoPoints = []+                      }+                    "B")+                 [])+          , QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/completesig01.hs" 12 14 12 15+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/completesig01.hs" 12 14 12 15+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/completesig01.hs" 12 14 12 15+                      , srcInfoPoints = []+                      }+                    "C")+                 [])+          , QualConDecl+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/completesig01.hs" 12 18 12 19+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan =+                       SrcSpan "tests/examples/completesig01.hs" 12 18 12 19+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan =+                          SrcSpan "tests/examples/completesig01.hs" 12 18 12 19+                      , srcInfoPoints = []+                      }+                    "D")+                 [])+          ]+          []+      , CompletePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/completesig01.hs" 14 1 14 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 14 1 14 13+                , SrcSpan "tests/examples/completesig01.hs" 14 18 14 21+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/completesig01.hs" 14 14 14 17+                , srcInfoPoints = []+                }+              "Foo"+          ]+          Nothing+      , CompletePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/completesig01.hs" 15 1 15 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 15 1 15 13+                , SrcSpan "tests/examples/completesig01.hs" 15 15 15 16+                , SrcSpan "tests/examples/completesig01.hs" 15 18 15 21+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/completesig01.hs" 15 14 15 15+                , srcInfoPoints = []+                }+              "B"+          , Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/completesig01.hs" 15 16 15 17+                , srcInfoPoints = []+                }+              "C"+          ]+          Nothing+      , CompletePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/completesig01.hs" 16 1 16 19+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 16 1 16 13+                , SrcSpan "tests/examples/completesig01.hs" 16 16 16 19+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/completesig01.hs" 16 14 16 15+                , srcInfoPoints = []+                }+              "B"+          ]+          Nothing+      , TypeSig+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/completesig01.hs" 18 1 18 12+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 18 3 18 5 ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 18 1 18 2+                , srcInfoPoints = []+                }+              "b"+          ]+          (TyFun+             SrcSpanInfo+               { srcInfoSpan =+                   SrcSpan "tests/examples/completesig01.hs" 18 6 18 12+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/completesig01.hs" 18 8 18 10 ]+               }+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 18 6 18 7+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 18 6 18 7+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 18 6 18 7+                        , srcInfoPoints = []+                        }+                      "A")))+             (TyCon+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/completesig01.hs" 18 11 18 12+                  , srcInfoPoints = []+                  }+                (UnQual+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/completesig01.hs" 18 11 18 12+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan =+                            SrcSpan "tests/examples/completesig01.hs" 18 11 18 12+                        , srcInfoPoints = []+                        }+                      "A"))))+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 1 20 8+            , srcInfoPoints = []+            }+          [ Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 1 19 8+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 1 19 2+                   , srcInfoPoints = []+                   }+                 "b")+              [ PApp+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 3 19 4+                    , srcInfoPoints = []+                    }+                  (UnQual+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 3 19 4+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 3 19 4+                          , srcInfoPoints = []+                          }+                        "B"))+                  []+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 5 19 8+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/completesig01.hs" 19 5 19 6 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 7 19 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 7 19 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 7 19 8+                            , srcInfoPoints = []+                            }+                          "B"))))+              Nothing+          , Match+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 1 20 8+                , srcInfoPoints = []+                }+              (Ident+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 1 20 2+                   , srcInfoPoints = []+                   }+                 "b")+              [ PApp+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 3 20 4+                    , srcInfoPoints = []+                    }+                  (UnQual+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 3 20 4+                       , srcInfoPoints = []+                       }+                     (Ident+                        SrcSpanInfo+                          { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 3 20 4+                          , srcInfoPoints = []+                          }+                        "C"))+                  []+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 5 20 8+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/completesig01.hs" 20 5 20 6 ]+                   }+                 (Con+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 7 20 8+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 7 20 8+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 7 20 8+                            , srcInfoPoints = []+                            }+                          "C"))))+              Nothing+          ]+      , CompletePragma+          SrcSpanInfo+            { srcInfoSpan =+                SrcSpan "tests/examples/completesig01.hs" 22 1 22 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/completesig01.hs" 22 1 22 13+                , SrcSpan "tests/examples/completesig01.hs" 22 18 22 20+                , SrcSpan "tests/examples/completesig01.hs" 22 24 22 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan =+                    SrcSpan "tests/examples/completesig01.hs" 22 14 22 17+                , srcInfoPoints = []+                }+              "Foo"+          ]+          (Just+             (Special+                SrcSpanInfo+                  { srcInfoSpan =+                      SrcSpan "tests/examples/completesig01.hs" 22 21 22 23+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/completesig01.hs" 22 21 22 22+                      , SrcSpan "tests/examples/completesig01.hs" 22 22 22 23+                      ]+                  }+                (UnitCon+                   SrcSpanInfo+                     { srcInfoSpan =+                         SrcSpan "tests/examples/completesig01.hs" 22 21 22 23+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/completesig01.hs" 22 21 22 22+                         , SrcSpan "tests/examples/completesig01.hs" 22 22 22 23+                         ]+                     })))+      ]+  , []+  )
+ tests/examples/completesig01.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/completesig01.hs.prettyprinter.golden view
@@ -0,0 +1,27 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -Wall #-}+module Simple where++pattern Foo :: ()++pattern Foo = ()++a :: () -> ()+a Foo = ()++data A = B+       | C+       | D++{-# COMPLETE Foo #-}++{-# COMPLETE B, C #-}++{-# COMPLETE B #-}++b :: A -> A+b B = B+b C = C++{-# COMPLETE Foo :: () #-}
+ tests/examples/t403.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DataKinds #-}+module T403 where++pattern (:&&:) :: () => forall k. ((k :+ 1) ~ n) => a -> HoHeList k a -> HoHeList n a+pattern (:&&:) x rest <- (matchNext -> Right (x, Refl, rest))
+ tests/examples/t403.hs.exactprinter.golden view
@@ -0,0 +1,10 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DataKinds #-}+module T403 where++pattern (:&&:) :: () =>           ((k :+ 1) ~ n) => a -> HoHeList k a -> HoHeList n a+pattern ((:&&:))xrest <- (matchNext -> Right (x, Refl, rest))+
+ tests/examples/t403.hs.parser.golden view
@@ -0,0 +1,520 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 1 1 10 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/t403.hs" 1 1 1 1+            , SrcSpan "tests/examples/t403.hs" 2 1 2 1+            , SrcSpan "tests/examples/t403.hs" 3 1 3 1+            , SrcSpan "tests/examples/t403.hs" 4 1 4 1+            , SrcSpan "tests/examples/t403.hs" 5 1 5 1+            , SrcSpan "tests/examples/t403.hs" 6 1 6 1+            , SrcSpan "tests/examples/t403.hs" 6 1 6 1+            , SrcSpan "tests/examples/t403.hs" 8 1 8 1+            , SrcSpan "tests/examples/t403.hs" 9 1 9 1+            , SrcSpan "tests/examples/t403.hs" 10 1 10 1+            , SrcSpan "tests/examples/t403.hs" 10 1 10 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 6 1 6 18+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/t403.hs" 6 1 6 7+                  , SrcSpan "tests/examples/t403.hs" 6 13 6 18+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 6 8 6 12+                 , srcInfoPoints = []+                 }+               "T403")+            Nothing+            Nothing))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 1 1 1 33+            , srcInfoPoints =+                [ SrcSpan "tests/examples/t403.hs" 1 1 1 13+                , SrcSpan "tests/examples/t403.hs" 1 30 1 33+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 1 14 1 29+                , srcInfoPoints = []+                }+              "PatternSynonyms"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 2 1 2 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/t403.hs" 2 1 2 13+                , SrcSpan "tests/examples/t403.hs" 2 25 2 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 2 14 2 24+                , srcInfoPoints = []+                }+              "RankNTypes"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 3 1 3 30+            , srcInfoPoints =+                [ SrcSpan "tests/examples/t403.hs" 3 1 3 13+                , SrcSpan "tests/examples/t403.hs" 3 27 3 30+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 3 14 3 26+                , srcInfoPoints = []+                }+              "ViewPatterns"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 4 1 4 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/t403.hs" 4 1 4 13+                , SrcSpan "tests/examples/t403.hs" 4 28 4 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 4 14 4 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 5 1 5 27+            , srcInfoPoints =+                [ SrcSpan "tests/examples/t403.hs" 5 1 5 13+                , SrcSpan "tests/examples/t403.hs" 5 24 5 27+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 5 14 5 23+                , srcInfoPoints = []+                }+              "DataKinds"+          ]+      ]+      []+      [ PatSynSig+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 1 8 86+            , srcInfoPoints =+                [ SrcSpan "tests/examples/t403.hs" 8 1 8 8+                , SrcSpan "tests/examples/t403.hs" 8 16 8 18+                ]+            }+          [ Symbol+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 9 8 15+                , srcInfoPoints =+                    [ SrcSpan "tests/examples/t403.hs" 8 9 8 10+                    , SrcSpan "tests/examples/t403.hs" 8 10 8 14+                    , SrcSpan "tests/examples/t403.hs" 8 14 8 15+                    ]+                }+              ":&&:"+          ]+          Nothing+          (Just+             (CxEmpty+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 19 8 24+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/t403.hs" 8 19 8 20+                      , SrcSpan "tests/examples/t403.hs" 8 20 8 21+                      , SrcSpan "tests/examples/t403.hs" 8 22 8 24+                      ]+                  }))+          (Just+             [ UnkindedVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 32 8 33+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 32 8 33+                      , srcInfoPoints = []+                      }+                    "k")+             ])+          (Just+             (CxSingle+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 35 8 52+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/t403.hs" 8 35 8 36+                      , SrcSpan "tests/examples/t403.hs" 8 48 8 49+                      , SrcSpan "tests/examples/t403.hs" 8 50 8 52+                      ]+                  }+                (ParenA+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 35 8 52+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/t403.hs" 8 35 8 36+                         , SrcSpan "tests/examples/t403.hs" 8 48 8 49+                         , SrcSpan "tests/examples/t403.hs" 8 50 8 52+                         ]+                     }+                   (TypeA+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 48+                        , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 45 8 46 ]+                        }+                      (TyEquals+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 48+                           , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 45 8 46 ]+                           }+                         (TyParen+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 44+                              , srcInfoPoints =+                                  [ SrcSpan "tests/examples/t403.hs" 8 36 8 37+                                  , SrcSpan "tests/examples/t403.hs" 8 43 8 44+                                  ]+                              }+                            (TyInfix+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 43+                                 , srcInfoPoints = []+                                 }+                               (TyVar+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 38+                                    , srcInfoPoints = []+                                    }+                                  (Ident+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 38+                                       , srcInfoPoints = []+                                       }+                                     "k"))+                               (UnpromotedName+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41+                                    , srcInfoPoints = []+                                    }+                                  (UnQual+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41+                                       , srcInfoPoints = []+                                       }+                                     (Symbol+                                        SrcSpanInfo+                                          { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41+                                          , srcInfoPoints = []+                                          }+                                        ":+")))+                               (TyPromoted+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 42 8 43+                                    , srcInfoPoints = []+                                    }+                                  (PromotedInteger+                                     SrcSpanInfo+                                       { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 42 8 43+                                       , srcInfoPoints = []+                                       }+                                     1+                                     "1"))))+                         (TyVar+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 47 8 48+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 47 8 48+                                 , srcInfoPoints = []+                                 }+                               "n")))))))+          (TyFun+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 86+               , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 55 8 57 ]+               }+             (TyVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 54+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 54+                     , srcInfoPoints = []+                     }+                   "a"))+             (TyFun+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 86+                  , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 71 8 73 ]+                  }+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 70+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 68+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 66+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 66+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 66+                                 , srcInfoPoints = []+                                 }+                               "HoHeList")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 67 8 68+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 67 8 68+                              , srcInfoPoints = []+                              }+                            "k")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 69 8 70+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 69 8 70+                           , srcInfoPoints = []+                           }+                         "a")))+                (TyApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 86+                     , srcInfoPoints = []+                     }+                   (TyApp+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 84+                        , srcInfoPoints = []+                        }+                      (TyCon+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 82+                           , srcInfoPoints = []+                           }+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 82+                              , srcInfoPoints = []+                              }+                            (Ident+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 82+                                 , srcInfoPoints = []+                                 }+                               "HoHeList")))+                      (TyVar+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 83 8 84+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 83 8 84+                              , srcInfoPoints = []+                              }+                            "n")))+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 85 8 86+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 85 8 86+                           , srcInfoPoints = []+                           }+                         "a")))))+      , PatSyn+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 1 9 62+            , srcInfoPoints =+                [ SrcSpan "tests/examples/t403.hs" 9 1 9 8+                , SrcSpan "tests/examples/t403.hs" 9 23 9 25+                ]+            }+          (PApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 9 9 22+               , srcInfoPoints = []+               }+             (UnQual+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 9 9 15+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/t403.hs" 9 9 9 10+                      , SrcSpan "tests/examples/t403.hs" 9 10 9 14+                      , SrcSpan "tests/examples/t403.hs" 9 14 9 15+                      ]+                  }+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 9 9 15+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/t403.hs" 9 9 9 10+                         , SrcSpan "tests/examples/t403.hs" 9 10 9 14+                         , SrcSpan "tests/examples/t403.hs" 9 14 9 15+                         ]+                     }+                   ":&&:"))+             [ PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 16 9 17+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 16 9 17+                      , srcInfoPoints = []+                      }+                    "x")+             , PVar+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 18 9 22+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 18 9 22+                      , srcInfoPoints = []+                      }+                    "rest")+             ])+          (PParen+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 26 9 62+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/t403.hs" 9 26 9 27+                   , SrcSpan "tests/examples/t403.hs" 9 61 9 62+                   ]+               }+             (PViewPat+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 61+                  , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 9 37 9 39 ]+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 36+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 36+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 36+                           , srcInfoPoints = []+                           }+                         "matchNext")))+                (PApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 40 9 61+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 40 9 45+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 40 9 45+                           , srcInfoPoints = []+                           }+                         "Right"))+                   [ PTuple+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 46 9 61+                         , srcInfoPoints =+                             [ SrcSpan "tests/examples/t403.hs" 9 46 9 47+                             , SrcSpan "tests/examples/t403.hs" 9 48 9 49+                             , SrcSpan "tests/examples/t403.hs" 9 54 9 55+                             , SrcSpan "tests/examples/t403.hs" 9 60 9 61+                             ]+                         }+                       Boxed+                       [ PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 47 9 48+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 47 9 48+                                , srcInfoPoints = []+                                }+                              "x")+                       , PApp+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 50 9 54+                             , srcInfoPoints = []+                             }+                           (UnQual+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 50 9 54+                                , srcInfoPoints = []+                                }+                              (Ident+                                 SrcSpanInfo+                                   { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 50 9 54+                                   , srcInfoPoints = []+                                   }+                                 "Refl"))+                           []+                       , PVar+                           SrcSpanInfo+                             { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 56 9 60+                             , srcInfoPoints = []+                             }+                           (Ident+                              SrcSpanInfo+                                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 56 9 60+                                , srcInfoPoints = []+                                }+                              "rest")+                       ]+                   ])))+          Unidirectional+      ]+  , []+  )
+ tests/examples/t403.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/t403.hs.prettyprinter.golden view
@@ -0,0 +1,11 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DataKinds #-}+module T403 where++pattern (:&&:) :: () => forall k . ((k :+ 1) ~ n) =>+        a -> HoHeList k a -> HoHeList n a++pattern (:&&:) x rest <- (matchNext -> Right (x, Refl, rest))
+ tests/examples/t412.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE TypeInType #-}++module Typeintype+       ( App ) where++import Data.Kind++data App (f :: k -> *)
+ tests/examples/t412.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/t412.hs.parser.golden view
@@ -0,0 +1,166 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/t412.hs" 1 1 1 1+            , SrcSpan "tests/examples/t412.hs" 3 1 3 1+            , SrcSpan "tests/examples/t412.hs" 3 1 3 1+            , SrcSpan "tests/examples/t412.hs" 6 1 6 1+            , SrcSpan "tests/examples/t412.hs" 8 1 8 1+            , SrcSpan "tests/examples/t412.hs" 9 1 9 1+            , SrcSpan "tests/examples/t412.hs" 9 1 9 1+            ]+        }+      (Just+         (ModuleHead+            SrcSpanInfo+              { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 3 1 4 21+              , srcInfoPoints =+                  [ SrcSpan "tests/examples/t412.hs" 3 1 3 7+                  , SrcSpan "tests/examples/t412.hs" 4 16 4 21+                  ]+              }+            (ModuleName+               SrcSpanInfo+                 { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 3 8 3 18+                 , srcInfoPoints = []+                 }+               "Typeintype")+            Nothing+            (Just+               (ExportSpecList+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 8 4 15+                    , srcInfoPoints =+                        [ SrcSpan "tests/examples/t412.hs" 4 8 4 9+                        , SrcSpan "tests/examples/t412.hs" 4 14 4 15+                        ]+                    }+                  [ EAbs+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13+                        , srcInfoPoints = []+                        }+                      (NoNamespace+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13+                           , srcInfoPoints = []+                           })+                      (UnQual+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13+                           , srcInfoPoints = []+                           }+                         (Ident+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13+                              , srcInfoPoints = []+                              }+                            "App"))+                  ]))))+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 1 1 1 28+            , srcInfoPoints =+                [ SrcSpan "tests/examples/t412.hs" 1 1 1 13+                , SrcSpan "tests/examples/t412.hs" 1 25 1 28+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 1 14 1 24+                , srcInfoPoints = []+                }+              "TypeInType"+          ]+      ]+      [ ImportDecl+          { importAnn =+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 6 1 6 17+                , srcInfoPoints = [ SrcSpan "tests/examples/t412.hs" 6 1 6 7 ]+                }+          , importModule =+              ModuleName+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 6 8 6 17+                  , srcInfoPoints = []+                  }+                "Data.Kind"+          , importQualified = False+          , importSrc = False+          , importSafe = False+          , importPkg = Nothing+          , importAs = Nothing+          , importSpecs = Nothing+          }+      ]+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 1 8 5+            , srcInfoPoints = []+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 1 8 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 6 8 23+               , srcInfoPoints = []+               }+             (DHead+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 6 8 9+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 6 8 9+                     , srcInfoPoints = []+                     }+                   "App"))+             (KindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 10 8 23+                  , srcInfoPoints =+                      [ SrcSpan "tests/examples/t412.hs" 8 10 8 11+                      , SrcSpan "tests/examples/t412.hs" 8 13 8 15+                      , SrcSpan "tests/examples/t412.hs" 8 22 8 23+                      ]+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 11 8 12+                     , srcInfoPoints = []+                     }+                   "f")+                (TyFun+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 22+                     , srcInfoPoints = [ SrcSpan "tests/examples/t412.hs" 8 18 8 20 ]+                     }+                   (TyVar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 17+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 17+                           , srcInfoPoints = []+                           }+                         "k"))+                   (TyStar+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 21 8 22+                        , srcInfoPoints = []+                        }))))+          []+          []+      ]+  , []+  )
+ tests/examples/t412.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/t412.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeInType #-}+module Typeintype (App) where+import Data.Kind++data App (f :: k -> *)